「Autofs」の版間の差分
(en:Autofsへの転送ページ) |
細 (リンクを修正) |
||
(3人の利用者による、間の9版が非表示) | |||
1行目: | 1行目: | ||
+ | [[Category:ファイルシステム]] |
||
− | #redirect[[en:Autofs]] |
||
+ | [[en:Autofs]] |
||
+ | [[es:Autofs]] |
||
+ | [[it:Autofs]] |
||
+ | [[ru:Autofs]] |
||
+ | [[uk:Autofs]] |
||
+ | [[zh-hans:Autofs]] |
||
+ | このドキュメントは AutoFS を設定する手順を解説しています。AutoFS はリムーバブルメディアやネットワーク共有などが接続されたりアクセスされたときに自動でマウントするパッケージです。 |
||
+ | |||
+ | == インストール == |
||
+ | |||
+ | {{Pkg|autofs}} パッケージを[[インストール]]してください。 |
||
+ | |||
+ | {{Note|{{ic|autofs4}} モジュールをロードする必要はなくなりました。}} |
||
+ | |||
+ | == 設定 == |
||
+ | |||
+ | AutoFS ではテンプレートファイルを使って設定します。ファイルは {{ic|/etc/autofs}} にあります。メインのテンプレートは {{ic|auto.master}} で、メディアタイプに合わせて他のテンプレートを読み込むことができます。 |
||
+ | |||
+ | * お好きなエディタで {{ic|/etc/autofs/auto.master}} ファイルを開いて下さい。以下のようになっているはずです: |
||
+ | |||
+ | {{hc|/etc/autofs/auto.master|2= |
||
+ | #/media /etc/autofs/auto.media |
||
+ | |||
+ | }} |
||
+ | |||
+ | 各行の最初の値はテンプレートのメディアをマウントするベースディレクトリです。2番目の値は使用するテンプレートです。デフォルトのベースパスは {{ic|/media}} となっていますが、自由に変更できます。例: |
||
+ | |||
+ | {{hc|/etc/autofs/auto.master|2= |
||
+ | /media/misc /etc/autofs/auto.misc --timeout=5 |
||
+ | /media/net /etc/autofs/auto.net --timeout=60 |
||
+ | |||
+ | }} |
||
+ | {{Note|テンプレートファイルの末尾には改行が必要です (最後の単語の後に {{ic|ENTER}} を押してください)。EOF (end of file) 行が存在しない場合、AutoFS デーモンは正しくロードされません。}} |
||
+ | |||
+ | {{ic|timeout}} パラメータではディレクトリをアンマウントする秒数を設定します。 |
||
+ | |||
+ | システム上にベースディレクトリが存在しなかった場合、作成されます。動的にメディアをロードするためにベースディレクトリはマウントされるため、autofs が動作している間、ベースディレクトリにもともとあった中身を閲覧することはできなくなります。使用中のディレクトリを間違って自動マウントしてしまったとしても、{{ic|auto.master}} でディレクトリを変更して AutoFS を再起動することで元に戻せます。 |
||
+ | |||
+ | 動的にロードされたディレクトリがマウントされた後でも元あったファイルが使えるようにしたい場合、他のディレクトリ (例: {{ic|/var/autofs/net}}) にマウントするようにするかソフトリンクを使ってください: |
||
+ | |||
+ | # ln -s /var/autofs/net/share_name /media/share_name |
||
+ | |||
+ | もしくは autofs でメディアを別のフォルダにマウントする場合: |
||
+ | |||
+ | {{hc|/etc/autofs/auto.master|2= |
||
+ | /- /etc/autofs/auto.template |
||
+ | }} |
||
+ | {{hc|/etc/autofs/auto.template|2= |
||
+ | /path/to/folder -options :/device/path |
||
+ | /home/user/usbstick -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sdb1 |
||
+ | }} |
||
+ | {{Note|共有への接続が失われたときにリソースがロックされたままになるという問題が発生します。フォルダにアクセスしようとしたとき、プログラムは反応が返ってくるまでロックされ、接続が戻るか、プロセスを強制的に終了するまでアンマウントができません。この問題を緩和するには、共有に接続が常に可能な場合のみ使用するようにして、ホームフォルダなど頻繁に使用するフォルダでは使用しないようにしてください。}} |
||
+ | |||
+ | * {{ic|/etc/nsswitch.conf}} ファイルを開いて automount エントリを追加してください: |
||
+ | automount: files |
||
+ | |||
+ | * テンプレートの設定が完了したら (下を参照)、root で {{ic|autofs.service}} を[[有効化]]・起動して AutoFS デーモンを起動してください。 |
||
+ | |||
+ | これでデバイスにアクセスしたときに自動的にマウントされるようになります。アクセスしているかぎりはマウントされ続けます。 |
||
+ | |||
+ | === リムーバブルメディア === |
||
+ | |||
+ | リムーバブルデバイスは空いているブロックデバイスのパスが割り当てられます。例えば、{{ic|/dev/sd{a,b,c} }} が既に使われている場合、次にマウントされたリムーバブルメディアには {{ic|/dev/sdd}} ブロックが与えられます。順番が定かでないブロックデバイスのパスに合わせてマウントポイントを割り当てる代わりに、リムーバブルメディアの UUID や PARTUUID をマップファイルで使用するという方法があります。 |
||
+ | |||
+ | 例えば、特定の USB ドライブを {{ic|/mnt/black}} というパスにマウントするには、テンプレートファイルとマップファイルを以下のように設定: |
||
+ | {{hc|/etc/autofs/auto.master|2= |
||
+ | # master template file |
||
+ | /mnt /etc/autofs/auto.mnt # [options here] |
||
+ | |||
+ | }} |
||
+ | |||
+ | マウントしたいパーティションの 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 ネットワークマウント === |
||
+ | |||
+ | AutoFS はリモートサーバー上の [[NFS]] 共有を自動で認識・マウントする新しい方法を提供しています (autofs5 で AutoFS のネットワークテンプレートは {{ic|/etc/autofs/auto.net}} から削除されました)。自動認識によるネットワーク共有のマウントを有効にするには、以下を {{ic|/etc/autofs/auto.master}} ファイルに追加してください: |
||
+ | |||
+ | /net -hosts --timeout=60 |
||
+ | |||
+ | {{Note|({{ic|/etc/hosts}} で IP アドレスに名前を付けるか [[DNS]] を使用して) ホストネームが解決できるようになっていること、そして {{Pkg|nfs-utils}} がインストール・動作していることを確認してください。また、共有フォルダを閲覧するには RPC を有効にする必要があります ({{ic|rpcbind.service}} を[[起動]]・[[有効化]]してください)。}} |
||
+ | |||
+ | 例えば、リモートサーバーの名前が ''fileserver'' で NFS 共有の名前が ''/home/share'' の場合、以下のコマンドを実行するだけで共有にアクセスできます (サーバーのホストネームがディレクトリの名前になります): |
||
+ | |||
+ | # cd /net/fileserver/home/share |
||
+ | |||
+ | {{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}} コマンドと同じような仕組みでリモートの共有を認識します。以下のコマンドを実行することで共有ディレクトリを確認できます: |
||
+ | |||
+ | # showmount <servername> -e |
||
+ | |||
+ | ''<servername>'' はあなたのサーバーの名前に置き換えてください。 |
||
+ | |||
+ | ==== 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.server_name</nowiki>|<nowiki>foo -rw,soft,intr,rsize=8192,wsize=8192 server_name:/srv/shared_dir</nowiki>}} |
||
+ | |||
+ | === Samba === |
||
+ | |||
+ | ==== 単一の共有フォルダ ==== |
||
+ | |||
+ | 以下を {{ic|/etc/autofs/auto.master}} に追加: |
||
+ | /media/[my_server] /etc/autofs/auto.[my_server] --timeout 60 --browse |
||
+ | {{ic|--timeout}} はファイルシステムがアンマウントされるまでの待機時間を定義します。{{ic|--browse}} オプションはネットワーク共有が使えなくなったときにタイムアウトを防ぐために各マウントポイントに空のフォルダを作成します。 |
||
+ | |||
+ | そして {{ic|/etc/autofs/auto.[my_server]}} ファイルを作成: |
||
+ | [any_name] -fstype=cifs,[other_options] ://[remote_server]/[remote_share_name] |
||
+ | |||
+ | {{ic|other_options}} セクションに、共有で使用するユーザー名とパスワードを指定してください: |
||
+ | [any_name] -fstype=cifs,username=[username],password=[password],[other_options] ://[remote_server]/[remote_share_name] |
||
+ | |||
+ | {{Note|$ などの文字はバックスラッシュでエスケープしてください。}} |
||
+ | |||
+ | ==== 複数の共有フォルダ ==== |
||
+ | |||
+ | {{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]] サーバーには [[Wikipedia:Filesystem in Userspace|FUSE]] (仮想ファイルシステムレイヤー) と AutoFS でシームレスにアクセスすることができます。 |
||
+ | |||
+ | ==== リモート FTP ==== |
||
+ | |||
+ | まず、{{Pkg|curlftpfs}} パッケージをインストールしてください。 |
||
+ | |||
+ | {{ic|fuse}} モジュールをロード: |
||
+ | |||
+ | # modprobe fuse |
||
+ | |||
+ | システムが起動するたびにモジュールがロードされるように {{ic|/etc/modules-load.d/fuse.conf}} ファイルを作成して {{ic|fuse}} と記述してください。 |
||
+ | |||
+ | そして、{{ic|/etc/autofs/auto.master}} に FTP サーバーのエントリを追加します: |
||
+ | |||
+ | /media/ftp /etc/autofs/auto.ftp --timeout=60 |
||
+ | |||
+ | {{ic|/etc/autofs/auto.ftp}} ファイルを作成して {{ic|ftp://myuser:mypassword@host:port/path}} の形式でサーバーを追加してください: |
||
+ | |||
+ | servername -fstype=curl,rw,allow_other,nodev,nonempty,noatime :ftp\://myuser\:mypassword\@remoteserver |
||
+ | |||
+ | {{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}} コマンドで表示されなくなります。フォーマットは: |
||
+ | |||
+ | machine remoteserver |
||
+ | login myuser |
||
+ | password mypassword |
||
+ | |||
+ | ユーザー名とパスワードを指定しない場合 {{ic|/etc/autofs/auto.ftp}} に追加する行は以下のようになります: |
||
+ | |||
+ | servername -fstype=curl,allow_other :ftp\://remoteserver |
||
+ | |||
+ | 以下の内容で {{ic|/sbin/mount.curl}} ファイルを作成: |
||
+ | |||
+ | {{hc|/sbin/mount.curl|<nowiki> |
||
+ | #!/bin/sh |
||
+ | curlftpfs $1 $2 -o $4,disable_eprt |
||
+ | </nowiki>}} |
||
+ | |||
+ | 以下の内容で {{ic|/sbin/umount.curl}} ファイルを作成 |
||
+ | |||
+ | {{hc|/sbin/umount.curl|<nowiki> |
||
+ | #!/bin/sh |
||
+ | fusermount -u $1 |
||
+ | </nowiki>}} |
||
+ | |||
+ | 両方のファイルのパーティションを設定: |
||
+ | |||
+ | # chmod 755 /sbin/mount.curl |
||
+ | # chmod 755 /sbin/umount.curl |
||
+ | |||
+ | 再起動後 {{ic|/media/ftp/servername}} から FTP サーバーにアクセスできるようになっているはずです。 |
||
+ | |||
+ | ==== リモート SSH ==== |
||
+ | |||
+ | 以下は AutoFS を使って [[SSH]] 経由でリモートサーバーのファイルシステムにアクセスする手順です。 |
||
+ | |||
+ | {{Note|パスワードを使わない認証は便利なだけでなくセキュリティ的に安全でもあります。詳しくは [[SSH 鍵]]を参照。}} |
||
+ | |||
+ | {{Pkg|sshfs}} パッケージをインストールしてください。 |
||
+ | |||
+ | {{ic|fuse}} モジュールをロード: |
||
+ | |||
+ | # modprobe fuse |
||
+ | |||
+ | システムが起動するたびにモジュールがロードされるように {{ic|/etc/modules-load.d/fuse.conf}} ファイルを作成して {{ic|fuse}} と記述してください。 |
||
+ | |||
+ | {{Pkg|openssh}} をインストールしてください。 |
||
+ | |||
+ | [[SSH 鍵]]を生成: |
||
+ | $ ssh-keygen |
||
+ | |||
+ | パスフレーズが要求されたら、{{ic|ENTER}} を押してください。パスフレーズを設定しないで SSH 鍵を使用するのはセキュリティ的には問題がありますが、パスフレーズを設定して AutoFS を使うのは難しいためここでは避けます。 |
||
+ | |||
+ | そして、リモートの SSH サーバーに公開鍵をコピー: |
||
+ | $ ssh-copy-id username@remotehost |
||
+ | |||
+ | root で、パスワードを入力しなくてもリモートサーバーにログインできることを確認: |
||
+ | # ssh username@remotehost |
||
+ | |||
+ | {{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 |
||
+ | |||
+ | {{ic|/etc/autofs/auto.ssh}} ファイルを作成して SSH サーバーを追加: |
||
+ | {{hc|/etc/autofs/auto.ssh|2= |
||
+ | servername -fstype=fuse,rw,allow_other,IdentityFile=/home/username/.ssh/id_rsa :sshfs\#username@host\:/ |
||
+ | }} |
||
+ | |||
+ | 再起動後 {{ic|/media/ssh/servername}} から SSH サーバーにアクセスできるようになっているはずです。 |
||
+ | |||
+ | == MTP == |
||
+ | |||
+ | Android デバイスでは Media Transfer Protocol ([[MTP]]) が使われます。 |
||
+ | |||
+ | {{Pkg|mtpfs}} パッケージをインストールしてください。 |
||
+ | |||
+ | {{ic|/etc/autofs/auto.misc}} に MTP デバイスのエントリを追加: |
||
+ | android -fstype=fuse,allow_other,umask=000 :mtpfs |
||
+ | |||
+ | == トラブルシューティング == |
||
+ | |||
+ | このセクションでは AutoFS に関するよくある問題の解決方法を載せています。 |
||
+ | |||
+ | === NIS を使用 === |
||
+ | |||
+ | AutoFS のバージョン 5.0.5 には [[NIS]] の高度なサポートが含まれています。AutoFS で NIS を使うには、{{ic|/etc/autofs/auto.master}} でテンプレートの名前の前に {{ic|yp:}} を追加してください: |
||
+ | |||
+ | /home yp:auto_home --timeout=60 |
||
+ | /sbtn yp:auto_sbtn --timeout=60 |
||
+ | +auto.master |
||
+ | |||
+ | バージョン 5.0.5 以前の NIS を使っている場合、{{ic|/etc/nsswitch.conf}} に {{ic|nis}} を追加してください: |
||
+ | automount: files nis |
||
+ | |||
+ | === 任意のパラメータ === |
||
+ | |||
+ | {{ic|timeout}} などのパラメータは {{ic|/etc/default/autofs}} でシステム全体に適用するように設定できます: |
||
+ | |||
+ | * {{ic|/etc/default/autofs}} ファイルを開いて {{ic|OPTIONS}} 行を編集: |
||
+ | OPTIONS='--timeout=5' |
||
+ | |||
+ | * ログ出力を有効にするには (デフォルトでは何もログが記録されません)、{{ic|/etc/default/autofs}} の {{ic|OPTIONS}} 行をアンコメントして {{ic|--verbose}} を追加してください: |
||
+ | OPTIONS='--verbose --timeout=5' |
||
+ | |||
+ | {{ic|autofs}} デーモンの再起動後、{{ic|systemctl status}} や {{ic|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 |
||
+ | |||
+ | 通常、スクリプト (先の {{ic|auto.net}} など) には実行可能属性 ({{ic|chmod a+x filename}}) が必要で、マウントのリストには必要ありません。 |
||
+ | |||
+ | {{ic|/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#Thunar Volume Manager|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 を参照。 |
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 を参照。