我的 Debian 主目录中有一个目录:/home/myuser/pchome/,我想将其用作远程 cifs 文件系统的挂载点。所以我有一个 bash 脚本,它在每次 myuser 登录时运行。该脚本包含命令:
mount -t cifs //192.168.1.2/myuser -o username=myuser,password=mypassword,uid=1000,gid=1000 /home/myuser/pchome
该命令的工作方式就像在控制台中使用自身的魅力一样。但是,问题是挂载需要 sudo 和密码输入(或以 root 权限运行)。
苏多尔斯
我想到的第一个方法是配置 sudoers 以允许 myuser 使用 mount 。就像是:
myuser ALL=(ALL) NOPASSWD: /bin/mount, /bin/umount
问题是 myuser 可以无限制地使用 mount,例如,甚至可以在 /etc 上挂载文件系统。我对允许 myuser 自由使用 mount 命令不感兴趣。
系统表
我想到的第二种方法是使用 fstab 来允许安装。我没有测试它,但我认为,通过这个解决方案,挂载点和要挂载的文件系统都可以修复,并且无法完成其他挂载。但是,每个用户都可以执行安装(如果对 fstab 行使用“user”选项)。
从我的角度来看,这两个想法都不够正确,所以我想知道你们中是否有人知道解决该问题的有效方法。我只想被允许使用家中的挂载点来挂载公共远程文件系统,而不用担心安全性、密码或将系统暴露给恶意挂载。这应该更容易,因为安装点在我自己的家里。
提前致谢。
答案1
一种可能性是将安装命令保存为脚本(只能由 root 修改)并为脚本定义 sudo 权限。
/home/bin/mymount
:
#!/bin/sh
mount -t cifs //192.168.1.2/myuser -o username=myuser,password=mypassword,uid=1000,gid=1000 /home/myuser/pchome
sudoers
:
myuser ALL=(ALL) NOPASSWD: /home/bin/mymount # and maybe , /home/bin/myumount
作为旁注,您可能还希望将该 CIFS 密码保存在凭证文件。
您可以通过定义别名或向组授予权限来向各个用户授予权限。
使用别名:
User_Alias CIFSUSERS = myuser, user2, user3 #, more users
CIFSUSERS ALL=(ALL) NOPASSWD: /home/bin/mymount # ...
或者授予某个组权限,例如 group floppy
:
%floppy ALL=(ALL) NOPASSWD: /home/bin/mymount # ...
答案2
你可以试试自动文件系统
这样,当用户访问该文件夹时,它将自动安装。