sudo vs root; 実際の違いは?


44

私は製品のサポートメンバーと協力しており、彼は私が一連のパッチをインストールするためにrootになる必要があると主張し、sudoは機能しません。彼は理由を提供しませんが、彼の信念に非常に固いようです。スーパーユーザーの閲覧これが事実である理由を特定することはできません。

sudo -l

私は得る:

...
User [MY USERNAME] may run the following commands on this host:
    (ALL) ALL

Linux /サーバーチームから実際にrootになるためのアクセスを取得することは、私が理解しているように、即時のプロセスではないため、自分でインストールすることを望みます。

サーバーにソフトウェアをインストールするためにsudoがrootと異なる動作をする実際的な理由はありますか?


2
彼に投げ返すべきだと思う。他の人が示したように、sudoを使用してルートを獲得する方法は無数にあり、sudoが不十分な理由について具体的な理由を提供できない場合、彼は立ち上がる足がありません。
ギャレット14年

1
環境とサブコマンドが思い浮かびます。Hasturは環境で良い仕事をしたと思います。Jayenはサブコマンド、パイピング、リダイレクションで素晴らしい仕事をしたと思います。
jww

2
Garrettには良い点がありますが、放尿の可能性のあるコンテストに参加する前に、サポートメンバーに尋ねます。両方の方法で試してみましたか。sudoスクリプトが現在書かれているので、彼はスクリプトで失敗した道を進んでいたかもしれません。その場合は、sdsの回答が最も役立つ可能性がありますsudo su -
jww 14年

回答:


34

sudoまたはでプログラムを呼び出す方法に大きく依存しますsu
例えば、私がこの瞬間にいるシステムについて:

                  .bashrc                        
    COMMAND        $HOME   $USER  Env.  $PATH
 1. sudo -i        (root)   root  root  [1]
 2. sudo -s        (USER)   root  USER  /home/${USER}/bin:[1]
 3. sudo /bin/bash (USER)   root  USER  /home/${USER}/bin:[1]  
 4. sudo su        (root)   root  USER  [1]:/usr/games:/usr/local/games  
 5. sudo su -      (root)   root  root  [1] 

[1] = / usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin
Env =環境変数は1および5でリセットされ、$ USERから取得されます2,3,4。

スクリプト、または別のオプションで起動されるプログラムは、異なる見ることができますので$PATH$HOMEそのシェルは異なる読み取ることができ.bashrc.profileかつ環境変数。に関連するファイルを読み取ります$HOME。各ユーザーは、さまざまな方法で環境を変更できます(変数$PATH、.bashrc、.profile、.bash_profile、エイリアス...)。特に、ユーザーは自分のディレクトリの順序を変えることができ$PATH、その結果、スクリプトはコマンドを実行できます。たとえば、/home/$USER/binルートから期待されるパスのコマンドの代わりに。

sudo -irootとしてログインしたときにプログラムを実行できますがsu -sudo MyCommandまたはで実行すると異なる動作をすることができますsu -c MyCommand


からman su

説明部分:
現在の環境が新しいシェルに渡されます$ PATHの値は、通常のユーザーの場合は/ bin:/ usr / binにリセットされ、スーパーユーザーの場合は/ sbin:/ bin:/ usr / sbin:/ usr / binにリセットされます
...
オプション部分:
-- l 、--login ユーザーが直接ログインした場合にユーザーが期待するものと同様
環境を提供します

男から sudo

-i、--
loginターゲットユーザーのパスワードデータベースエントリで指定されたシェルをログインシェルとして実行します。これは、.profileや.loginなどのログイン固有のリソースファイルがシェルによって読み取られることを意味します。コマンドが指定されている場合、シェルの-cオプションを介して実行するためにコマンドがシェルに渡されます。コマンドが指定されていない場合、対話型シェルが実行されます。 sudoシェルを実行する前に、そのユーザーのホームディレクトリに変更しようとします。 コマンドは、ユーザーがログイン時に受け取る環境と同様の環境で実行されます。sudoers(5)マニュアルの「コマンド環境」セクションには、-iオプションがsudoersポリシーの使用中にコマンドが実行される環境にどのように影響するかが記載されています。


素晴らしい答え。私はまだLinuxの初心者ですが、使用sudoできることは、sudoersファイルのアクセス許可と、rootがそれらの制限を持たないために行うことによって制限できるという別の違いはありますか?最後のブロックの引用はそれを暗示しているかもしれませんが、私が正しく理解していれば、それは環境を超えた別の実質的な違いのように思えます(または環境のせいか?)。
fixer1234

23

完全なsudoアクセス権がある場合は、rootを使用できるようになるsudo su -ため、セキュリティポイントは意味がありません。

確かに、そこのようにプログラムRANとの違いを見分けるための方法ですroot下、プログラムのRANをsudo使用して- getuidVSはgeteuid-これは不自然なトリックです。なぜパッチシステムがそれを行うのですか?


5
と言えば、直接ログインするときと同じ環境になるようsu -に使用したいと思うかもしれませんsudo -i
クリスチャン・シウピトゥ14年

2
たとえば、実行するとsudo myscript、現在のシェルの$ PATHと環境変数が保持されます。でsudo -i myscript実行する場合は、rootとしてログインするかのように実行します。当社との回答を参照してください。通話の_zooを:-) _
ハスター

1
環境変数はsudo、root
secretformula 14年

1
@dmanexe:sudoはスーパーユーザーdoの代わりではなく、「ユーザー切り替え」です。suとsudoを使用して、スーパーユーザーだけでなく、任意のユーザーに切り替えることができます。また、sudoについては擬似的なものは何もありません。sudoを実行すると、偽物ではなく実際のルートが取得されます。sudoの魔法は、実際にはsetuid許可ビットから来ることに注意してください。
ライライアン14年

2
SDS、@CharlesDuffy:須藤とのsu原因という考えgeteuid()とはgetuid()互いに異なるようには神話です。suおよびsudoは、指定されたコマンドまたはシェルを実行する前に、実際のユーザーIDと実効ユーザーIDの両方をターゲットユーザーのIDに変更します。これを確認するには(sudoの場合)sudo id -uおよびsudo id -ru(両方ともshow 0)を実行するか、sudo(8)COMMAND EXECUTIONの下)を読み取るか、テストプログラムを作成します。

7

@Hasturによって指摘されているように、ルートシェルを取得している場合、いくつかの違いがあります。

ルートシェルを取得していない場合は、さらに違いがあります。サポートメンバは、rootとして実行されるsudo patch -p0 < /root/patch.file場所などpatchを実行しようとした経験があるかもしれませんが、<(ファイルからのパイピング)はそうではありません。


1
右:実用的な観点では、多くの場合、manページからのみ見つけるのが難しいヒントが提供されます。同様の状況を克服するために、あなたはより多くのジム [:-)]を強制されますsudo /bin/bash -c "./patch -p0 < /root/patch"。リダイレクトを使用してファイルを作成する場合は、さらにデリケートです>。最初の方法では、最終ディレクトリに書き込むための十分な権限がある場合にのみ、ユーザーに属するファイルを作成します。後者の方法では、rootが所有するファイルを作成します... Unixのダークサイド;-)
Hastur 14年


0

ルートアクセスをどの程度細かくするかによって異なります。システム上で異なるタスクを実行するユーザーが複数いる場合、sudoがより理想的です。私が頻繁に使用する1つの例は、アプリケーションまたはデータベースを再起動する必要があることです。セキュリティは常に最小限の特権で実行するのが最適です。グループを使用し、それらのグループに明示的なアクションの実行のみを許可します。このプロセスを説明する良い本は、「Sudo Mastery:User Access Control for Real People」です。実際、それは一般的な須藤についての良い本です...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.