su worldはなぜ実行可能ですか?


20

複数のユーザーがリモートでログインするヘッドレスサーバーがあります。他のユーザーはいずれもsudoersファイルに含まれていないため、を介してrootを取得することはできませんsudo。ただし、上のアクセス許可はルートパスワードのブルートフォース試行を阻止するものでsu-rwsr-xr-xありません。

ユーザーがrootパスワードを知っていれば、とにかくシステムを危険にさらす可能性があると主張することもできますが、私はそうではないと思います。OpenSSHはとで構成されてPermitRootLogin noおりPasswordAuthentication no、他のユーザーはサーバーに物理的にアクセスできません。私の知る限り、/usr/bin/su私のサーバーでルートを取得しようとするユーザーにとって唯一の手段は、世界の実行許可です。

それが役に立たないように思えるという点で、さらに私を困惑させます。実行suする必要がなく、直接実行できますsudo suが、これはほとんど不便ではありません。

私は何かを見落としていますか?su歴史的な理由で、世界はそこだけで許可を実行していますか?私がまだ遭遇していない許可を削除することの欠点はありますか?


9
「sudo suを実行する代わりにsuを直接実行できますが、これはほとんど不便ではありません。」-オプションがsudoインストールされていないシステムはどうですか?私はそこにかなり大きな不便があると思います;)
marcelm

1
/ bin / suのアクセスはいつでも制限できますが、/ usr / bin / pkexecでも同じことを忘れないでください。
JPA

6
この質問の背後にある動機を理解できないようです。suはなぜ世界で実行可能である必要があるのか​​疑問に思っているようですが、代替のポイントは何でしょうか?つまり、suがルート(?)でのみ実行可能な場合、それを何に使用できると考えていましたか?
デビッドZ

1
@DavidZ実際、これは実際にルートに役立ちます!ユーザーをすばやく切り替えることができます。
valがモニカを

1
@valはい、そうです。rootがsuを使用できるという事実は、ここでは問題になりません。(読み直すと、以前のコメントが別の方法で示唆していることがわかりますが、それは私が意図したものではありません。)
デビッドZ

回答:


39

ilkkachuの答えに欠けている点の1つは、ルートへの昇格はの1つの特定の用途にすぎないということですsu。suの一般的な目的は、別のユーザーのログインアカウントで新しいシェルを開くことです。他のユーザーがその可能性があることroot(そしておそらく最も頻繁にある)が、su想定して使用することができます任意のローカルシステムを認証することができますアイデンティティを。

たとえば、ユーザーとしてログインしてjimmikeて、報告されているが再現できない問題を調査したい場合、としてログインして、問題をmike引き起こしているコマンドを実行しようとします。

13:27:20 /home/jim> su -l mike
Password:(I type mike's password (or have him type it) and press Enter)
13:27:22 /home/mike> id
uid=1004(mike) gid=1004(mike) groups=1004(mike)
13:27:25 /home/mike> exit  # this leaves mike's login shell and returns to jim's
13:27:29 /home/jim> id
uid=1001(jim) gid=1001(jim) groups=1001(jim),0(wheel),5(operator),14(ftp),920(vboxusers)

-lオプションを使用すると、sumanページごとに)完全ログインをシミュレートします。

mikeただし、上記にはパスワードが必要です。sudoアクセス権があればmike、パスワードがなくてもログインできます。

13:27:37 /home/jim> sudo su -l mike
Password:(I type my own password, because this is sudo asking)
13:27:41 /home/mike>

要約すると、上の権限理由suので、あなたが示すように実行可能であるが、あるsuある汎用ツール、システム上のすべてのユーザーに利用可能です。


1
それはとても理にかなっています。私は使用する習慣があるので、それを単なる以上に使用できることsudoを忘れました。そして、sudoerでなくても、これはsshキーを変更せずにユーザーを切り替える唯一の方法です。私のユースケースでは、これが権限を削除するもう1つの理由ですが、ワールド実行権限がデフォルトで設定されている理由がわかりました。ありがとう!susudo -s
Altay_H

1
もう1つのポイントは、sudo以外のユーザーのIDを想定するためにも使用できることですroot。誰が誰として何を行うことができるかを、きめ細かく制御できるようになります。たとえば、そのIDのパスワードを必要とせずに別のIDを引き受けることができます。
チェプナー

混乱の一部は、suユーザーが指定されていない(またはルートが明示的に指定されている)ときに「スーパーユーザー」の略であるが、「ユーザーの切り替え」の略であると考えることです。suしたがって、この2番目の使用は簡単に忘れられます。
モンティハーダー

20

歴史的に(非GNUユニシスでは)、そうではなかった、または少なくとも "wheel"と呼ばれるグループに所属しているかどうかを手動でチェックしましたsu。のGNUバージョンはsu、当時のアクセス制御に関するRMSのイデオロギーのために、この機能を再現しませんでした。

Why GNU `su' does not support the `wheel' group
===============================================

   (This section is by Richard Stallman.)

   Sometimes a few of the users try to hold total power over all the
rest.  For example, in 1984, a few users at the MIT AI lab decided to
seize power by changing the operator password on the Twenex system and
keeping it secret from everyone else.  (I was able to thwart this coup
and give power back to the users by patching the kernel, but I wouldn't
know how to do that in Unix.)

   However, occasionally the rulers do tell someone.  Under the usual
`su' mechanism, once someone learns the root password who sympathizes
with the ordinary users, he or she can tell the rest.  The "wheel
group" feature would make this impossible, and thus cement the power of
the rulers.

   I'm on the side of the masses, not that of the rulers.  If you are
used to supporting the bosses and sysadmins in whatever they do, you
might find this idea strange at first.

「ホイールグループrms」などをグーグルで調べることで、この問題についてさらに多くの情報を見つけることができます。


3
これが唯一の正しい答えです。設定は意図的で歴史的であり、これがまさにその理由です。すべての技術的なblablaはそれだけです-blabla。現代のUnixでは、「ホイール」グループを絶対に再導入できます。
トム

10

ただし、上のアクセス許可はルートパスワードのブルートフォース試行を阻止するものでsu-rwsr-xr-xありません。

はい。通常のLinuxシステムを想定すると、pam_unix.soモジュールは失敗した認証試行を2秒まで遅らせますが、同時試行を停止するものはないと思います。

失敗した試行はもちろん記録されます:

Aug 16 22:52:33 somehost su[17387]: FAILED su for root by ilkkachu

パスワードを監視するための何らかのシステムがある場合、パスワードを総当たり攻撃することはログに顕著に現れるはずです。信頼できないローカルユーザーがいる場合は、そうする必要があります。信頼されていないローカルユーザーも、ローカルのみの特権エスカレーションエクスプロイトを使用しようとする可能性があり、リモート特権エスカレーションよりもはるかに一般的です。

それが役に立たないように思えるという点で、さらに私を困惑させます。

もちろん便利rootです。パスワードを知っていれば、に昇格できます。

実行suする必要がなく、直接実行できますsudo suが、これはほとんど不便ではありません。

sudo suやや冗長です。別のユーザーとしてプログラムを実行できるようにするための2つのプログラムを使用する必要はありません。1つで十分です。シェルを実行する場合は、sudo -ior sudo -s(またはsudo /bin/bashなど)を使用します。

私は何かを見落としていますか?歴史的な理由で、世界はsuに対して許可を実行していますか?

上記を参照。さて、すべてのシステムにsudo代替手段があるわけではありませんが、それを歴史的なものと考えるかどうかはわかりません。

私がまだ遭遇していない許可を削除することの欠点はありますか?

そうではありません、私が知る限りではありません。私は考えていくつかのシステムをしているsu特定のグループのメンバーのみが(」ように設定wheel「)、それを実行することができます。sudo好きなら(chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo)も同じことができます。

または、必要のないプログラムのいずれかまたは両方を削除することもできます。Debianではパッケージにsu付属しloginているため、パッケージ全体を削除することはおそらくお勧めできません。(そしてloginsuそのようなペアリングと一緒の組み合わせは、やや歴史的に思えます。)


1
BSDシステムを使用するには、ユーザーがwheelグループに属している必要がありますsu。まったく同梱さsudoれていないBSDシステムがいくつかあります(OpenBSDについてのみ話すことができます)(サードパーティのパッケージです)。OpenBSDにはdoas、の基本を再実装したものがありsudoますが、新しいシステムをインストールするとデフォルトで無効になります。
クサラナンダ

@Kusalanandaあなたが根を張りwheelたいのなら、あなたはそこにいればいいだけですsu。グループのsuメンバーシップに関係なく、どのアカウントでも、パスワードを持っているルート以外のアカウントにアクセスできますwheel
ジムL.

「sudo su-」を実行して、ユーザーアカウントからの汚染された環境なしで、取得したルートシェルが完全なルートログインであることを確認します。RHELのデフォルトのsudoersには、実行可能な環境変数(PS1など)が多数含まれています。
jsbillings

@jsbillings、うーん、わかりました。suそれでは環境はクリアされますか?Debianでそれを行っていないようです...
ilkkachu

「su-」は、私が知っているすべてのLinuxで実行されます。ダッシュに注意してください。
jsbillings

7

あなたはすでにいくつかの良い答えを持っていますが、あなたの投稿の一部が対処していません。

私の知る限り、/ usr / bin / suに対する世界の実行許可は、ユーザーがサーバー上でルートを取得しようとする唯一の手段です。

それは危険な仮定です。ルートに適切なパスワードを設定している場合、ほとんどの場合、カーネルまたはsetuidバイナリのバグの悪用による特権エスカレーションの成功の可能性がはるかに高くなります(もちろんsetuidを削除することもできます)それらから少しpasswdですが、setuidであり、高度なセキュリティが必要な場合はユーザーにも提供する必要があり、パスワードを変更するオプションを拒否することはそれと互換性がありません)。


1

suは誰でも実行できるように、世界中で実行可能である必要があります。多くのシステムでは、パスワードを入力することにより、別のユーザーに変更するために使用できます。

誰かがルートパスワードをブルートフォースすることを心配している場合は、単に無効にすることができます。(ハッシュを無効にして、指定されたパスワードが一致しないようにします)

私はコンセンサスについては知りませんが、rootとして直接ログインできることは、それ自体のセキュリティ問題です。


-2

「su」を使用すると、ルート以外のアカウントにログインできると言って、他の答えは正しいです。

ただし、「sudo su」に関する注意事項が1つあります。これにより、実際には、ルートパスワードを知らなくてもルートアカウントにログインできます。sudoを実行するアカウントのパスワードを知っている必要があり、そのアカウントをsudoersファイルに含める必要があります。


3
それは、sudoers持っているtargetpwrootpw設定されているかに完全に依存します。
ムル

1
これはsu、すべてが実行可能であることとは関係ありません。
クサラナナンダ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.