「Autofs」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「リムーバルメディア」を「リムーバブルメディア」に置換) |
細 (リンクを修正) |
||
(2人の利用者による、間の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 エントリを追加してください: |
||
62行目: | 62行目: | ||
=== リムーバブルメディア === |
=== リムーバブルメディア === |
||
+ | リムーバブルデバイスは空いているブロックデバイスのパスが割り当てられます。例えば、{{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>}} |
||
+ | マウントしたいパーティションの UUID を {{ic|blkid}} を使って確認してから、マップファイルを生成: |
||
− | CD/DVD のコンボドライブがある場合は {{ic|cdrom}} の行を {{ic|-fstype<nowiki>=</nowiki>auto}} のように置き換えることでメディアのタイプが自動で検出されるようになります。 |
||
+ | <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 ネットワークマウント === |
||
80行目: | 81行目: | ||
/net -hosts --timeout=60 |
/net -hosts --timeout=60 |
||
− | ({{ic|/etc/hosts}} で IP アドレスに名前を付けるか [[DNS]] を使用して) ホストネームが解決できるようになっていること、そして {{Pkg|nfs-utils}} がインストール・動作していることを確認してください。また、共有フォルダを閲覧するには RPC を有効にする必要があります ({{ic|rpcbind.service}} を[[起動]]・[[有効化]]してください)。 |
+ | {{Note|({{ic|/etc/hosts}} で IP アドレスに名前を付けるか [[DNS]] を使用して) ホストネームが解決できるようになっていること、そして {{Pkg|nfs-utils}} がインストール・動作していることを確認してください。また、共有フォルダを閲覧するには RPC を有効にする必要があります ({{ic|rpcbind.service}} を[[起動]]・[[有効化]]してください)。}} |
例えば、リモートサーバーの名前が ''fileserver'' で NFS 共有の名前が ''/home/share'' の場合、以下のコマンドを実行するだけで共有にアクセスできます (サーバーのホストネームがディレクトリの名前になります): |
例えば、リモートサーバーの名前が ''fileserver'' で NFS 共有の名前が ''/home/share'' の場合、以下のコマンドを実行するだけで共有にアクセスできます (サーバーのホストネームがディレクトリの名前になります): |
||
93行目: | 94行目: | ||
''<servername>'' はあなたのサーバーの名前に置き換えてください。 |
''<servername>'' はあなたのサーバーの名前に置き換えてください。 |
||
− | |||
− | systemd の自動マウントサービスを使う方法もあります。[[NFS#systemd で /etc/fstab を使う|NFS と systemd-automount]] を参照してください。 |
||
==== NFS の手動設定 ==== |
==== NFS の手動設定 ==== |
||
103行目: | 102行目: | ||
=== Samba === |
=== Samba === |
||
+ | ==== 単一の共有フォルダ ==== |
||
− | Arch のパッケージには [[Samba]] や CIFS のテンプレート/スクリプト (23.07.2009) は含まれていませんが、以下の手順で共有を使うことができます: |
||
以下を {{ic|/etc/autofs/auto.master}} に追加: |
以下を {{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|-- |
+ | {{ic|--timeout}} はファイルシステムがアンマウントされるまでの待機時間を定義します。{{ic|--browse}} オプションはネットワーク共有が使えなくなったときにタイムアウトを防ぐために各マウントポイントに空のフォルダを作成します。 |
そして {{ic|/etc/autofs/auto.[my_server]}} ファイルを作成: |
そして {{ic|/etc/autofs/auto.[my_server]}} ファイルを作成: |
||
116行目: | 115行目: | ||
{{Note|$ などの文字はバックスラッシュでエスケープしてください。}} |
{{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 (FUSE を使用) === |
||
248行目: | 257行目: | ||
=== 複数のデバイスを認識 === |
=== 複数のデバイスを認識 === |
||
− | USB ドライブ/スティックを複数使用する場合、AutoFS を使ってマウントポイントを設定して [[Udev]] で USB ドライブごとに名前を付けることができます。Udev ルールの設定方法については [[udev#固定デバイス名 |
+ | USB ドライブ/スティックを複数使用する場合、AutoFS を使ってマウントポイントを設定して [[Udev]] で USB ドライブごとに名前を付けることができます。Udev ルールの設定方法については [[udev#固定デバイス名を設定する]] を見て下さい。 |
=== AutoFS のパーミッション === |
=== AutoFS のパーミッション === |
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 を参照。