私は製品のサポートメンバーと協力しており、一連のパッチをインストールするにはrootになる必要があるとSudoは機能しないと彼は主張しています。彼は理由を提供していませんが、彼の信念には非常に固いようです。スーパーユーザーの閲覧私がこれを実行したとき、これが事実である可能性のある理由を確認できません。確認すると、次のようになります。
Sudo -l
私は得ます:
...
User [MY USERNAME] may run the following commands on this Host:
(ALL) ALL
Linux /サーバーチームから実際にrootになるためのアクセス権を取得することは、私が理解しているようにすぐにできるプロセスではないため、自分でインストールすることをお勧めします。
サーバーにソフトウェアをインストールするためにSudoがrootとは異なる動作をする理由は何ですか?
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でリセットされ、2、3、4で$ USERから取得されます。
したがって、スクリプト、または異なるオプションで起動されるプログラムは、異なる$PATH
、$HOME
を参照でき、シェルは異なる.bashrc
、.profile
および環境変数を読み取ることができます。 $HOME
に関連するファイルを読み取ります。各ユーザーは異なる方法で環境を変更できます(変数、$PATH
、. bashrc、.profile、.bash_profile、エイリアス...)。特に、ユーザーは自分の$PATH
でディレクトリの順序を変えることができ、その結果、スクリプトはコマンドを実行できます。代わりに、/home/$USER/bin
の代わりに、ルートから予期されるパスの1つを使用します。
Sudo -i
を使用してrootとしてログを記録したので、プログラムをsu -
で実行できますが、Sudo MyCommand
またはsu -c MyCommand
を使用して実行すると、動作が異なる場合があります。
man su
から:
説明部分では:
現在の環境は新しいシェルに渡されます。 $ PATH is resetの値は、通常のユーザーの場合は/ bin:/ usr/binに、スーパーユーザーの場合は/ sbin:/ bin:/ usr/sbin:/ usr/binに
...
オプション部分:
-、-l、-login
に似た環境ユーザーがユーザーに期待するであろう直接ログインを提供します。
男からSudo
-i、-login
ターゲットユーザーのパスワードデータベースエントリで指定されたシェルをログインシェルとして実行します。これは、.profileや.loginなどのログイン固有のリソースファイルがシェルによって読み取られることを意味します。コマンドが指定されている場合、そのコマンドはシェルの-cオプションを介して実行するためにシェルに渡されます。コマンドを指定しない場合、対話型シェルが実行されます。Sudo
は、シェルを実行する前に、そのユーザーのホームディレクトリへの変更を試みます。 コマンドは、ユーザーがログイン時に受け取る環境と同様の環境で実行されます。 sudoers(5)マニュアルの「コマンド環境」セクションには、sudoersポリシーが使用されているときにコマンドが実行される環境に-iオプションがどのように影響するかが記載されています。
@Hasturが指摘したように、ルートシェルを取得する場合はいくつかの違いがあります。
ルートシェルを取得していない場合は、さらに違いがあります。サポートメンバーは、Sudo patch -p0 < /root/patch.file
ここで、patch
はrootとして実行されますが、<
(ファイルからのパイピング)ではありません。
Sudoアクセスを使用すると、ログファイルが作成されると思いますが、ルートアクセスを介して直接実行すると、ログファイルは作成されません。
ルートアクセスをどの程度細かくしたいかによって異なります。システムで異なるタスクを実行する複数のユーザーがいる場合、Sudoがより理想的です。私が頻繁に使用する1つの例は、アプリケーションまたはデータベースを再起動する必要があることです。セキュリティは常に最低限の特権で実行するのが最善です。私はグループを使用し、それらのグループのみが明示的なアクションを実行できるようにします。このプロセスを説明した優れた本は、「Sudo Mastery:Real Access for Control for Real People」です。実はスドウ全般についての良い本です...