web-dev-qa-db-ja.com

パスワードなしでSudoコマンドをSudo(!)として実行するにはどうすればよいですか? (カーネルモジュール 'device-mapper'を使用するには、cryptsetupをSudoとして実行する必要があります)

解決済み

/ etc/sudoersの#includedir行をコメントアウトしないことに加えて、sudoers.d/myOverridesSudo visudo -f /etc/sudoers.d/myOverridesで編集し、最初に試した構文を使用してトリックを行いました。

そして、私のように馬鹿になりたくない場合は、visudoを保存するときに.tmpを削除してファイルを上書きし、構文が正しいことを確認してください。これはここでは問題ではありませんでしたが、簡単にできました;-)


Sudo cryptsetup luksClose XYZを実行して、LUKSコンテナーのマウントを解除して閉じる必要があるシェルスクリプトを書きたいのですが。

cryptsetupの特別な点は、カーネルモジュールdevice-mapperを使用してluksコンテナーを管理することです。マニュアルから得ることができることは、このカーネルモジュールに依存しており、これを回避する方法はないということです。

つまり、Sudoとして実行する必要があるため、プログラムは後でデバイスマッパーをrootとして呼び出すことができます。しかし、device-mapperが呼び出されるまで、エラーなしでSudoなしで実行することもできます。

visudoを使用して、Sudo cryptsetupが呼び出されている間、pudoを要求するSudoを停止しようとしました。

最初に

user ALL=(ALL) NOPASSWD: /sbin/cryptsetup

しかし、これはcryptsetupがSudoとして実行されることを意味するのではなく、単にSudoを呼び出す必要がないことを理解しました。そもそもそれはありません。

次に、/ sbin/cryptsetupを/ bin/Sudoの引数として使用して、それをだまそうとしました

user ALL=(ALL) NOPASSWD:/bin/Sudo /sbin/cryptsetup

(常に、この行はsudoersファイルの最後に追加され、最後に解釈された行になります)

ユーザーアカウントにPWなしで「Sudo cryptsetup luksClose XYZ」をそのまま実行する権限を与える別の方法はありますか? (または、cryptsetupマニュアルに欠けているもの)

編集:通常はPCManFMを使用してコンテナーを管理しています。コンテナーを閉じるためにPWを入力する必要はありません(cの復号化のためだけ)この魔術とは何ですか?

編集2:簡単な答えがない場合は、起動時にrootとしてスクリプトを実行し、キーボードショートカットを使用して2つの別個の開閉スクリプトを実行する代わりに、ユーザーからのキー入力を待機させます。この方法では、NOPASSWDをまったく作成する必要がないと思います。これは良いことです。

とにかく知りたいのですが。

前もって感謝します

1
hghtch

Cryptsetupをパスワードなしで使用するための最初の構文は正しいです。これを、システムをサスペンドするために作成したエイリアスに使用します。

me        ALL=(ALL:ALL) NOPASSWD: /bin/systemctl suspend

エイリアスでsudoを使用する必要があります:alias quit='Sudo systemctl suspend'

私は個人的にあなたが望む正確なコマンドをすべてのオプションとともに入れて、Sudo特権が必要なものだけに制限されるようにします。

2
ajgringo619