Tra*_*ty3 16 unix root mount sudo fstab
我需要允许非 root 用户挂载/卸载设备。说到 UNIX,我完全是个菜鸟,所以请帮我把它弄糊涂。
我一直在寻找interwebz的所有答案,似乎每个人都给出了相同的答案,即修改/etc/fstab以将该设备包含在该user选项中(或者users,两者都尝试过)。我这样做了,它仍然说mount: only root can do that。
这是我的 fstab 的内容:
# /etc/fstab:静态文件系统信息。 # # 使用 'vol_id --uuid' 打印一个通用唯一标识符 # 设备; 这可以与 UUID= 一起使用,作为一种更强大的设备命名方式 # 即使添加和删除磁盘也能正常工作。请参见 fstab(5)。 # # proc /proc proc 默认值 0 0 # / 在安装过程中位于 /dev/mapper/minicc-root UUID=1a69f02a-a049-4411-8c57-ff4ebd8bb933 / ext3 relatime,errors=remount-ro 0 1 # /boot 在安装过程中位于 /dev/sda5 UUID=038498fe-1267-44c4-8788-e1354d71faf5 /boot ext2 relatime 0 2 # 安装期间交换位于 /dev/mapper/minicc-swap_1 UUID=0bb583aa-84a8-43ef-98c4-c6cb25d20715 无交换 sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 用户,noauto,exec,utf8 0 0 /dev/scd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0 /dev/sdb1 /mnt/sdcard auto,user,rw,exec 0 0
我的拇指驱动器分区显示为/dev/sdb1. 我很确定我fstab的设置没问题,但是其他帖子上的每个人似乎都没有提到mount一旦此条目位于 fstab 文件中,他们实际上是如何调用命令的。我想这可能是我的问题所在。我用来挂载驱动器的命令是:
$ mount /dev/sdb1 /mnt/sdcard
Run Code Online (Sandbox Code Playgroud)
/bin/mount归 root 所有,在 root 组中,拥有 4755 权限。
/bin/umount归 root 所有,在 root 组中,拥有 4755 权限。
/mnt/sdcard归我所有,属于我的一个组,拥有 0755 权限。
如果我使用sudo,我的 mount 命令工作正常,但我需要能够做到这一点sudo(需要能够从 PHP 脚本使用shell_exec)。有什么建议?
Kev*_*nko 17
普通用户挂载卷时,只需要提供挂载点名称即可,即:
mount /mnt/sdcard
Run Code Online (Sandbox Code Playgroud)
该/etc/fstab文件提供了将使用的设备。
尝试将所有权更改/dev/sdb1为 root:
chown root:root /dev/sdb1
Run Code Online (Sandbox Code Playgroud)
和你的fstab线路
/dev/sdb1 /mnt/sdcard auto rw,user,noauto,exec,utf8 0 0
Run Code Online (Sandbox Code Playgroud)
并且这样做mount:
mount /dev/sdb1
Run Code Online (Sandbox Code Playgroud)