Linuxサーバーに接続された4TBの外付けハードドライブがあります。
このドライブのfstab権限は、特定の非rootユーザーのみがアクセスできるように設定されています。
/dev/disk/by-uuid/CEE0476DE0388DA9/ /mnt/USBexternal ntfs-3g defaults,auto,uid=51343,gid=50432,umask=077 0 0
このユーザーは、離れた場所から、この外付けハードドライブへのrsyncバックアップを正常に実行できました。
ただし、外付けドライブは、内蔵ハードドライブほど確実にマウントされたままにはなりません。数日おきにrootとしてログインする必要があります。次のコマンドを実行してください。
mount -a
このユーザーにこのドライブをマウントする権限を与えたいのですが、非rootユーザーがmount -aを実行すると、これを行う権限がないことを通知します。
nonrootuser@server:~$ mount -a
mount: only root can do that
非rootユーザーがこのドライブを具体的にマウントしようとすると、既にマウントされていない場合でも(すでにマウントされていなくても)、次のように通知されます。
nonrootuser@server:~$ mount /mnt/USBexternal/
mount: according to mtab, /dev/sdb1 is already mounted on /mnt/USBexternal
前述のように、ドライブは実際にはマウントされていませんが、(上記の出力のために)root以外のユーザーがドライブをアンマウントしようとすると、要求がfstabに同意しないと表示されます。
nonrootuser@server:~$ umount /mnt/USBexternal/
umount: /mnt/USBexternal/ mount disagrees with the fstab
他の管理権限を与えずに、このユーザーにこのドライブをマウントする機能を許可するにはどうすればよいですか?
このユーザーがmountコマンドを使用できるように、/etc/sudoers
ファイルにエントリを設定できます。 /etc/sudoers
ファイルの最後に次のようなものを追加します。
username ALL=NOPASSWD: /usr/bin/mount, /sbin/mount.ntfs-3g, /usr/bin/umount
各実行可能ファイルへの正確なパスがシステムにとって正しいことを確認してください。たとえば、mount
コマンドが/bin
ではなく/usr/bin
にある場合があります。
mount.ntfs-3g
パーツを追加することは、ユーザーにそのアクセスを提供するために重要です。 ntfs-3gファイルシステムタイプを使用していることがマウントコマンドでわかります。
代わりに、マウント/アンマウントを処理するシェルスクリプトを作成し、それをsudoersファイルに配置できます。例えば:
/usr/local/bin/mount-ntfs-drive
スクリプトを作成します。
#!/bin/bash
device_path="/dev/disk/by-uuid/CEE0476DE0388DA9/"
mount_point="/mnt/USBexternal"
if [ "$1" = "-u" ] ; then
# do unmount
/bin/umount $mount_point
else
# do mount
/bin/mount $device_path $mount_point
fi
/etc/sudoers
ファイルを編集します:
username ALL=NOPASSWD: /usr/local/bin/mount-ntfs-drive
必ずchmod +x /usr/local/bin/mount-ntfs-drive
を実行してください。また、ユーザーがファイルを実行するときは、ファイルを機能させるために完全修飾パスを使用する必要があります。それは彼らの道からうまくいくかもしれませんが、確かではありません。
Sudo /usr/local/bin/mount-ntfs-drive
接続が切断されているかどうかを確認し、その場合に必要なクリーンアップを実行するスクリプトを作成できます。このスクリプトは、root
によってcron
として30分ごとに実行できます。
カーネルがデバイスがなくなったことを検出すると、/proc/mounts
から消えてしまう可能性があります。そうでない場合、スクリプトはマウントされたボリュームにファイルを作成しようとするだけです。
それはあなたが説明した問題の状況を回避するでしょう。
別のアプローチは、user
のfstab
機能を使用せずに、代わりにSudo
を使用して、ユーザーがクリーンアップの両方を実行するスーパーユーザー権限でスクリプトを実行できるようにすることです(必要に応じて)とマウント。