「Autofs」の版間の差分
細 (リンクを修正) |
|||
(3人の利用者による、間の7版が非表示) | |||
5行目: | 5行目: | ||
[[ru:Autofs]] |
[[ru:Autofs]] |
||
[[uk:Autofs]] |
[[uk:Autofs]] |
||
− | [[zh- |
+ | [[zh-hans:Autofs]] |
− | このドキュメントは AutoFS を設定する手順を解説しています。AutoFS はリムーバルメディアやネットワーク共有などが接続されたりアクセスされたときに自動でマウントするパッケージです。 |
+ | このドキュメントは AutoFS を設定する手順を解説しています。AutoFS はリムーバブルメディアやネットワーク共有などが接続されたりアクセスされたときに自動でマウントするパッケージです。 |
== インストール == |
== インストール == |
||
− | {{Pkg|autofs}} を[[インストール]]してください。 |
+ | {{Pkg|autofs}} パッケージを[[インストール]]してください。 |
{{Note|{{ic|autofs4}} モジュールをロードする必要はなくなりました。}} |
{{Note|{{ic|autofs4}} モジュールをロードする必要はなくなりました。}} |
||
25行目: | 25行目: | ||
}} |
}} |
||
+ | 各行の最初の値はテンプレートのメディアをマウントするベースディレクトリです。2番目の値は使用するテンプレートです。デフォルトのベースパスは {{ic|/media}} となっていますが、自由に変更できます。例: |
||
− | The first value on each line determines the base directory under which all the media in a template are mounted, the second value is which template to use. The default base path is {{ic|/media}}, but you can change this to any other location you prefer. For instance: |
||
{{hc|/etc/autofs/auto.master|2= |
{{hc|/etc/autofs/auto.master|2= |
||
32行目: | 32行目: | ||
}} |
}} |
||
+ | {{Note|テンプレートファイルの末尾には改行が必要です (最後の単語の後に {{ic|ENTER}} を押してください)。EOF (end of file) 行が存在しない場合、AutoFS デーモンは正しくロードされません。}} |
||
− | {{Note|Make sure there is an empty line on the end of template files (press {{ic|ENTER}} after last word). If there is no correct EOF (end of file) line, the AutoFS daemon will not properly load.}} |
||
+ | {{ic|timeout}} パラメータではディレクトリをアンマウントする秒数を設定します。 |
||
− | The optional parameter {{ic|timeout}} sets the amount of seconds after which to unmount directories. |
||
+ | システム上にベースディレクトリが存在しなかった場合、作成されます。動的にメディアをロードするためにベースディレクトリはマウントされるため、autofs が動作している間、ベースディレクトリにもともとあった中身を閲覧することはできなくなります。使用中のディレクトリを間違って自動マウントしてしまったとしても、{{ic|auto.master}} でディレクトリを変更して AutoFS を再起動することで元に戻せます。 |
||
− | The base directory will be created if it does not exist on your system. The base directory will be mounted on to load the dynamically loaded media, which means any content in the base directory will not be accessible while autofs is on. This procedure is however non-destructive, so if you accidentally automount into a live directory you can just change the location in {{ic|auto.master}} and restart AutoFS to regain the original contents. |
||
+ | 動的にロードされたディレクトリがマウントされた後でも元あったファイルが使えるようにしたい場合、他のディレクトリ (例: {{ic|/var/autofs/net}}) にマウントするようにするかソフトリンクを使ってください: |
||
− | If you still want to automount to a target non-empty directory and want to have the original files available even after the dynamically loaded directories are mounted, you can use autofs to mount them to another directory (e.g. /var/autofs/net) and create soft links. |
||
# ln -s /var/autofs/net/share_name /media/share_name |
# ln -s /var/autofs/net/share_name /media/share_name |
||
+ | もしくは autofs でメディアを別のフォルダにマウントする場合: |
||
− | Alternatively, you can have autofs mount your media to a specific folder, rather than inside a common folder. |
||
{{hc|/etc/autofs/auto.master|2= |
{{hc|/etc/autofs/auto.master|2= |
||
51行目: | 51行目: | ||
/home/user/usbstick -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sdb1 |
/home/user/usbstick -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sdb1 |
||
}} |
}} |
||
+ | {{Note|共有への接続が失われたときにリソースがロックされたままになるという問題が発生します。フォルダにアクセスしようとしたとき、プログラムは反応が返ってくるまでロックされ、接続が戻るか、プロセスを強制的に終了するまでアンマウントができません。この問題を緩和するには、共有に接続が常に可能な場合のみ使用するようにして、ホームフォルダなど頻繁に使用するフォルダでは使用しないようにしてください。}} |
||
− | {{Note|This can cause problems with resources getting locked if the connection to the share is lost. When trying to access the folder, programs will get locked into waiting for a response, and either the connection has to be restored or the process has to be forcibly killed before unmounting is possible. To mitigate this, only use if you will always be connected to the share, and do not use your home folder or other commonly used folders lest your file browser reads ahead into the disconnected folder}} |
||
* {{ic|/etc/nsswitch.conf}} ファイルを開いて automount エントリを追加してください: |
* {{ic|/etc/nsswitch.conf}} ファイルを開いて automount エントリを追加してください: |
||
60行目: | 60行目: | ||
これでデバイスにアクセスしたときに自動的にマウントされるようになります。アクセスしているかぎりはマウントされ続けます。 |
これでデバイスにアクセスしたときに自動的にマウントされるようになります。アクセスしているかぎりはマウントされ続けます。 |
||
− | === リムーバルメディア === |
+ | === リムーバブルメディア === |
+ | リムーバブルデバイスは空いているブロックデバイスのパスが割り当てられます。例えば、{{ic|/dev/sd{a,b,c} }} が既に使われている場合、次にマウントされたリムーバブルメディアには {{ic|/dev/sdd}} ブロックが与えられます。順番が定かでないブロックデバイスのパスに合わせてマウントポイントを割り当てる代わりに、リムーバブルメディアの UUID や PARTUUID をマップファイルで使用するという方法があります。 |
||
− | * {{ic|/etc/autofs/auto.misc}} を開いて様々なデバイスを追加・削除・編集してください。例えば: |
||
+ | 例えば、特定の USB ドライブを {{ic|/mnt/black}} というパスにマウントするには、テンプレートファイルとマップファイルを以下のように設定: |
||
− | {{hc|/etc/autofs/auto.misc|<nowiki> |
||
+ | {{hc|/etc/autofs/auto.master|2= |
||
− | #kernel -ro ftp.kernel.org:/pub/linux |
||
+ | # master template file |
||
− | #boot -fstype=ext2 :/dev/hda1 |
||
+ | /mnt /etc/autofs/auto.mnt # [options here] |
||
− | usbstick -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sdb1 |
||
− | cdrom -fstype=iso9660,ro :/dev/cdrom |
||
− | #floppy -fstype=auto :/dev/fd0 |
||
− | </nowiki>}} |
||
+ | }} |
||
− | CD/DVD のコンボドライブがある場合は {{ic|cdrom}} の行を {{ic|-fstype<nowiki>=</nowiki>auto}} のように置き換えることでメディアのタイプが自動で検出されるようになります。 |
||
+ | |||
+ | マウントしたいパーティションの UUID を {{ic|blkid}} を使って確認してから、マップファイルを生成: |
||
+ | <nowiki># _ID=$( blkid --output value --match-tag PARTUUID /dev/sd</nowiki>''XY'' ) |
||
+ | # printf "%s %s\n" "black -fstype=auto :PARTUUID=" "${_ID}" >/etc/autofs/auto.mnt |
||
=== NFS ネットワークマウント === |
=== NFS ネットワークマウント === |
||
+ | AutoFS はリモートサーバー上の [[NFS]] 共有を自動で認識・マウントする新しい方法を提供しています (autofs5 で AutoFS のネットワークテンプレートは {{ic|/etc/autofs/auto.net}} から削除されました)。自動認識によるネットワーク共有のマウントを有効にするには、以下を {{ic|/etc/autofs/auto.master}} ファイルに追加してください: |
||
− | AutoFS provides a new way of automatically discovering and mounting [[NFS]]-shares on remote servers (the AutoFS network template in {{ic|/etc/autofs/auto.net}} has been removed in autofs5). To enable automatic discovery and mounting of network shares from all accessible servers without any further configuration, you will need to add the following to the {{ic|/etc/autofs/auto.master}} file: |
||
/net -hosts --timeout=60 |
/net -hosts --timeout=60 |
||
+ | {{Note|({{ic|/etc/hosts}} で IP アドレスに名前を付けるか [[DNS]] を使用して) ホストネームが解決できるようになっていること、そして {{Pkg|nfs-utils}} がインストール・動作していることを確認してください。また、共有フォルダを閲覧するには RPC を有効にする必要があります ({{ic|rpcbind.service}} を[[起動]]・[[有効化]]してください)。}} |
||
− | Each host name needs to be resolveable, e.g. the name an IP address in {{ic|/etc/hosts}} or via [[Wikipedia:Domain_Name_System|DNS]] and please make sure you have {{Pkg|nfs-utils}} installed and working. You also have to enable RPC (systemctl start|enable rpcbind) to browse shared Folders. |
||
+ | 例えば、リモートサーバーの名前が ''fileserver'' で NFS 共有の名前が ''/home/share'' の場合、以下のコマンドを実行するだけで共有にアクセスできます (サーバーのホストネームがディレクトリの名前になります): |
||
− | For instance, if you have a remote server ''fileserver'' (the name of the directory is the hostname of the server) with an NFS share named ''/home/share'', you can just access the share by typing: |
||
# cd /net/fileserver/home/share |
# cd /net/fileserver/home/share |
||
88行目: | 89行目: | ||
{{Note|Please note that ''ghosting'', i.e. automatically creating directory placeholders before mounting shares is enabled by default, although AutoFS installation notes claim to remove that option from {{ic|/etc/conf.d/autofs}} in order to start the AutoFS daemon.}} |
{{Note|Please note that ''ghosting'', i.e. automatically creating directory placeholders before mounting shares is enabled by default, although AutoFS installation notes claim to remove that option from {{ic|/etc/conf.d/autofs}} in order to start the AutoFS daemon.}} |
||
+ | {{ic|-hosts}} オプションは {{ic|showmount}} コマンドと同じような仕組みでリモートの共有を認識します。以下のコマンドを実行することで共有ディレクトリを確認できます: |
||
− | The {{ic|-hosts}} option uses a similar mechanism as the {{ic|showmount}} command to detect remote shares. You can see the exported shares by typing: |
||
# showmount <servername> -e |
# showmount <servername> -e |
||
''<servername>'' はあなたのサーバーの名前に置き換えてください。 |
''<servername>'' はあなたのサーバーの名前に置き換えてください。 |
||
− | |||
− | systemd の自動マウントサービスを使う方法もあります。[[NFS#systemd で /etc/fstab を使う|NFS と systemd-automount]] を参照してください。 |
||
==== NFS の手動設定 ==== |
==== NFS の手動設定 ==== |
||
− | + | server_name の /srv/shared_dir という名前の NFS 共有を client_pc というコンピュータの /mnt/foo にマウントする場合、auto.master を編集して共有の設定ファイルを作成します (auto.server_name): |
|
{{hc|<nowiki>/etc/autofs/auto.master</nowiki>|<nowiki>/mnt /etc/autofs/auto.server_name --timeout 60</nowiki>}} |
{{hc|<nowiki>/etc/autofs/auto.master</nowiki>|<nowiki>/mnt /etc/autofs/auto.server_name --timeout 60</nowiki>}} |
||
{{hc|<nowiki>/etc/autofs/auto.server_name</nowiki>|<nowiki>foo -rw,soft,intr,rsize=8192,wsize=8192 server_name:/srv/shared_dir</nowiki>}} |
{{hc|<nowiki>/etc/autofs/auto.server_name</nowiki>|<nowiki>foo -rw,soft,intr,rsize=8192,wsize=8192 server_name:/srv/shared_dir</nowiki>}} |
||
103行目: | 102行目: | ||
=== Samba === |
=== Samba === |
||
+ | ==== 単一の共有フォルダ ==== |
||
− | The Arch package does not provide any [[Samba]] or CIFS templates/scripts (23.07.2009), but the following should work for single shares: |
||
− | + | 以下を {{ic|/etc/autofs/auto.master}} に追加: |
|
− | /media/[my_server] /etc/autofs/auto.[my_server] --timeout |
+ | /media/[my_server] /etc/autofs/auto.[my_server] --timeout 60 --browse |
+ | {{ic|--timeout}} はファイルシステムがアンマウントされるまでの待機時間を定義します。{{ic|--browse}} オプションはネットワーク共有が使えなくなったときにタイムアウトを防ぐために各マウントポイントに空のフォルダを作成します。 |
||
− | where {{ic|--timeout}} defines how many seconds to wait before the file system is unmounted. The {{ic|--ghost}} option creates empty folders for each mount-point in the file in order to prevent timeouts, if a network share cannot be contacted. |
||
− | + | そして {{ic|/etc/autofs/auto.[my_server]}} ファイルを作成: |
|
[any_name] -fstype=cifs,[other_options] ://[remote_server]/[remote_share_name] |
[any_name] -fstype=cifs,[other_options] ://[remote_server]/[remote_share_name] |
||
+ | {{ic|other_options}} セクションに、共有で使用するユーザー名とパスワードを指定してください: |
||
− | You can specify a user name and password to use with the share in the {{ic|other_options}} section: |
||
[any_name] -fstype=cifs,username=[username],password=[password],[other_options] ://[remote_server]/[remote_share_name] |
[any_name] -fstype=cifs,username=[username],password=[password],[other_options] ://[remote_server]/[remote_share_name] |
||
+ | {{Note|$ などの文字はバックスラッシュでエスケープしてください。}} |
||
− | {{Note|Escape $, and other characters, with a backslash when neccessary.}} |
||
+ | |||
+ | ==== 複数の共有フォルダ ==== |
||
+ | |||
+ | {{ic|/etc/autofs/auto.[my_server]}} では複数の共有フォルダを指定することができます。例: |
||
+ | |||
+ | [any_name] -fstype=cifs,[other_options] /photos ://[remote_server]/photos /music ://[remote_server]/music /video ://[remote_server]/video |
||
+ | |||
+ | ==== 自動探索 ==== |
||
+ | |||
+ | {{ic|/etc/autofs/auto.smb}} のコメントを見てください。 |
||
=== FTP と SSH (FUSE を使用) === |
=== FTP と SSH (FUSE を使用) === |
||
140行目: | 149行目: | ||
{{Note| Your passwords are plainly visible for anyone that can run {{ic|df}} (only for mounted servers) or view the file {{ic|/etc/autofs/auto.ftp}}.}} |
{{Note| Your passwords are plainly visible for anyone that can run {{ic|df}} (only for mounted servers) or view the file {{ic|/etc/autofs/auto.ftp}}.}} |
||
+ | セキュリティを高めたい場合 {{ic|~root/.netrc}} ファイルを作成することでパスワードを追加できます。パスワードは平文のテキストですが、600 にパーティションを設定すれば {{ic|df}} コマンドで表示されなくなります。フォーマットは: |
||
− | If you want slightly more security you can create the file {{ic|~root/.netrc}} and add the passwords there. |
||
− | Passwords are still plain text, but you can have mode 600, and {{ic|df}} command will not show them (mounted or not). |
||
− | This method is also less sensitive to special characters (that else must be escaped) in the passwords. The format is: |
||
machine remoteserver |
machine remoteserver |
||
148行目: | 155行目: | ||
password mypassword |
password mypassword |
||
− | + | ユーザー名とパスワードを指定しない場合 {{ic|/etc/autofs/auto.ftp}} に追加する行は以下のようになります: |
|
servername -fstype=curl,allow_other :ftp\://remoteserver |
servername -fstype=curl,allow_other :ftp\://remoteserver |
||
− | + | 以下の内容で {{ic|/sbin/mount.curl}} ファイルを作成: |
|
{{hc|/sbin/mount.curl|<nowiki> |
{{hc|/sbin/mount.curl|<nowiki> |
||
− | + | #!/bin/sh |
|
− | + | curlftpfs $1 $2 -o $4,disable_eprt |
|
</nowiki>}} |
</nowiki>}} |
||
− | + | 以下の内容で {{ic|/sbin/umount.curl}} ファイルを作成 |
|
{{hc|/sbin/umount.curl|<nowiki> |
{{hc|/sbin/umount.curl|<nowiki> |
||
− | + | #!/bin/sh |
|
− | + | fusermount -u $1 |
|
</nowiki>}} |
</nowiki>}} |
||
+ | 両方のファイルのパーティションを設定: |
||
− | Set the permissions for both files: |
||
# chmod 755 /sbin/mount.curl |
# chmod 755 /sbin/mount.curl |
||
# chmod 755 /sbin/umount.curl |
# chmod 755 /sbin/umount.curl |
||
+ | 再起動後 {{ic|/media/ftp/servername}} から FTP サーバーにアクセスできるようになっているはずです。 |
||
− | After a restart your new FTP server should be accessible through {{ic|/media/ftp/servername}}. |
||
==== リモート SSH ==== |
==== リモート SSH ==== |
||
+ | 以下は AutoFS を使って [[SSH]] 経由でリモートサーバーのファイルシステムにアクセスする手順です。 |
||
− | These are basic instructions to access a remote filesystem over [[SSH]] with AutoFS. |
||
{{Note|パスワードを使わない認証は便利なだけでなくセキュリティ的に安全でもあります。詳しくは [[SSH 鍵]]を参照。}} |
{{Note|パスワードを使わない認証は便利なだけでなくセキュリティ的に安全でもあります。詳しくは [[SSH 鍵]]を参照。}} |
||
192行目: | 199行目: | ||
$ ssh-keygen |
$ ssh-keygen |
||
+ | パスフレーズが要求されたら、{{ic|ENTER}} を押してください。パスフレーズを設定しないで SSH 鍵を使用するのはセキュリティ的には問題がありますが、パスフレーズを設定して AutoFS を使うのは難しいためここでは避けます。 |
||
− | When the generator ask for a passphrase, just press {{ic|ENTER}}. Using SSH keys without a passphrase is less secure, yet running AutoFS together with passphrases poses some additional difficulties which are not (yet) covered in this article. |
||
+ | そして、リモートの SSH サーバーに公開鍵をコピー: |
||
− | Next, copy the public key to the remote SSH server: |
||
$ ssh-copy-id username@remotehost |
$ ssh-copy-id username@remotehost |
||
+ | root で、パスワードを入力しなくてもリモートサーバーにログインできることを確認: |
||
− | '''As root''', see that you can login to the remote server without entering a password: |
||
# ssh username@remotehost |
# ssh username@remotehost |
||
− | {{Note| |
+ | {{Note|上記のコマンドで root の {{ic|known_hosts}} リストにリモートサーバーが追加されます。ホストは手動で {{ic|/etc/ssh/ssh_known_hosts}} に追加することもできます。}} |
− | + | {{ic|/etc/autofs/auto.master}} に SSH サーバーのエントリを作成: |
|
/media/ssh /etc/autofs/auto.ssh --timeout=60 |
/media/ssh /etc/autofs/auto.ssh --timeout=60 |
||
− | + | {{ic|/etc/autofs/auto.ssh}} ファイルを作成して SSH サーバーを追加: |
|
{{hc|/etc/autofs/auto.ssh|2= |
{{hc|/etc/autofs/auto.ssh|2= |
||
servername -fstype=fuse,rw,allow_other,IdentityFile=/home/username/.ssh/id_rsa :sshfs\#username@host\:/ |
servername -fstype=fuse,rw,allow_other,IdentityFile=/home/username/.ssh/id_rsa :sshfs\#username@host\:/ |
||
}} |
}} |
||
+ | 再起動後 {{ic|/media/ssh/servername}} から SSH サーバーにアクセスできるようになっているはずです。 |
||
− | After a restart your SSH server should be accessible through {{ic|/media/ssh/servername}}. |
||
== MTP == |
== MTP == |
||
238行目: | 245行目: | ||
=== 任意のパラメータ === |
=== 任意のパラメータ === |
||
− | + | {{ic|timeout}} などのパラメータは {{ic|/etc/default/autofs}} でシステム全体に適用するように設定できます: |
|
* {{ic|/etc/default/autofs}} ファイルを開いて {{ic|OPTIONS}} 行を編集: |
* {{ic|/etc/default/autofs}} ファイルを開いて {{ic|OPTIONS}} 行を編集: |
||
OPTIONS='--timeout=5' |
OPTIONS='--timeout=5' |
||
+ | * ログ出力を有効にするには (デフォルトでは何もログが記録されません)、{{ic|/etc/default/autofs}} の {{ic|OPTIONS}} 行をアンコメントして {{ic|--verbose}} を追加してください: |
||
− | * To enable logging (default is no logging at all), uncomment and add {{ic|--verbose}} to the {{ic|OPTIONS}} line in {{ic|/etc/default/autofs}} e.g.: |
||
OPTIONS='--verbose --timeout=5' |
OPTIONS='--verbose --timeout=5' |
||
− | + | {{ic|autofs}} デーモンの再起動後、{{ic|systemctl status}} や {{ic|journalctl}} でログが確認できるようになります。 |
|
=== 複数のデバイスを認識 === |
=== 複数のデバイスを認識 === |
||
− | USB ドライブ/スティックを複数使用する場合、AutoFS を使ってマウントポイントを設定して [[Udev]] で USB ドライブごとに名前を付けることができます。Udev ルールの設定方法については [[udev#固定デバイス名 |
+ | USB ドライブ/スティックを複数使用する場合、AutoFS を使ってマウントポイントを設定して [[Udev]] で USB ドライブごとに名前を付けることができます。Udev ルールの設定方法については [[udev#固定デバイス名を設定する]] を見て下さい。 |
=== AutoFS のパーミッション === |
=== AutoFS のパーミッション === |
||
+ | AutoFS が機能しない場合、テンプレートファイルのパーミッションが正しいことを確認してください。パーミッションが間違っていると AutoFS は起動しません。設定ファイルをバックアップしたときにファイルモードを保持してなかった場合に起こりえます。設定ファイルの正しいモードは以下の通りです: |
||
− | If AutoFS is not working for you, make sure that the permissions of the templates files are correct, otherwise AutoFS will not start. This may happen if you backed up your configuration files in a manner which did not preserve file modes. Here are what the modes should be on the configuration files: |
||
*0644 - /etc/autofs/auto.master |
*0644 - /etc/autofs/auto.master |
||
261行目: | 268行目: | ||
*0644 - /etc/conf.d/autofs |
*0644 - /etc/conf.d/autofs |
||
− | + | 通常、スクリプト (先の {{ic|auto.net}} など) には実行可能属性 ({{ic|chmod a+x filename}}) が必要で、マウントのリストには必要ありません。 |
|
+ | {{ic|/var/log/daemon.log}} に以下のようなエラーが出力される場合、パーミッションに問題があります: |
||
− | If you are getting errors in {{ic|/var/log/daemon.log}} similar to this, you have a permissions problem: |
||
May 7 19:44:16 peterix automount[15218]: lookup(program): lookup for petr failed |
May 7 19:44:16 peterix automount[15218]: lookup(program): lookup for petr failed |
||
269行目: | 276行目: | ||
=== fusermount の問題 === |
=== fusermount の問題 === |
||
+ | util-linux の特定のバージョンでは、"user=" オプションを使用しても autofs でマウントした fuse ファイルシステムドライブをアンマウントすることができません。次の URL を参照: http://fuse.996288.n3.nabble.com/Cannot-umount-as-non-root-user-anymore-tp689p697.html |
||
− | With certain versions of util-linux, you may not be able to unmount a fuse file system drive mounted by autofs, even if you use the "user=" option. See the discussion here: |
||
+ | |||
− | http://fuse.996288.n3.nabble.com/Cannot-umount-as-non-root-user-anymore-tp689p697.html |
||
+ | === 自動マウントの問題のデバッグ === |
||
+ | 効率的にデバッグするために、フォアグラウンドで自動マウントを実行してみてください: |
||
+ | |||
+ | # systemctl stop autofs.service |
||
+ | # automount -f -v |
||
+ | |||
+ | もしくは、デバッグ情報をもっと表示させたい場合: |
||
+ | # automount -f --debug |
||
== AutoFS の代替 == |
== AutoFS の代替 == |
||
283行目: | 298行目: | ||
* AutoFS で FTP と SFTP を使用する方法は Gentoo Wiki の記事を元にしています: https://web.archive.org/web/20130414074212/http://en.gentoo-wiki.com/wiki/Mounting_SFTP_and_FTP_shares |
* AutoFS で FTP と SFTP を使用する方法は Gentoo Wiki の記事を元にしています: https://web.archive.org/web/20130414074212/http://en.gentoo-wiki.com/wiki/Mounting_SFTP_and_FTP_shares |
||
* SSH に関する詳細は [[SSH]] や [[SSH 鍵]]のページを見て下さい。 |
* SSH に関する詳細は [[SSH]] や [[SSH 鍵]]のページを見て下さい。 |
||
+ | * Ubuntu の Autofs ヘルプ wiki: https://help.ubuntu.com/community/Autofs |
||
+ | * ファイルシステムごとのマウントオプションについては http://manpages.ubuntu.com/manpages/natty/en/man8/mount.8.html#contenttoc5 を参照。 |
||
+ | * fuse のマウントオプションについては http://manpages.ubuntu.com/manpages/precise/man8/mount.fuse.8.html を参照。 |
2023年12月28日 (木) 12:58時点における最新版
このドキュメントは AutoFS を設定する手順を解説しています。AutoFS はリムーバブルメディアやネットワーク共有などが接続されたりアクセスされたときに自動でマウントするパッケージです。
インストール
設定
AutoFS ではテンプレートファイルを使って設定します。ファイルは /etc/autofs
にあります。メインのテンプレートは auto.master
で、メディアタイプに合わせて他のテンプレートを読み込むことができます。
- お好きなエディタで
/etc/autofs/auto.master
ファイルを開いて下さい。以下のようになっているはずです:
/etc/autofs/auto.master
#/media /etc/autofs/auto.media
各行の最初の値はテンプレートのメディアをマウントするベースディレクトリです。2番目の値は使用するテンプレートです。デフォルトのベースパスは /media
となっていますが、自由に変更できます。例:
/etc/autofs/auto.master
/media/misc /etc/autofs/auto.misc --timeout=5 /media/net /etc/autofs/auto.net --timeout=60
timeout
パラメータではディレクトリをアンマウントする秒数を設定します。
システム上にベースディレクトリが存在しなかった場合、作成されます。動的にメディアをロードするためにベースディレクトリはマウントされるため、autofs が動作している間、ベースディレクトリにもともとあった中身を閲覧することはできなくなります。使用中のディレクトリを間違って自動マウントしてしまったとしても、auto.master
でディレクトリを変更して AutoFS を再起動することで元に戻せます。
動的にロードされたディレクトリがマウントされた後でも元あったファイルが使えるようにしたい場合、他のディレクトリ (例: /var/autofs/net
) にマウントするようにするかソフトリンクを使ってください:
# ln -s /var/autofs/net/share_name /media/share_name
もしくは autofs でメディアを別のフォルダにマウントする場合:
/etc/autofs/auto.master
/- /etc/autofs/auto.template
/etc/autofs/auto.template
/path/to/folder -options :/device/path /home/user/usbstick -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sdb1
/etc/nsswitch.conf
ファイルを開いて automount エントリを追加してください:
automount: files
- テンプレートの設定が完了したら (下を参照)、root で
autofs.service
を有効化・起動して AutoFS デーモンを起動してください。
これでデバイスにアクセスしたときに自動的にマウントされるようになります。アクセスしているかぎりはマウントされ続けます。
リムーバブルメディア
リムーバブルデバイスは空いているブロックデバイスのパスが割り当てられます。例えば、/dev/sd{a,b,c}
が既に使われている場合、次にマウントされたリムーバブルメディアには /dev/sdd
ブロックが与えられます。順番が定かでないブロックデバイスのパスに合わせてマウントポイントを割り当てる代わりに、リムーバブルメディアの UUID や PARTUUID をマップファイルで使用するという方法があります。
例えば、特定の USB ドライブを /mnt/black
というパスにマウントするには、テンプレートファイルとマップファイルを以下のように設定:
/etc/autofs/auto.master
# master template file /mnt /etc/autofs/auto.mnt # [options here]
マウントしたいパーティションの UUID を blkid
を使って確認してから、マップファイルを生成:
# _ID=$( blkid --output value --match-tag PARTUUID /dev/sdXY ) # printf "%s %s\n" "black -fstype=auto :PARTUUID=" "${_ID}" >/etc/autofs/auto.mnt
NFS ネットワークマウント
AutoFS はリモートサーバー上の NFS 共有を自動で認識・マウントする新しい方法を提供しています (autofs5 で AutoFS のネットワークテンプレートは /etc/autofs/auto.net
から削除されました)。自動認識によるネットワーク共有のマウントを有効にするには、以下を /etc/autofs/auto.master
ファイルに追加してください:
/net -hosts --timeout=60
例えば、リモートサーバーの名前が fileserver で NFS 共有の名前が /home/share の場合、以下のコマンドを実行するだけで共有にアクセスできます (サーバーのホストネームがディレクトリの名前になります):
# cd /net/fileserver/home/share
-hosts
オプションは showmount
コマンドと同じような仕組みでリモートの共有を認識します。以下のコマンドを実行することで共有ディレクトリを確認できます:
# showmount <servername> -e
<servername> はあなたのサーバーの名前に置き換えてください。
NFS の手動設定
server_name の /srv/shared_dir という名前の NFS 共有を client_pc というコンピュータの /mnt/foo にマウントする場合、auto.master を編集して共有の設定ファイルを作成します (auto.server_name):
/etc/autofs/auto.master
/mnt /etc/autofs/auto.server_name --timeout 60
/etc/autofs/auto.server_name
foo -rw,soft,intr,rsize=8192,wsize=8192 server_name:/srv/shared_dir
Samba
単一の共有フォルダ
以下を /etc/autofs/auto.master
に追加:
/media/[my_server] /etc/autofs/auto.[my_server] --timeout 60 --browse
--timeout
はファイルシステムがアンマウントされるまでの待機時間を定義します。--browse
オプションはネットワーク共有が使えなくなったときにタイムアウトを防ぐために各マウントポイントに空のフォルダを作成します。
そして /etc/autofs/auto.[my_server]
ファイルを作成:
[any_name] -fstype=cifs,[other_options] ://[remote_server]/[remote_share_name]
other_options
セクションに、共有で使用するユーザー名とパスワードを指定してください:
[any_name] -fstype=cifs,username=[username],password=[password],[other_options] ://[remote_server]/[remote_share_name]
複数の共有フォルダ
/etc/autofs/auto.[my_server]
では複数の共有フォルダを指定することができます。例:
[any_name] -fstype=cifs,[other_options] /photos ://[remote_server]/photos /music ://[remote_server]/music /video ://[remote_server]/video
自動探索
/etc/autofs/auto.smb
のコメントを見てください。
FTP と SSH (FUSE を使用)
リモートの FTP や SSH サーバーには FUSE (仮想ファイルシステムレイヤー) と AutoFS でシームレスにアクセスすることができます。
リモート FTP
まず、curlftpfs パッケージをインストールしてください。
fuse
モジュールをロード:
# modprobe fuse
システムが起動するたびにモジュールがロードされるように /etc/modules-load.d/fuse.conf
ファイルを作成して fuse
と記述してください。
そして、/etc/autofs/auto.master
に FTP サーバーのエントリを追加します:
/media/ftp /etc/autofs/auto.ftp --timeout=60
/etc/autofs/auto.ftp
ファイルを作成して ftp://myuser:mypassword@host:port/path
の形式でサーバーを追加してください:
servername -fstype=curl,rw,allow_other,nodev,nonempty,noatime :ftp\://myuser\:mypassword\@remoteserver
セキュリティを高めたい場合 ~root/.netrc
ファイルを作成することでパスワードを追加できます。パスワードは平文のテキストですが、600 にパーティションを設定すれば df
コマンドで表示されなくなります。フォーマットは:
machine remoteserver login myuser password mypassword
ユーザー名とパスワードを指定しない場合 /etc/autofs/auto.ftp
に追加する行は以下のようになります:
servername -fstype=curl,allow_other :ftp\://remoteserver
以下の内容で /sbin/mount.curl
ファイルを作成:
/sbin/mount.curl
#!/bin/sh curlftpfs $1 $2 -o $4,disable_eprt
以下の内容で /sbin/umount.curl
ファイルを作成
/sbin/umount.curl
#!/bin/sh fusermount -u $1
両方のファイルのパーティションを設定:
# chmod 755 /sbin/mount.curl # chmod 755 /sbin/umount.curl
再起動後 /media/ftp/servername
から FTP サーバーにアクセスできるようになっているはずです。
リモート SSH
以下は AutoFS を使って SSH 経由でリモートサーバーのファイルシステムにアクセスする手順です。
sshfs パッケージをインストールしてください。
fuse
モジュールをロード:
# modprobe fuse
システムが起動するたびにモジュールがロードされるように /etc/modules-load.d/fuse.conf
ファイルを作成して fuse
と記述してください。
openssh をインストールしてください。
SSH 鍵を生成:
$ ssh-keygen
パスフレーズが要求されたら、ENTER
を押してください。パスフレーズを設定しないで SSH 鍵を使用するのはセキュリティ的には問題がありますが、パスフレーズを設定して AutoFS を使うのは難しいためここでは避けます。
そして、リモートの SSH サーバーに公開鍵をコピー:
$ ssh-copy-id username@remotehost
root で、パスワードを入力しなくてもリモートサーバーにログインできることを確認:
# ssh username@remotehost
/etc/autofs/auto.master
に SSH サーバーのエントリを作成:
/media/ssh /etc/autofs/auto.ssh --timeout=60
/etc/autofs/auto.ssh
ファイルを作成して SSH サーバーを追加:
/etc/autofs/auto.ssh
servername -fstype=fuse,rw,allow_other,IdentityFile=/home/username/.ssh/id_rsa :sshfs\#username@host\:/
再起動後 /media/ssh/servername
から SSH サーバーにアクセスできるようになっているはずです。
MTP
Android デバイスでは Media Transfer Protocol (MTP) が使われます。
mtpfs パッケージをインストールしてください。
/etc/autofs/auto.misc
に MTP デバイスのエントリを追加:
android -fstype=fuse,allow_other,umask=000 :mtpfs
トラブルシューティング
このセクションでは AutoFS に関するよくある問題の解決方法を載せています。
NIS を使用
AutoFS のバージョン 5.0.5 には NIS の高度なサポートが含まれています。AutoFS で NIS を使うには、/etc/autofs/auto.master
でテンプレートの名前の前に yp:
を追加してください:
/home yp:auto_home --timeout=60 /sbtn yp:auto_sbtn --timeout=60 +auto.master
バージョン 5.0.5 以前の NIS を使っている場合、/etc/nsswitch.conf
に nis
を追加してください:
automount: files nis
任意のパラメータ
timeout
などのパラメータは /etc/default/autofs
でシステム全体に適用するように設定できます:
/etc/default/autofs
ファイルを開いてOPTIONS
行を編集:
OPTIONS='--timeout=5'
- ログ出力を有効にするには (デフォルトでは何もログが記録されません)、
/etc/default/autofs
のOPTIONS
行をアンコメントして--verbose
を追加してください:
OPTIONS='--verbose --timeout=5'
autofs
デーモンの再起動後、systemctl status
や journalctl
でログが確認できるようになります。
複数のデバイスを認識
USB ドライブ/スティックを複数使用する場合、AutoFS を使ってマウントポイントを設定して Udev で USB ドライブごとに名前を付けることができます。Udev ルールの設定方法については udev#固定デバイス名を設定する を見て下さい。
AutoFS のパーミッション
AutoFS が機能しない場合、テンプレートファイルのパーミッションが正しいことを確認してください。パーミッションが間違っていると AutoFS は起動しません。設定ファイルをバックアップしたときにファイルモードを保持してなかった場合に起こりえます。設定ファイルの正しいモードは以下の通りです:
- 0644 - /etc/autofs/auto.master
- 0644 - /etc/autofs/auto.media
- 0644 - /etc/autofs/auto.misc
- 0644 - /etc/conf.d/autofs
通常、スクリプト (先の auto.net
など) には実行可能属性 (chmod a+x filename
) が必要で、マウントのリストには必要ありません。
/var/log/daemon.log
に以下のようなエラーが出力される場合、パーミッションに問題があります:
May 7 19:44:16 peterix automount[15218]: lookup(program): lookup for petr failed May 7 19:44:16 peterix automount[15218]: failed to mount /media/cifs/petr
fusermount の問題
util-linux の特定のバージョンでは、"user=" オプションを使用しても autofs でマウントした fuse ファイルシステムドライブをアンマウントすることができません。次の URL を参照: http://fuse.996288.n3.nabble.com/Cannot-umount-as-non-root-user-anymore-tp689p697.html
自動マウントの問題のデバッグ
効率的にデバッグするために、フォアグラウンドで自動マウントを実行してみてください:
# systemctl stop autofs.service # automount -f -v
もしくは、デバッグ情報をもっと表示させたい場合:
# automount -f --debug
AutoFS の代替
- Systemd は必要に応じてファイルシステムを自動マウントすることができます。説明は Fstab#systemd による自動マウント を、例は Sshfs#必要に応じてマウント を見て下さい。
- Thunar Volume Manager は Thunar ファイルマネージャの自動マウントシステムです。
- PCManFM はリモート共有にアクセスすることができる軽量なファイルマネージャです。
- Udisks は最小主義の自動ディスクマウントサービスです。
参照
- AutoFS で FTP と SFTP を使用する方法は Gentoo Wiki の記事を元にしています: https://web.archive.org/web/20130414074212/http://en.gentoo-wiki.com/wiki/Mounting_SFTP_and_FTP_shares
- SSH に関する詳細は SSH や SSH 鍵のページを見て下さい。
- Ubuntu の Autofs ヘルプ wiki: https://help.ubuntu.com/community/Autofs
- ファイルシステムごとのマウントオプションについては http://manpages.ubuntu.com/manpages/natty/en/man8/mount.8.html#contenttoc5 を参照。
- fuse のマウントオプションについては http://manpages.ubuntu.com/manpages/precise/man8/mount.fuse.8.html を参照。