允許非 root 使用者掛載特定的 NTFS 外部硬碟驅動器
我有一個連接到 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 使用者掛載 -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
我怎樣才能允許這個使用者安裝這個驅動器,而不給他們任何其他管理權限?
您可以在文件中設置一個條目,
/etc/sudoers
以便該使用者能夠使用 mount 命令。在文件末尾添加如下內容/etc/sudoers
:
username ALL=NOPASSWD: /usr/bin/mount, /sbin/mount.ntfs-3g, /usr/bin/umount
確保每個執行檔的確切路徑對於您的系統是正確的。例如,您的
mount
命令可能是 in/bin
而不是/usr/bin
.添加
mount.ntfs-3g
元件對於為使用者提供訪問權限非常重要。我可以在您的 mount 命令中看到您使用的是ntfs-3g文件系統類型。相反,您可以創建一個 shell 腳本來處理安裝/解除安裝並將其放在您的 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