chmod +xとsudoing実行可能ファイルの違い

chmod +xとsudoing実行可能ファイルの違い

ユーザーは実行可能ファイルを所有者として実行するか、実行ビットのchmod u + x(またはchmodである必要があります)を設定して、sudoingを介して実行可能ファイルを実行できます。+x? )。

それでは、所有者以外の人が実行可能ファイルを実行できるようにするのと同じ効果がある場合、2つの間の実際の違いは何ですか?

答え1

具体的には、ファイルを実行するためにchmod o+x権限other(つまり、名前がないユーザーuserまたは名前のないユーザー)を要求することを意味しているようです。 3つ(、および)すべての実行権限を開くため、親セットです。groupchmod a+xchmod o+xusergroupother

違いは、プログラムが実行されるコンテキストにあります。プログラムはsudo指定されたユーザーのコンテキストで実行され、sudo現在のユーザーのコンテキストではプログラムは実行されません。一部のスクリプトでは、これはまったく重要ではないかもしれませんが、ユーザー権限に関連するすべての場合に重要です。ユーザーのホームディレクトリにあるすべてのファイルを削除する仮想悪意のあるスクリプトを使用してこれを説明すると便利です。

ユーザーがaliceそれを実行すると、sudo -u bob deleteHomeFiles.shbobのホームディレクトリにあるすべてのファイルが削除されます。一方、直接alice実行すると、deleteHomeFiles.shAliceのホームディレクトリにあるファイルが削除されます。

答え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

またはidsudo id

ユーザーIDは、ファイルアクセスだけでなくプロセスにシグナルを送信すること、およびroot一般ユーザーが実行できない他の多くの管理タスクを実行するためにも重要です。

もちろん、sudoデフォルトではrootとしてプログラムを実行しますが、root権限を使用しても原則的には違いがありますsudo -u johnnie

関連情報