sudoはsuを置き換えることができますか?

sudoはsuを置き換えることができますか?

Linuxベースのシステムには重複する機能がたくさんあります。たとえば、これらのシステムは同じことを行います。

sudo --login --user <user>
sudo su - <user>

これsudo-only 方法がよりエレガントに見えます。なしでも可能ですか?suあまり破壊せずに?

答え1

su私が正しく覚えているなら、次の微妙な違いがありますsudo

  • suユーザーIDの変更のみが許可されます(たとえば、スーパーユーザー)。
  • su他のユーザーのパスワードを知っているすべてのユーザーがそれを制御することなくそのユーザーになることを許可します。
  • sudo他のユーザー(ルートを含む)でコマンドを実行できます。
  • sudoファイルによって制御されます/etc/sudoers

このコマンドの元の目標sudoは、root権限でコマンドを実行できる人と実行できない人をより効果的に制御することでした。システムに複数の管理者がいる場合は、sudorootパスワードなしでrootとしてコマンドを実行できるようにすることが私の観点からより安全です。多くのディストリビューションでは、利用/etc/sudoers可能なユーザーまたはグループのリストを制御できますsudo

答え2

使用の観点からは、sudoはsuを完全に置き換えることができます。ただし、多くのスクリプトやプログラムで使用されるsuため、安全に削除する方法はありません。多くのLinuxディストリビューションにはsudoがプリインストールされていません。スクリプトで sudo を使用すると、これらのシステムと互換性がありません。 Jernejが彼のコメントで述べたように、suはPosix標準の一部です。これは、スクリプトを作成するときにsuスクリプトを使用すると、すべてのPosix互換オペレーティングシステムで実行されることを信頼できる必要があることを意味します。

ここ注意事項です。

答え3

sudo呼び出しプロセスより大きいファイル記述子を自動的に閉じます。>&2これは問題になる可能性があります。

すべてsudoersが別のものです。(おそらく不要)試行されテストされたデフォルトのユーザー/グループUnixスタイルの権限スキーム/etc/passwdから抽象化されたため、独自の管理が必要です。

例えば、~からman growisofs:

実行するとsudo(8) growisofs起動が拒否されます。その理由は次のとおりです。当然、growisofsDVDメディアに書き込むデータセットにアクセスするか、mkisofs作成を通じて間接的にアクセスする必要があります。ISO9660事前マスタリングされた画像を録画したい場合は、すぐにまたは直接レイアウトできます。で実行すると、sudo(8)ファイルシステム上のすべてのファイルへの読み取りアクセス権がgrowisofs効果的に付与されます。これは、実行可能イメージへの代替パスを決定するために環境変数が解析されるという事実によってさらに悪化します。つまり、以下で実行すると、高い権限で選択したプログラムを実行する権限が効果的に付与されます。何らかの理由で上記の内容が依然として許容可能であると考え、結果に喜んで直面することを望む場合は、実際のバイナリを取得するために次のラッパースクリプトを所定の位置で実行することを検討してください。sudoersgrowisofs$MKISOFSmkisofssudo(8)growisofssudoerssudo(8)growisofs

    #!/bin/ksh
    unset SUDO_COMMAND
    export MKISOFS=/path/to/trusted/mkisofs
    exec growisofs "$@"

ただし、上記の「解決方法」に提案されている代替案は実際にはインストールであり、growisofs set-root-uidこの場合、データmkisofsへの不正アクセスを防ぐために、データにアクセスまたは実行する前に権限を削除します。

少なくとも、su実際には一時的にユーザーを切り替え、Unixスタイルの権限を維持します。sudo、一方、超越ユーザー。それでも正しくアクセスすると、/etc/sudoers sudoほとんどの点で完全に交換でき、ほとんどの同じセキュリティ問題が発生するため、su最小限のセキュリティコストで便利に実行でき、独自の安全上の問題もさらに発生する可能性があります。私の考えではsusudoこれは素晴らしい議論でした。このトピックについて。

しかし、ただスキップして進むとどうなりますか?

CTRL+ ALT+Fn

login: root

または...

ssh root@localhost

何があってもそれでも?

関連情報