无需 Linux 密码即可自动挂载以挂载远程 cifs 文件系统

无需 Linux 密码即可自动挂载以挂载远程 cifs 文件系统

我的 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

你可以试试自动文件系统

这样,当用户访问该文件夹时,它将自动安装。

相关内容