私が見つけたスクリプトを適用しています。ここ私の目的のために。
デフォルトでは、スクリプトはいくつかの条件を確認し、sudoを使用して2つのコマンドのいずれかを実行します。このコマンドはユーザーとして実行されますcas
。
スクリプトは対話的に実行されないため、スクリプト内のsudoコマンドがパスワードプロンプトなしで実行されることを確認したいと思います。そのため、sudoersファイルに次の行を追加しました。
ALL ALL = NOPASSWD: /usr/bin/systemctl mask sleep.target suspend.target
ALL ALL = NOPASSWD: /usr/bin/systemctl unmask sleep.target suspend.target
sudoersファイルがどのように機能するかを理解したところ、これはすべてのユーザーがパスワードプロンプト/usr/bin/systemctl mask sleep.target suspend.target
なしでコマンドを実行できることを意味します。/usr/bin/systemctl unmask sleep.target suspend.target
代わりにパスワードプロンプトが表示され続けます。
cas-desktop :: ~ » sudo /usr/bin/systemctl マスク sleep.target suspens.target
[sudo] cas パスワード:
sudo: パスワードが必要
私もsudoなしで試しました。
cas-desktop :: ~ » /usr/bin/systemctl マスク sleep.target suspens.target
==== org.freedesktop.systemd1.manage-unit-files に認証 ====
システムサービスまたはデバイス管理には ID が必要します。文書を確認してください。
認証方法:Cas(cas)
パスワード:
これを行うにはどうすればいいかわかりません。アイデアがあれば教えてください。
答え1
実行して、ユーザーに許可されている他のコマンドラインが定義されていることをsudo -l
確認してください。sudo
が表示されますみんなデフォルト構成および含まれている/etc/sudoers.d/*
ファイル(存在する場合)で適用可能なsudoers構成行。
以下を注文することが重要です。最後あなたの命令に一致する行は尊重されます。行が(ALL : ALL) ALL
表示されていないNOPASSWD:
通常の行の場合〜するパスワードの入力を求められます。その場合は、NOPASSWD:
表示されている行をファイルの後の場所に移動してくださいsudoers
。
sudoersファイルの最後の行がある場合は、@includedir /etc/sudoers.d
sudo設定行をに移動することをお勧めします/etc/sudoers.d/
。そのディレクトリのファイル名には次の文字が~
含まれています。.
無視されます。
またはなしでこれを許可するには、次のルールファイルを作成するsudo
必要があります。polkit
/etc/polkit-1/rules.d/01-local-sleep-suspend.rules
// -*- mode: js2 -*-
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.systemd1.manage-units" &&
(action.lookup("unit") == "sleep.target" ||
action.lookup("unit") == "suspend.target") &&
subject.user == "cas") {
return polkit.Result.YES;
}
});