web-dev-qa-db-ja.com

LinuxでSharePoint Online(Office 365)をマウントする

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

そして、ウェブ検索に基づいた他のさまざまなパスは役に立ちません。

これでうまくいくでしょうか?より良い解決策はありますか?

9
proximous

WebDAVでOffice365 Sharepoint(または「OneDrive for Business」)に接続するには、既存の認証Cookieが必要です。 WebDAVクライアントにユーザー名とパスワードでログインすることはできません。 Windowsでは、SharePointサイトをInternet Explorerのイントラネットサイトのリストに追加し、Internet Explorerでログインして[ログインしたままにする]をクリックすると、Windowsエクスプローラーでネットワークドライブをマッピングできます。

Linuxでこれを行う唯一の方法は、Konquerorを使用することです。これには、WebブラウザーとWebDAV対応のファイルブラウザーの両方が含まれているためです。 KonquerorブラウザでSharepointサイトにログインすると、KonquerorファイルブラウザがそのCookieを使用してWebDAVに認証できます。

7
Clint

これは、現時点で1.50であるrcloneの最新バージョンで動作します。

https://rclone.org/downloads/

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構成を使用してマウントします。詳細については、こちらをご覧ください。

https://rclone.org/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をサポートする必要があるとは考えていなかったので、私のアドバイスは、彼らの製品から離れて、箱から出して動作する製品を使用することでした。

1
Vincent Gerris

Konquerorが動作することを確認します。しかし、私が言われた限り、spfilezillaはOneDrive for businessとSharePointに匿名トークンで接続します。ここを参照してください: https://github.com/suoko/spfilezilla それが本当なら、davfsに匿名トークンを作成させることができます

0
suoko

それは確かに可能ですが、私にはまだスムーズな解決策がありません。 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秒かかります。原因を調査しており、詳細がわかったらここに投稿します...

0
Ivo Blöchliger