web-dev-qa-db-ja.com

/ sys / power / stateへのSudo非パスワードアクセス

私のコンピューターでは、pm-hibernateは壊れているように見えますが、コマンドecho disk > /sys/power/stateを使用すると完全に機能するようです。 Sudoを使用して、通常のユーザーアクセスが必要になりました。どうすればいいですか?

コマンドSudo echo disk > /sys/power/stateは、単にbash: /sys/power/state: Permission deniedを返します。

また、私はこれを定期的に使用されるスクリプトで必要としていますが、それを機能させるためにパスワードを入力する必要がないようにするにはどうすればよいですか?

3
codesmith

リダイレクト文字は、実行と特権を「分離」することに注意してください。このコマンドで:

Sudo echo disk > /sys/power/state

あなたがしていることは、echo diskをルート(無意味)として実行し、それを通常のユーザーとして、rootが所有するファイルにパイプすることです。そのため、許可が拒否されます。

これは非常に一般的な使用例です。あなたがする必要があるのは、代わりに実際にファイルに書き込む部分であるSudoです。

echo disk | Sudo tee /sys/power/state

以下を使用してシェルスクリプト(ファイル)を作成することもできます。

  echo disk > /sys/power/state

たとえば、script.shと名前を付け、chmod 755 script.shを実行して、Sudoで実行します。

Sudo /wherever/you/put/this/script.sh

パスワードを必要とせずにコマンドを実行することについては、前に説明しました: パスワードを入力せずにSudoを実行するにはどうすればよいですか? 多少安全ではない場合があります。どのユーザーがパスワードなしでルートとしてどのコマンドを実行するかを制御できますが、この場合、悪意のあるユーザーが上書きできるteeコマンドの実行を許可する必要がありますルートとしてanyファイル。したがって、注意して使用し、すべてのドキュメントを読んで、これを行うことのセキュリティへの影響を理解してください。

4
roadmr