質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

10184閲覧

suとloginの違いが分かりません

mint.cherry

総合スコア284

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

4クリップ

投稿2016/01/27 08:10

質問はタイトル通りです。

(whoコマンドの出力は少し省いてます)

root@hostname#su test test@hostname$who
root@hostname#login test pass: test@hostname$who test

loginしたときとsuで変わったときの違いが分かりません。
恥ずかしながら、loginしたから何が変わったんだろうぐらいの感じです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

loginコマンドは、今のユーザーでいったんログアウトしてから別ユーザーでログインし直したのと同じです。

suコマンドは一時的に別ユーザーにスイッチします(switch user)。具体的には、別ユーザーでシェル(例えばbash)を起動します。なのでbashからexitすれば元のユーザーでログインしていた状態に戻ります。

また、su testsu - testというのは違う動きをして、su testだとログイン処理をしません。具体的には、/etc/profile~test/.bash_profileを読みません。su - testだとログイン処理をします。
なお、su testでも/etc/bashrc~test/.bashrcは読みます。

まとめると、お書きの例では、
login test:
⇒rootのログアウト処理を行う。その後、testのログイン処理を行う

su test
⇒一時的にtestユーザーになる。testのログイン処理は行わない。exitするとrootユーザーに戻る。

投稿2016/01/27 12:04

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mint.cherry

2016/01/28 02:24

回答ありがとうございます。(長文すいません) 最初に環境を言いますm(__)m vpsでレンタルサーバ借りています:ubuntu16.04 development ssh接続 >loginコマンドは、今のユーザーでいったんログアウトしてから別ユーザーでログインし直したのと同じです 以下の結果から今のユーザーはログアウトされていないかもしれません。 [user-A@hostname:~$sudo login test]コマンドを打ちましてtestユーザでログインした後にwho,loginctlコマンドをそれぞれ実行しました。 user-Aはssh接続の際に使用しました。 ----------------------------------------------------------------------------- #loginctl SESSION UID USER SEAT c1 1000 user-A seat0 93 1000 user-A 2 sessions listed. #who user-A tty1 Jan 26 17:54 user-A pts/0 Jan 28 09:54 ([IPaddress]) test pts/0 Jan 28 10:22 ----------------------------------------------------------------------------- loginctlではtestユーザーがいない whoコマンドではもともとのuser-Aがログインしたままtestユーザーがログインしています。 > su - testだとログイン処理をします。 [login [username]]コマンドと[su - [username]]コマンドは同じと捉えています。 2つの方法で検証しました。 ・[login test],[su - test]の両方検証してwhoコマンドで試した結果testユーザーがログインされているのはloginコマンドだけでした。 この結果だと[su -]はログインされていない。 ※whoコマンドは現在のログインされているユーザーを表示と学んでいます ・[su test],[su - test]の両方検証してlogoutコマンドを試しました。 [su test]は[bash: logout: not login shell: use `exit`] [su - test]はログアウトできました。 この結果だと[su -]のほうはloginされていることがわかります。
otn

2016/01/28 13:22

> 以下の結果から今のユーザーはログアウトされていないかもしれません。 プロンプトと入力したコマンドが混じっていて、わかりにくいです。 sudo login test と打ったら、login test じゃないので、ログアウトはしません。 > この結果だと[su -]はログインされていない。 su - test は、あくまでswitch userコマンド(一時的にユーザーを変える)なので、loginコマンドでログインするのとは違います。「具体的には、別ユーザーでシェルを起動します」と書いた通り、サブシェルを起動しただけです。起動したサブシェルがログインシェルと同じ処理をします。サブシェルがログインシェルと同じ処理をすることを指して「ログイン処理をします」と書きましたが、あくまでシェルが行うログイン処理です。 loginコマンドによるログイン処理は、シェルを起動する前に端末関係の処理や、utmp や wtmp といったファイルにログインを行ったことの記録を行うなどします。 whoコマンドはutmpファイルを読んで、その情報を表示しますので、シェルのログイン処理だけでは反映されません。
guest

0

who でなく、 pwd を実行すると差がわかります。

login 直後に pwd を実行する
--> ユーザーの home directory が表示される。
ログイン直後は、常に home directory にいることになります。

cd /tmp などとしてから, su してから pwd を実行する。
--> /tmp が表示される。
su 直後は、directory は移動しません。

su コマンドでなく、sudo コマンドというのもあります。
root 権限が必要な操作をする場合、su よりは、sudo をつかうことが多いです。
ぜひ sudo についても学ぶとよいと思います。

投稿2016/01/27 22:26

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mint.cherry

2016/01/28 01:21 編集

回答ありがとうございます。sudoとsuコマンドは今まで大変お世話になっています。 一般ユーザでいちいちsudoやるのは少し手間がかかりますので、最初sudo suとコマンドを入れrootに変え作業していますm(__)m pwdコマンドについても知っていていますm(__)m [su -] と[login]の違いは何でしょうか?両者ともカレントディレクトリはそのユーザのhomeディレクトリに移動します。。。 ちなみにwhoコマンドでログイン状況をみたら、su - test のほうはtestユーザーはwhoコマンドで確認したらログインされたことになっていません。 loginコマンドのほうはwhoコマンドで確認した結果testユーザーがログインしていることになっています。 ログインするかしないかの違いのコマンドはわかります。私の考えではログインしたからなんだろうという感じです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問