このユーザーはいくつかのコマンドで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パスワードを要求されました。
NOTE:crontab -e my-user
を使用してcrontabを追加したので、スクリプトがmy-user
として実行されると仮定します。実際、crontabedスクリプトはクラッシュし、Sudo
パスワードのリクエストについてログに記録されます。 my-suer
を所有者としてファイルを作成するには、この方法でスクリプトを実行する必要があります。
いくつかのステップ/行が必要ではなかった場合と、パスワード要求なしでmy-user
を実行してSudo
を実行可能にする方法を教えてください。
ありがとう
PS: この質問 を見ましたが、動作させることができないので、状況が異なるため、より正確な説明が必要です:crontabスクリプトを実行しているので、実行する必要がありますSudoパスワードを要求しない
ルートの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。その回答で問題が発生した場合は報告してください。