Help us understand the problem. What is going on with this article?

suとsudoの違い

More than 3 years have passed since last update.

suとsudoはオプションの違いはあるものの、できることはほぼ重複している。
ただ、suは切替先ユーザー(root)のパスワードが要求されるのに対し、sudoは元のユーザーのパスワードが要求される。sudoは/etc/sudoersで権限を細かく設定できるので、どちらか片方だけ覚えるならsudoだけを覚えておくとよい。

オプションによって実行後のカレントディレクトリや環境変数が変わってきて、それでハマることがあるので違いをまとめておく。
(Amazon Linuxで確認。CentOSでもほぼ同じと思うが、他のディストリビューションでは違う可能性あり)

コマンド .bash_profile .bashrc pwd HOME PATH
su n y 変わらない /root /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin:/opt/aws/bin
su - y y /root /root /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
sudo -i y y /root /root /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
sudo -s n y 変わらない /root /sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin
sudo bash n y 変わらない /root /sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin
sudo bash --login y y 変わらない /root /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin

.bash_profileはログインシェルのときだけ読み込まれ、その中から.bashrcを読み込む。

  • できるだけ忠実にrootの環境を再現したいときはsu -かsudo -iを使うとよい
  • su -とsudo -iで$PATHの/usr/local/binが違う。/usr/local/binがどこで設定されているのか、/etc/bashrcや/etc/profile.dを探しても見つからなかったが、man suに書いてある

ENV_SUPATH (string)
Defines the PATH environment variable for root. The default value is >/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin.

が効いているのだろうか。そうだとするとコンソールからrootでログインしたときは/usr/local/binは含まれていないのだろうか。

「CentOSのsudoまとめ」も参照。
http://qiita.com/aosho235/items/bfb8034fbe1c84d7489f

雑学

sudo は sudo パッケージに含まれている。
su は util-linux パッケージに含まれている。
つまり開発元が別。ソースをちら見してみたら、全然別物のようだった。

useradd などを提供する shadow-utils パッケージ(の源流)にも su が含まれている。Debian 系ではこちらの su が使われているのだろうか?
http://pkg-shadow.alioth.debian.org/features.php

sudo は 1980 年頃 Robert Coggeshall と Cliff Spencer によって書かれた。
su は Version 1 Unix にすでに含まれていた由緒正しいコマンド。

aosho235
1981年生まれ。駅すぱあとの会社で新規サービスを開発しています。好きなものはOS~ミドルウェアのレイヤー、開発を楽にするためのツールやフレームワークの整備、自分自身が便利だと思うものを作ること。
https://aosho235.com/
val
経路検索システム「駅すぱあと」をはじめ、全国のデータと高い信頼性をベースにさまざまなサービスを展開。
https://www.val.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした