sudo権限は拒否されましたが、suは権限を付与します


11

これは、suが必要になった最初の事例です。

/ sys / devices / virtual / backlight / acpi_video0 / brightnessの値を変更してラップトップの画面の明るさを変更する方法についての記事を読みました。

最初に気づいたのです$ sudo echo 10 > brightnessが、許可されると拒否されました。

suを使用してrootに切り替え# echo 10 > brightness、ほぼ瞬時に明るさを変更しました。

最後に奇妙なことが起こったのは# echo 20 > brightness(maxbrightnessファイルに値15が保持されている)試し、書き込みエラーが発生したときです。

誰かがsudoとsuのこの違いを私に説明できますか?書き込みエラーを理解することは、追加のボーナスになります。ヘルプ、ポインタ、および/またはリンクをいただければ幸いです。


回答:


17

リダイレクトはそのようには機能しません。>コマンドに追加すると、ルートとしてではなく、呼び出し元のユーザー(あなた)としてそのリダイレクトが実行されます。でそれを行うtee

echo 20 | sudo tee /sys/devices/virtual/backlight/acpi_video0/brightness

または、別の特権シェルでコマンドを呼び出すことによって:

sudo bash -c "echo 20 > /sys/devices/virtual/backlight/acpi_video0/brightness"

ティーチップのように。私の15年間のUNIXシステム管理中には、それは私には起こりませんでした:-)見たときに明らかです。
Shark氏、2011

8

これはのせいではなくsudo、コマンドの処理方法のせいです。この質問で実際に説明しました。あなたがするとき

$ sudo echo 10 > brightness

シェルはrootとしてsudo echo 10実行さecho 10れるコマンドを実行します。次に、シェルbrightnessは出力をそこecho 10にリダイレクトできるように開こうとしますが、そうすることはできません-シェルはrootではなくあなたの許可で実行されています。私がリンクした質問の回答として投稿された回避策があります。良いものは:

$ echo 10 | sudo tee brightness

これteeが開くものでbrightness、ルートとして実行されているので成功します


3

su = s witch u ser:別のユーザーとしてシェルを使用します

sudo = s uper u ser do:次のコマンドをrootユーザーとして実行します。

あなたの場合、次のコマンドはだけなecho 20ので、エコー20のみがルートとして実行されます(前述のとおり)。リダイレクトは再びあなたとして実行されます。


2

/etc/sudoersファイルを確認してください。あなたのa / cがそこにリストされていない場合、あなたはできませんsudo


正しいですが、その場合は特定のエラーメッセージが表示されます(「ユーザー名がsudoersファイルにありません」)
Michael Mrozek
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.