ユーザーは実行可能ファイルを所有者として実行するか、実行ビットのchmod u + x(またはchmodである必要があります)を設定して、sudoingを介して実行可能ファイルを実行できます。ㅏ+x? )。
それでは、所有者以外の人が実行可能ファイルを実行できるようにするのと同じ効果がある場合、2つの間の実際の違いは何ですか?
答え1
具体的には、ファイルを実行するためにchmod o+x
権限other
(つまり、名前がないユーザーuser
または名前のないユーザー)を要求することを意味しているようです。 3つ(、および)すべての実行権限を開くため、親セットです。group
chmod a+x
chmod o+x
user
group
other
違いは、プログラムが実行されるコンテキストにあります。プログラムはsudo
指定されたユーザーのコンテキストで実行され、sudo
現在のユーザーのコンテキストではプログラムは実行されません。一部のスクリプトでは、これはまったく重要ではないかもしれませんが、ユーザー権限に関連するすべての場合に重要です。ユーザーのホームディレクトリにあるすべてのファイルを削除する仮想悪意のあるスクリプトを使用してこれを説明すると便利です。
ユーザーがalice
それを実行すると、sudo -u bob deleteHomeFiles.sh
bobのホームディレクトリにあるすべてのファイルが削除されます。一方、直接alice
実行すると、deleteHomeFiles.sh
Aliceのホームディレクトリにあるファイルが削除されます。
答え2
かなり大きな違いの1つは、プログラムを直接実行するとユーザーIDの権限で実行されますが、sudo
他のユーザーのユーザーIDとその権限を使用することです。
/bin/ls
誰でも実行でき、/root
ユーザー自身が読むことができる一般的に使用されるシステムを考えてみてくださいroot
。
$ /bin/ls /root/test
/bin/ls: cannot access '/root/test': Permission denied
しかし、
$ sudo /bin/ls /root/test
hello.txt
またはid
。sudo id
ユーザーIDは、ファイルアクセスだけでなくプロセスにシグナルを送信すること、およびroot
一般ユーザーが実行できない他の多くの管理タスクを実行するためにも重要です。
もちろん、sudo
デフォルトではrootとしてプログラムを実行しますが、root権限を使用しても原則的には違いがありますsudo -u johnnie
。