【Linux】基本コマンド チートシート

個人的によく使う(忘れがちな) Linux コマンドのチートシート。

サーバ内のユーザ一覧を確認する

$ view /etc/passwd

補足

ユーザ情報は次のフォーマットに従って表示される。

ユーザ名:ログインパスワード:ユーザID:グループID:コメント(補足情報):ホームディレクトリ:ログインシェル

例えば、次のユーザの情報があったとして、

ec2-user:x:1000:1000:EC2 Default User:/home/ec2-user:/bin/bash

これをさきほどのフォーマットに当てはめ + 補足を加えて表にすると以下のようになる。

keyvaluenote
ユーザ名ec2-user
ログインパスワードxx の場合はパスワードの設定なし。
パスワードが設定されているユーザであれば、代わりにパスワードハッシュが表示される
ユーザID1000
グループID1000
コメントEC2 Default User
ホームディレクトリ/home/ec2-user
ログインシェル/bin/bashログインシェルなしの場合は、 /sbin/nologin が記載される。/sbin/nologin は apache, nginx, postfix などのユーザに指定されている。

サーバ内の別ユーザになりすます

以下の通りに実行する。

$ sudo -s
# /bin/su - --shell=/bin/sh apache
$ whoami
apache

補足

root user に昇格した状態で実行しないとパスワードを求められるため、パスワードがないユーザの場合は先に sudo -s して root user に昇格しておくこと。

su - --shell=/bin/sh apache の各要素は、それぞれ次の意味を持つ。

keyvalue
/bin/susu のフルパス。たまに root user に su のパスが通っていない場合があるため /bin/su としているが、パスが通っているならば su - --shell=/bin/sh apache でも良い。
-- を付与した場合は「現在のシェルの環境変数を全て解除」 + 「なりすまし先のユーザのホームディレクトリに移動」した状態で、次のユーザになりすます。
--shell=/bin/shログインシェルなし(/sbin/nologin)ユーザの場合は、これを指定しないとなりすましログインに失敗する。ログインシェルがあるユーザはこのオプションを省略して問題ない。
apacheなりすまし先のユーザ名。 apache の代わりに ec2-user を指定すれば、 ec2-user になりすますことになる。/etc/passwd に存在しないユーザは指定不可。
執筆日:
本記事のタグ