Office 365サブスクリプションに含まれるSharePoint Onlineの使用を開始しました。 Windowsユーザーは、SharePointからWindowsコンピューターに共有ドキュメントを自動的に同期するソフトウェアをインストールできます。 Linux(Ubuntu)ユーザーが同じことをできるようにするにはどうすればよいですか?
WebDavはうまくいくと思いましたが、私の試みは常に失敗しました。具体的には、Nautilusファイルの参照を介してサーバーを追加しようとして失敗しました。
Server: mycompany.sharepoint.com
Port: 443
Tppe: Secure WebDav (HTTPS)
Folder: /
User name: [email protected]
Password: ********
HTTPエラー:FORBIDDEN
ユーザー名を次のように変更してみました。
mycompany\first.last
フォルダを次のように変更してみました:
/Shared%20Documents
そして、ウェブ検索に基づいた他のさまざまなパスは役に立ちません。
これでうまくいくでしょうか?より良い解決策はありますか?
WebDAVでOffice365 Sharepoint(または「OneDrive for Business」)に接続するには、既存の認証Cookieが必要です。 WebDAVクライアントにユーザー名とパスワードでログインすることはできません。 Windowsでは、SharePointサイトをInternet Explorerのイントラネットサイトのリストに追加し、Internet Explorerでログインして[ログインしたままにする]をクリックすると、Windowsエクスプローラーでネットワークドライブをマッピングできます。
Linuxでこれを行う唯一の方法は、Konquerorを使用することです。これには、WebブラウザーとWebDAV対応のファイルブラウザーの両方が含まれているためです。 KonquerorブラウザでSharepointサイトにログインすると、KonquerorファイルブラウザがそのCookieを使用してWebDAVに認証できます。
これは、現時点で1.50であるrcloneの最新バージョンで動作します。
OneDrive for Businessは基本的にSharePointであり、ここで説明するようにrcloneセットアップで機能します。
https://rclone.org/OneDrive/ (制限を確認してください!)
したがって、基本的にはターミナルで実行します。
rclone config
次にnと入力し、名前を入力してオプション22を選択します(これは変更される可能性がありますが、OneDriveオプションはここにあります)。次に、Enterキーを2回押して(クライアントIDとシークレットは不要)、Nを押すと、高度な構成がありません。次に、autoconfigにyを入力します(ブラウザーが開き、ログインしていると便利です。リダイレクトされ、ブラウザーに成功メッセージが表示されます。
ターミナルに戻り、OneDriveに1を選択します。ドライブが表示されたら、0を選択します。次のメッセージで、yを選択して確認し、次のyも選択します。
これで構成が設定されたので、次のように共有をマウントできます。
rclone --vfs-cache-mode writes mount OneDrive: ~/OneDrive
ここで、OneDriveは作成した共有の名前で、〜/ OneDriveはそれをマウントするホームディレクトリ内のフォルダーです。
マウントで問題が発生した場合は、次のコマンドでアンマウントできます。
fusermount -uz ~/OneDrive/
共有フォルダがないことに気づいたかもしれません。現在、ビジネスバージョンのrcloneではサポートされていません。これを回避するには、WebDAV構成を使用してマウントします。詳細については、こちらをご覧ください。
ベンダーの場合、Sharepointを選択すると、構成は次のようになります。
[onedriveShared]
type = webdav
url = https://domain.sharepoint.com/personal/firstname_lastname_domain_com/Documents
vendor = sharepoint
user = [email protected]
pass = encryptes_pass
ここでの問題は、すべての共有に対してこれを追加する必要があることです。残念ながら、マイクロソフトはLinuxをサポートする必要があるとは考えていなかったので、私のアドバイスは、彼らの製品から離れて、箱から出して動作する製品を使用することでした。
Konquerorが動作することを確認します。しかし、私が言われた限り、spfilezillaはOneDrive for businessとSharePointに匿名トークンで接続します。ここを参照してください: https://github.com/suoko/spfilezilla それが本当なら、davfsに匿名トークンを作成させることができます
それは確かに可能ですが、私にはまだスムーズな解決策がありません。 SharePointドライブをdavfs2でマウントしています。これを機能させるには、ブラウザーで認証する必要があります(SharePointサイトにアクセスするだけです)。次に、「rtFa」および「FedAuth」という名前のCookieを抽出する必要があります。次のように、ファイル/etc/davfs2/davfs2.confの最後に貼り付ける必要があります。
add_header Cookie rtFa=<your cookie here>;FedAuth=<your other cookie here>;
次の行も追加します。
use_locks 0
共有をマウントするには、共有のSharePoint-Webinterface-URLのURLを使用し、末尾にdefault.aspxを付けません。/etc/fstabにも入力したので、簡単にマウントできます。
https://myinstitution.sharepoint.com/sites/path/to/my/share/ /path/to/my/mountpoint davfs user,rw,noauto 0 0
Davfs2.confファイルにCookieを取得するには、Chromeとcookies.txt拡張子を使用して、2回のクリックでそれらをファイルcookies.txtに保存できるようにします。次に、小さなこのファイルを解析してdavfs2.confファイルに行を追加するRubyスクリプト。現在、/ etc/davfs2/davfs2.confからホームディレクトリのファイルへのsympolicリンクがありますが、よりクリーンな方法は、ユーザーごとの設定ファイル(davfs2はafaikを許可します)理想からは程遠いですが、今のところそれで十分です。
#!/usr/bin/Ruby
davfsFile = "/path/to/the/file/davfs2.conf" # Replace this
cookiesFile = "/path/to/the/file/cookies.txt" # Replace this
cookies = File.read(cookiesFile).split("\n").map{|c| c.split("\t")}
`rm #{cookiesFile}`
cookies.select!{|c| c[5]=="rtFa" || c[5]=="FedAuth"}
cookieline = "add_header Cookie #{cookies[0][5]}=#{cookies[0][6]};#{cookies[1][5]}=#{cookies[1][6]};"
davfsconf = File.read(davfsFile).split("\n")
davfsconf[-1]=cookieline
File.write(davfsFile, davfsconf.join("\n"))
ファイル転送は高速で使用可能です。ディレクトリアクセスはほとんど使用できません。ls*/blaのように、30エントリのディレクトリで40秒かかります。原因を調査しており、詳細がわかったらここに投稿します...