在python程序中调用的Sudo不起作用

时间:2013-04-10 09:25:14

标签: python bash chown sudoers

这是一个非常具体的问题。在我的程序中,我使用一个特定的文件来运行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时,它会更改我的usb-key的所有权,我将其挂载为/ mnt / usb。但是,此文件应以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 .

所以命令按预期工作。请注意,用户'用户'是'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

有没有人知道问题是什么?

谢谢,

萨拉

1 个答案:

答案 0 :(得分:0)

您需要为您的python脚本提供更多权限。

在控制台上,使用命令sudo myProgram.py打开它,然后它应该可以正常工作。