visudoに追加されたコマンドはまだ権限のため失敗しますか?

visudoに追加されたコマンドはまだ権限のため失敗しますか?

私のsudoファイルには、rootとしてログインせずに実行できる2つのコマンドがあります。

次のようになります。

user ALL=(root) NOPASSWD: /home/user/prog1.py
user ALL=(root) NOPASSWD: /home/user/prog2.py

ファイルがprog1.py正しく機能するためにパスワードは必要ありません。prog2.py権限の拒否によりファイルが失敗しましたか?

最初のプログラムは、読み取り用にルートで保護されたファイルにのみアクセスします。 2番目の手順は、シンボリックリンクを作成し、ルートで保護されたファイルを削除することです。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
from random import choice
from subprocess import Popen


def back_drop_change():
    link = "/usr/share/slim/themes/default/background.jpg"
    os.remove(link) # this is the line that returns permission denied
    image_selection = list()
    for di, _, fi in os.walk("/home/user/pictures/apod"):
        for f in fi:
            image_selection.append(di + "/" + f)
    bck_img = choice(image_selection)
    Popen(["ln", "-s", bck_img, link])

if __name__ == "__main__":
    back_drop_change()

/usr/bin/rm /usr/share/slim/themes/default/background.jpgvisudoファイルに追加しようとしましたが、まだ失敗しました。

編集する:

いくつかの追加情報 - sudo -l戻り値:

Matching Defaults entries for user on this host:
    env_reset, editor="/usr/bin/vim -p -X", !env_editor

User user may run the following commands on this host:
    (ALL) ALL
    (root) NOPASSWD: /home/user/Pidtrk/main.py
    (root) NOPASSWD: /home/user/backdrop.py

今回もpython2 Pidtrk/main.pyエラーなしで実行できますが、実行することはできません python2 backdrop.py

両方のファイルは同じ人の所有であり、User同じPermissions

編集2:

私は両方持っていて実行していprog1.pyますprog2.pycrontab@reboot

この行がある場合crontab

`python2 /home/user/prog1.py >> err.log 2>&1` 

いいえ:

user ALL=(root) NOPASSWD: /home/user/prog1.py

私のsudoersファイルにerr.logが表示されますit failed with permissions denied

ここでsudoersに次の行を追加すると、次のようになります。

user ALL=(root) NOPASSWD: /home/user/prog1.py

再起動後にうまく動作しますが、prog1.pyファイルが異なるのはなぜですかprog2.py

ベストアンサー1

明確な説明に示すように実行しようとしていますpython2 /home/user/backdrop.py。しかし、他のコマンドを実行する権限を自分で与えました。/home/user/backdrop.pyいいえpython2。そうしないでください。sudo許可されている項目については非常にトリッキーでなければなりません。実行権限を持つコマンドを実行するか、sudoers実際に実行したいコマンドを許可するように変更してください。

おすすめ記事