包含逗号的命令的无密码 sudo

包含逗号的命令的无密码 sudo

我有许多桌面计算机用户,每个用户在远程 samba 服务器上都有一个文件夹。我正在尝试按照此处的说明设置这些网络文件夹的每用户安装:

https://askubuntu.com/questions/67405/auto-mounting-network-shares-per-user

该文章建议将以下行添加到 sudoers:

user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred //server/music /home/user/MyMusicFolder

该命令工作正常,但我需要安装共享,以便它们由特定组拥有。我尝试将行更改为如下所示:

user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred,gid=xxx //server/music /home/user/MyMusicFolder

但添加 ,gid=xxx 后,sudoers 文件不再正确解析。我认为这是因为 NOPASSWD 命令实际上采用逗号分隔的参数列表,因此我需要转义命令中的逗号。我可以使用反斜杠来做到这一点,如下所示:

user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred\,gid=xxx //server/music /home/user/MyMusicFolder

现在 sudoers 文件将被解析,我可以使用 sudo 运行 mount 命令,而无需输入密码。不幸的是我现在得到这个错误:

Sorry, user is not allowed to execute '/bin/ls /home/' as root on ubuntu.

当我尝试运行任何其他命令时。如果我\,gid=xxx从线路中删除它,就不会收到此错误。那么在 sudoers 文件中转义逗号的正确方法是什么?

答案1

sudoers(5)手册页:

请注意,如果在命令参数中使用以下字符,则必须使用“\”进行转义:“,”、“:”、“=”、“\”。

相关内容