1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Linuxユーザーとグループ管理コマンド - ユーザ関連のID情報の確認とユーザーを切り替え

Posted at

ユーザ関連のID情報の確認

id コマンドを使用すると、ユーザのUIDやGIDなどの情報を調べることができます。

書式

id [OPTION]... [USER]

常用选项

  • -a # 詳細情報を表示(デフォルトオプション)
  • -Z または --context # セキュリティコンテキスト情報のみを表示(SELinuxを有効化する必要がある)
  • -g または --group # GIDのみを表示する、つまりメイングループIDのみ
  • -G または --groups # メイングループとサブグループのIDを表示、すなわち全グループID
  • -n または --name # ユーザー名またはグループ名を表示(-nu-ng-nGと組み合わせて使用)
  • -u または --user # UIDのみを表示する

id
uid=0(root) gid=0(root) groups=0(root)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

id -a
uid=0(root) gid=0(root) groups=0(root)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

id -nu
root

id postfix
uid=89(postfix) gid=89(postfix) groups=89(postfix),12(mail)

id -G postfix
89 12

id -nG postfix
postfix mail

ユーザーを切り替えたり他のユーザーとしてコマンドを実行する

もし現在ログインしている端末で特定のコマンドを実行したいが、現在のユーザーに実行権限がない場合や特定のリソースへのアクセス権限がない場合には、以下の方法が考えられます:

  1. 権限を持つユーザーが端末にログインし、操作を行う。
  2. 現在の端末で一時的に切り替えて、権限を持つユーザーの身分でコマンドを実行する。

su(スイッチユーザー)コマンドはユーザの身分を切り替えて、指定したユーザの身分でコマンドを実行するためのものです。

書式

su [options...] [-] [user [args...]]

常见选项

  • -m-p または --preserve-environment # 環境変数をリセットしない
  • -g または --group group # メイングループを指定(rootから一般ユーザーに切り替える場合のみ)
  • --l または --login # 完全にユーザーを切り替える
  • -c または --command command # ユーザーを切り替えずに特定のユーザーの権限でコマンドを一時的に実行
  • --session-command command # -cオプションと似ていますが、新しいセッションは作成しません
  • -f または --fast # シェルに -f(csh または tcsh用)を早めに渡す
  • -s または --shell shell # ユーザーを切り替えた後の新しい環境のシェルを指定します、/etc/shells に存在する必要があります
  • -P または --pty # 新しい端末を開く

ユーザーの切り替え方

su UserName # 非ログイン式の切り替え、ユーザーの設定ファイルを読み込まず、作業ディレクトリも変更しない

su - UserName # ログイン式の切り替え、ユーザーの設定ファイルを読み込み、ホームディレクトリに移動する

補足

rootが他のユーザにsuする際にはパスワードが不要ですが、rootでないユーザーが切り替える際にはパスワードが必要です。
注意点:suで新しいユーザに切り替えた後、元のユーザに戻る際にはexitを使用してください。再度suで元のユーザに切り替えると多くのbashサブプロセスが生成され、環境が混乱する可能性があります。

完全切り替えと非完全切り替えの違い

  • 非完全切り替えでは作業ディレクトリおよび環境変数PATHは変更されない。
  • 完全切り替えではユーザーのホームディレクトリに切り替わり、PATHが更新される。

例:

# 非完全切り替えの例
[jose@rocky8 ~]$ su root
Password:
[root@rocky8 jose]# pwd
/home/jose
[root@rocky8 jose]# echo $PATH
/home/jose/.local/bin:/home/jose/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

# 完全切り替えの例
[jose@rocky8 ~]$ su - root
Password:
[root@rocky8 ~]# pwd
/root
[root@rocky8 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

ユーザーを切り替えずに他のユーザーの権限でコマンドを実行する

一時的にユーザーを切り替えずに、他のユーザーの権限で直接コマンドを実行することもできます。例えば:

# suを使用して、ユーザーを切り替えてからjoseとしてファイルを作成する
[root@rocky8 ~]# su - jose
[jose@rocky8 ~]$ touch jose-1.txt
[jose@rocky8 ~]$ exit
logout

# 3ステップを1ステップにする
[root@rocky8 ~]# su - jose -c "touch jose-2.txt"
[root@rocky8 ~]# ls -l /home/jose/jose*
-rw-rw-r--. 1 jose jose 0 Jun 25 16:14 /home/jose/jose-1.txt
-rw-rw-r--. 1 jose jose 0 Jun 25 16:16 /home/jose/jose-2.txt
[root@rocky8 ~]# su - jose
[jose@rocky8 ~]$ id
uid=1000(jose) gid=1000(jose) groups=1000(jose)
[jose@rocky8 ~]$ exit
logout

# 3ステップを1ステップにする
[root@rocky8 ~]# su - jose -c "id"
uid=1000(jose) gid=1000(jose) groups=1000(jose)

/sbin/nologin や Ubuntuの /bin/false シェルを利用しているユーザーは、通常の方法で切り替えることはできませんが、切り替え可能なシェルを指定することで、一時的に切り替えることができます。

例:

[root@rocky8 ~]# getent passwd mysql
mysql:x:336:336::/data/mysql:/sbin/nologin
[root@rocky8 ~]# su - mysql
This account is currently not available.
[root@rocky8 ~]# su - mysql -c "echo nologin"
This account is currently not available.
# ただし、利用可能なシェルを指定することで一時的に切り替えることができる
[root@rocky8 ~]# su - mysql -s /bin/bash
[mysql@rocky8 ~]$ id
uid=336(mysql) gid=336(mysql) groups=336(mysql)
[root@rocky8 ~]# su - mysql -s /bin/bash -c "echo nologin"
nologin
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?