这是一个非常具体的问题。在我的程序中,我使用一个特定的文件来运行一个 sudo 命令,我称之为 CHOWN.sh :
#!/bin/bash
if [ "$1" = "usb"] #first argument is usb
then
chown eng:eng /mnt/usb
else
...
当我使用参数“usb”调用命令/path/to/the/file/CHOWN.sh 时,它会更改我作为/mnt/usb 安装的usb-key 的所有权。但是,此文件应以 root 身份运行。这就是我在 /etc/sudoers 中输入这一行的原因:
%hmis ALL=NOPASSWD: /path/to/the/file/CHOWN.sh
这样,我可以使用“sudo”命令运行它。
假设 /mnt/usb 的所有权是 root:root:
$ ls -als /mnt/usb
4 drwxr-xr-x 2 root root 4096 Feb 13 10:50 .
4 drwxr-xr-x 4 root root 4096 Mar 15 2012 ..
当我使用 sudo 运行命令时,我得到:
$ whoami
user
$ sudo /path/to/the/file/CHOWN.sh usb
$ ls -als /mnt/usb
4 drwxr-xr-x 2 eng eng 4096 Feb 13 10:50 .
4 drwxr-xr-x 4 root root 4096 Mar 15 2012 .
所以命令按预期工作。请注意,用户 'user' 是组 'hmis' 的一部分。但是,当我在 python 文件中使用此命令时,它将不起作用:
#!/usr/bin/python
...
subprocess.call(["whoami"])
subprocess.call(["sudo","/path/to/the/file/CHOWN.sh","usb"])
...
在程序的 stdout-stderr 中,我得到:
user
chown: changing ownership of '/mnt/usb' : Operation not permitted
有谁知道问题出在哪里?
谢谢,
莎拉