/Linuxコマンド

ユーザーと権限

ユーザーと sudo

whoami・id・sudo・su・useradd・passwd など、ユーザーと管理者権限を扱うコマンド。

whoami自分のユーザー名

今のユーザー名を表示します。

bash
$ whoami
alice

idユーザーIDと所属グループ

ユーザー ID と、所属しているグループを表示します。

bash
$ id
uid=1000(alice) gid=1000(alice) groups=1000(alice),27(sudo),999(docker)
$ id -nG           # グループ名だけ
$ id www-data      # 他のユーザー

groups所属グループの一覧

所属しているグループを一覧します。

bash
$ groups
alice sudo docker

sudo管理者として実行する

コマンドを管理者(root)の権限で実行します。

書き方意味
sudo <コマンド>root としてコマンドを実行する
sudo -iroot のログインシェルに入る
sudo -u <ユーザー> <コマンド>指定したユーザーとして実行する
sudo -E <コマンド>今の環境変数を引き継ぐ
sudo !!直前のコマンドを sudo 付きでやり直す
sudo -kパスワードの入力を忘れさせる
sudo -l自分に許可されている操作を表示する
bash
$ sudo apt update
$ sudo -u postgres psql
$ echo "127.0.0.1 dev.local" | sudo tee -a /etc/hosts

su別のユーザーに切り替える

別のユーザーに切り替えます。

bash
$ su - otheruser        # そのユーザーとしてログインし直す
$ sudo su -             # root になる(sudo -i とほぼ同じ)

useradd / adduserユーザーを作る

新しいユーザーを作ったり、ユーザーをグループに追加したりします。

bash
$ sudo adduser alice                     # 対話式で作る(Debian/Ubuntu 向け)
$ sudo useradd -m -s /bin/bash bob       # ホームを作り、シェルを bash に
$ sudo usermod -aG docker $USER          # 自分を docker グループに追加
$ sudo userdel -r bob                    # ホームごと削除

passwdパスワードを変える

パスワードを変更します。

bash
$ passwd                   # 自分のパスワード
$ sudo passwd alice        # 他のユーザーのパスワード

who / w / lastログインしている人と履歴

今ログインしている人や、ログインの履歴を表示します。

bash
$ who            # ログイン中のユーザー
$ w              # ログイン中のユーザーと実行中のもの
$ last -n 10     # 最近のログイン履歴

groupadd / gpasswdグループを作る・メンバーを管理する

グループを作ったり、メンバーを追加・削除したりします。

bash
$ sudo groupadd developers
$ sudo gpasswd -a alice developers      # 追加
$ sudo gpasswd -d alice developers      # 外す
$ getent group developers               # メンバーを確認

newgrpグループの追加をその場で反映する

グループへの追加を、ログインし直さずに反映します。

bash
$ newgrp docker          # ログインし直さずに docker グループを使える新しいシェル

visudosudo の設定を安全に編集する

sudo の設定を、書き間違いがないか確かめながら安全に編集します。

bash
$ sudo visudo                               # 書式の間違いがあると保存させない
$ sudo visudo -f /etc/sudoers.d/deploy
/etc/sudoers.d/deploy
# deploy ユーザーは nginx の再起動だけパスワードなしで実行できる
deploy ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx

getentユーザー・グループ・ホストを引く

ユーザー・グループ・ホスト名などの情報を調べます。

bash
$ getent passwd alice
$ getent group sudo
$ getent hosts example.com

chageパスワードの有効期限

パスワードの有効期限を確認・設定します。

bash
$ sudo chage -l alice          # 期限の確認
$ sudo chage -M 90 alice       # 90日ごとに変更させる