Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
566
Help us understand the problem. What is going on with this article?
@aosho235

suとsudoの違い

More than 5 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 にすでに含まれていた由緒正しいコマンド。

566
Help us understand the problem. What is going on with this article?
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
aosho235
1981年生まれ。駅すぱあとの会社で新規サービスを開発しています。好きなレイヤーはOS~ミドルウェア。好きなことは開発を楽にするためのツールやフレームワークの整備、自分自身が便利と思うものを作ること。新しいものを追うより、自分が自信を持って使える技術で効率的に開発するのが好き。そのため使うライブラリやサービスの挙動は仔細に把握しておきたいものです。
val
経路検索システム「駅すぱあと」をはじめ、全国のデータと高い信頼性をベースにさまざまなサービスを展開。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
566
Help us understand the problem. What is going on with this article?