web-dev-qa-db-ja.com

crontabスクリプトのSudoのパスワード要求を回避する方法は?

このユーザーはいくつかのコマンドでSudoを使用するcrontab.shに持っているため、新しいユーザーがSudoをパスワードの要求なしで実行できる必要があります。

Ubuntuサーバー16.04 x64に新しいユーザーを作成しました

adduser my-user Sudo
gpasswd -a my-user Sudo

次にvisuoを使用して、 this question に基づいてこの行を追加しました

my-user ALL=(ALL) NOPASSWD : ALL

その後再起動

リブート後、my-userを使用してログインし、Sudoクリアを試みましたが、Sudoパスワードを要求されました。

NOTEcrontab -e my-userを使用してcrontabを追加したので、スクリプトがmy-userとして実行されると仮定します。実際、crontabedスクリプトはクラッシュし、Sudoパスワードのリクエストについてログに記録されます。 my-suerを所有者としてファイルを作成するには、この方法でスクリプトを実行する必要があります。

いくつかのステップ/行が必要ではなかった場合と、パスワード要求なしでmy-userを実行してSudoを実行可能にする方法を教えてください。

ありがとう

PS: この質問 を見ましたが、動作させることができないので、状況が異なるため、より正確な説明が必要です:crontabスクリプトを実行しているので、実行する必要がありますSudoパスワードを要求しない

1
realtebo

ルートのcrontabからプロセスを実行すると、初期ファイルの所有権とrwxモードで問題が発生する場合があります。それらは正しく保存されない場合があります。

とにかく:

1)新しいユーザーを作成するには、シンプルにしてください:

 $ Sudo deluser my-user  # if "my-user" is a regular user
 $ adduser my-user
 $ Sudo gpasswd -a my-user Sudo

2)sudoersまたはファイル(/etc/sudoers.d/60_my-user_rulesなど)にNOPASSWDタグを持つ新しいエントリを含めるには、コロンをタグに貼り付けます。つまり、NOPASSWD:
スペースが散在していて、ルールは次のようになります。

 my-user my-Host = NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]

ルールはデフォルトで(ALL)にデフォルト設定されるため、NOPASSWD:の前に(ALL:ALL)を追加することはオプションです。ただし、root権限でcmd/scriptを実行するだけでなく、特定のユーザー(spec-user)または特定のグループのメンバー(spec-group)またはその両方として実行することもできます。その場合、ルールは次のようになります。

 my-user my-Host = ([spec-user][:spec-group]) NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]

これにより、実際にはyrパスワードなしのSudo処理が1人のユーザー、1つのホスト、1つのコマンドに制限されます。そのコマンドにオプションのパラメーターを指定することにより、このルールを強化できます。その場合、ルールはその/正確なパラメーターにのみ適用されます。
スクリプトの場合、スクリプトが何らかの方法で変更されていないの場合にのみルールを適用することにより、このルールをさらに強化できます。これは、スクリプトハイジャックを回避する方法です。これは、cmd-aliasingと/etc/sudoers.d/60_my-user_rulesでSHA-sumを指定することで行われます。

HTH。その回答で問題が発生した場合は報告してください。

4
Cbhihe