Ubuntu20.04のノートPCをクライアントとして、Debian10に設定された共有にアクセスしてファイルの読み書きをする3つの方法について書いています。GNOME Nautilus ファイルマネージャを使います。
ここではクライアント側の設定と接続操作のみの解説です。サーバー側の設定については概略だけです。
(1)WebDAVはサーバー側もユーザーがGUIで設定できる共有ですが、場所が限られます。Ubuntuをサーバーにするともう少し自由がきくようです。
(2)sftpはsshによるファイル共有です。sshでログイン(CUI)できる様にできれば、ファイルマネージャ(GUI)でファイル操作ができます。
(3)smbはWindowsファイル共有です。nautilus-shareパッケージを使うようですが、Ubuntuにははじめからインストールされていたと思います。周りにWindowsが多いということからでしょう。相手がlinuxだとサーバー側にSambaを入れて設定が必要です。
メインのPCはDebian10の自作機なのですが、現在は一時的にサブのUbuntu20.04のノートPCを多用しています。
そのため、メインのPCとのファイル共有が必要になります。以前のlinuxでは/mntなどのマウント場所を用意して、smbやnfsなどのそれぞれの方法でマウントするというものでした。一旦マウントすればその場所は通常のローカルなフォルダやファイルとして使用可能でした。しばらくぶりで調べてみるとどれも違います。
今どきのUbuntuではもっと手軽な方法が用意されています。仕組みがわからないまま使えてしまう一方、いろいろ不具合がでても対処できない場合があります。接続のためのディレクトリの記述が長くなるのも厄介です。
仕組みを詳しく調べる余裕はないので、こういうこと"らしい"という現状の記録にとどめておきます。
(1)あらかじめ用意されたpublic(webdav)、(2)割と信頼できそうなsftp、(3)Windowsとの交換に使えるsmb/cifs。
3つとも接続して、接続の様子を一度に見るのとこうなります。
adachi@ebook:~$ ll /run/user/1000/gvfs/ 合計 4 dr-x------ 5 adachi adachi 0 6月 9 13:31 ./ drwx------ 16 adachi adachi 440 6月 10 23:02 ../ drwx------ 1 adachi adachi 0 4月 18 08:43 'dav+sd:host=adachi%2527s%2520public%2520files%2520on%2520fumita._webdav._tcp.local'/ drwxr-xr-x 1 adachi adachi 4096 5月 9 07:16 'sftp:host=fumita.local'/ drwx------ 1 adachi adachi 0 6月 8 09:02 'smb-share:server=fumita.local,share=s1t'/
dav, sftp, smb のキーワードでどれがどれだかわかります。%2527は "\'" %2520 は"\ "です。
これは実際のディレクトリ名になります。
どういうことかというと、
(1)のwebdabで接続した場合のnautilus(ファイルマネージャ)の表示をみてみます。右図にあるように適当に省略されて短くなっています。[adachi's pu...on fumita|ebook7▼]の部分です。ここでクリックして端末を開くと、次のような仮想端末が教示されます。下の黒地部分です。
青色部分がプロンプトのパス部分です。長い! pwd(カレントディレクトリ表示コマンド)でもそれが出てきています。
adachi@ebook:/run/user/1000/gvfs/dav+sd:host=adachi%2527s%2520public%2520files%2520on%2520fumita._webdav._tcp.local/ebook7$ pwd
/run/user/1000/gvfs/dav+sd:host=adachi%2527s%2520public%2520files%2520on%2520fumita._webdav._tcp.local/ebook7
adachi@ebook:/run/user/1000/gvfs/dav+sd:host=adachi%2527s%2520public%2520files%2520on%2520fumita._webdav._tcp.local/ebook7$
2007年あたりにLinux系の雑誌に紹介されていて、httpを拡張してファイルの共有に使うという話でした。httpならOSの種類によらず使えると期待していました。その後少なくともデスクトップの分野では、あまり聞いたことはなかったので、ちょっと意外な出会いです。
DebianのGNOMEのユーザーホームにあるとき「公開」なるフォルダがあります。私は英語名に設定変更しているので「public」になっています。
このフォルダを開けると上部に共有に使う旨が書いてあり、適当に設定すると他のPCから接続してファイルのやり取りがGUIでできるようになります。
多分Windowsなら簡単にローカル環境でファイルの共有が可能なので、Linuxではこんなこともできないのかと言われないように設けたものと感じています。
ても、これはWindowsからはアクセスできませんでした。いや、あまり期待していなかったから方法を見つけられなかったのかもしれないし、今ではできるのかもしれないし、あるいは特定のソフトを追加してできるのかもしれませんが、私はsambaを設定してしまったので、その後は調べていません。
nautilusでサイドバーから[+他の場所]①をクリック、[adachi's public files on fumita]②をクリック、次に出てくる[adachi's public files on fumita]③をクリックで、fumitaというコンピュータのadachiというユーザーのPublicフォルダが開きます。[adachi's public files on fumita]が二回なのは複数の共有場所を指定できるからだと想像していますが確認していません。
タイトルバーに[adachi's pu...on fumita▼]と出ました。
これは、実際にはsshを通してftpを動かし、見た目はGUIのファイルマネージャによるファイル操作に見せているものと筆者は考えています(裏を取っていません)。以前はsshfsとかfuseとかの単語で触れたような気がしています。sshですから、きちんと設定すればインターネットを通した共有にも使える基礎は持っているはずです。
まず、サーバー役のコンピュータとsshで通信ができる状態になっている必要があります。Debianはsshdパッケージを入れるとデフォルトでローカルなネットワークからパスワードでログインできる状態になります。つまり、Debianに登録されたユーザーは同じパスワードで他のコンピュータからCUIでログインできます。RSA公開/暗号鍵をセットすればインターネット越しの通信も安全にできます。
adachi@ebook:~$ ssh fumita.local
adachi@fumita.local's password:
Linux fumita 5.4.0-0.bpo.3-amd64 #1 SMP Debian 5.4.13-1~bpo10+1 (2020-02-07) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have new mail.
Last login: Sun Jun 13 18:19:43 2021 from 192.168.0.18
adachi@fumita:~$
こうやってリモートログインしたユーザーはローカルでログインしたのと同じ権限になります。つまり、/etcにある設定を読んだり(変更は普通できませんが)、/var/www や /srv に置いたhtmlデータなども許可があれば読み書きできます。ftpは公開範囲を設定するものですが、sshを通しているのでユーザーの権限の範囲で全部が許可されます。
[+他の場所]①をクリック、「サーバーへ接続」の接続先に[sftp://fumita.local]②を入力、右の[接続]③をクリックします。パスワードを要求されて認証されると接続されます。[▼]に接続の履歴が残りますから、次回はここから選ぶことができます。パスワードも記憶させられます。
[ssh://fumita.local]と記入してもかまいません。
最初はファイルシステムのトップ(ルートディレクトリ)に接続されます。
普通の用途では/homeにあるユーザーホーム(筆者なら/homa/adachi)、USBメモリなどの接続先(筆者なら/media/adachi)あたりに用があります。
タイトルバーの表記は、ディレクトリーツリーのルートも、ユーザーホームも [ fumita.local ▾ ] となります。これは最初とまどいます。ユーザーホームからルートに移るのが難しくなります。
タイトルバーの表記 | 表示されているフォルダ |
fumita.local ▾ | | sftp://fumita.local/ |
fumita.local | home ▾ | | sftp://fumita.local/home |
fumita.local ▾ | | sftp://fumita.local/home/adachi |
fumita.local | media ▾ | | sftp://fumita.local/media |
fumita.local | media | adachi ▾ | | sftp://fumita.local/media/adachi |
Debianをsambaサーバーにしています。画像の印刷で余白を精密にコントロールするにはプリンターメーカーのドライバが必要なのでWindowsから印刷する必要がありました。そのためにWindowsから共有できるようにしてあったわけです。Linuxからこのsamba共有をクライアントとして利用するのはとても簡単です。
ここで使っている sambaサーバーの設定は https://dabiyone.com の「Linux生活」にアプリケーションの追加と諸設定として書いてあります。
[+他の場所]①をクリック、「サーバーのホスト名」②をクリックします。パスワードを要求されて認証されると接続されます。パスワードは記憶させることができます。
右図の[+他の場所]①をクリックして出てくる一覧のうち、samba関係のものは「Windowsネットワーク」「FUMITA」「EPSON PX-1700F」の3項目です。
Windowsネットワークは Windowsネットワーク→グループ名リスト→ホスト名リスト→サービス名リスト というツリー構造になっていて、このうち「Windowsネットワーク」と自分と同じグループの「ホスト名リスト」の内容が表示されています。
サービスはWindows共有の用語でホストが提供する共有スペースにそれぞれつけられる名前です。筆者は「S1T」という共有一つしか設定していないので、右図のようになっています。ちなみにS1TはUSB接続のハードディスクで、Silver(銀色)な1TBの容量をもつHDDの意味です。print$はプリンタです。
タイトルバーの表示が [ fumita.local 上の s1t ▾ ]になりました。今後ここが起点となります。これはサイドバーにも表示されます。
「sftp接続の実際」でも触れましたが、nautilusのタイトルバーの表示は、表示しているディレクトリと同じではありません。nautilusで [Ctrl]+L を押すと表示が URL のような形式になります。スキーム://サーバー/パス という形です。そして、 ▾ が表示してあるボタンをクリック、または表示されているフォルダ内の空白部分で右クリックして出てくるコンテキストメニューから[端末で開く]を選んで仮想端末を開くと、マウントされている(のだと思いますが)ディレクトリツリーが見えます。Ubuntuのbashの仮想端末のプロンプトは 「ユーザー名@ホスト名:現在のディレクトリまでのパス$」となっていて、パスが見えます。もしそうなっていなかったら、pwdコマンドで表示されます。
nautilusのタイトルバーの表示
adachi's public files on fumita ▾
[Ctrl]+L
dav+sd://adachi%2527s%2520public%2520files%2520on%2520fumita._webdav._tcp.local/
端末のパス
/run/user/1000/gvfs/dav+sd:host=adachi%2527s%2520public%2520files%2520on%2520fumita._webdav._tcp.local
nautilusのタイトルバーの表示
adachi's public files on fumitaebook7 ▾
[Ctrl]+L
dav+sd://adachi%2527s%2520public%2520files%2520on%2520fumita._webdav._tcp.local/ebook7/
端末のパス
/run/user/1000/gvfs/dav+sd:host=adachi%2527s%2520public%2520files%2520on%2520fumita._webdav._tcp.local/ebook7
sftpはssh接続なので「端末で開く」は2種類。「リモートの端末で開く」と「ローカルの端末で開く」があります。リモートの方はssh接続です。
nautilusのタイトルバーの表示
fumita.local ▾
[Ctrl]+L
sftp://fumita.local/
端末のパス
/run/user/1000/gvfs/sftp:host=fumita.local
リモートの端末のプロンプト
adachi@fumita:/$
nautilusのタイトルバーの表示
fumita.local home ▾
[Ctrl]+L
sftp://fumita.local/home
端末のパス
/run/user/1000/gvfs/sftp:host=fumita.local/home
リモートの端末のプロンプト
adachi@fumita:/home$
nautilusのタイトルバーの表示
fumita.local ▾
[Ctrl]+L
sftp://fumita.local/home/adachi
端末のパス
/run/user/1000/gvfs/sftp:host=fumita.local/home/adachi
リモートの端末のプロンプト
adachi@fumita:~$
"~"に注意。pwdは /home/adachi
nautilusのタイトルバーの表示
fumita.local media adachi S1T tex ▾
[Ctrl]+L
sftp://fumita.local/media/adachi/S1T/tex
端末のパス
/run/user/1000/gvfs/sftp:host=fumita.local/media/adachi/S1T/tex
リモートの端末のプロンプト
adachi@fumita:/media/adachi/S1T/tex$
ユーザーホームにS1Tへのシンボリックリンクを作り、それを経由してのアクセス
nautilusのタイトルバーの表示
fumita.local S1T tex ▾
[Ctrl]+L
sftp://fumita.local/home/adachi/S1T/tex
端末のパス
/run/user/1000/gvfs/sftp:host=fumita.local/home/adachi/S1T/tex
リモートの端末のプロンプト
adachi@fumita:~/S1T/tex$
smbの場合はサーバー名が fumita.local ではなく fumita のみの場合もあります。Davやsftpがインターネットでも使うことを前提にした方式ですが、smbはローカルなネットワークで使うことを前提とした方式です。接続できるコンピュータが自動で一覧になるのもローカルだからできることです。
nautilusのタイトルバーの表示
fumita.local 上の s1t ▾
[ctrl]+L
smb://fumita.local/s1t
端末のパス
/run/user/1000/gvfs/smb-share:server=fumita.local,share=s1t
nautilusのタイトルバーの表示
fumita.local 上の s1t tex ▾
[ctrl]+L
smb://fumita.local/s1t/tex
端末のパス
/run/user/1000/gvfs/smb-share:server=fumita.local,share=s1t/tex