0

これはかなり具体的な質問です。私のプログラムでは、特定のファイルを使用して sudo コマンドで実行しています。これを CHOWN.sh と呼びます。

#!/bin/bash
if [ "$1" = "usb"] #first argument is usb
then 
    chown eng:eng /mnt/usb
else
    ...

コマンド /path/to/the/file/CHOWN.sh を引数「usb」で呼び出すと、/mnt/usb としてマウントした USB キーの所有権が変更されます。ただし、このファイルはルートとして実行する必要があります。そのため、 /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

誰が問題が何であるかの手がかりを持っていますか?

ありがとう、

サラ

4

1 に答える 1

0

Python スクリプトにさらに権限を与える必要があります。

コンソールで、コマンドで開くと、sudo myProgram.py動作するはずです。

于 2013-04-10T09:39:01.700 に答える