目次
ユーザー/ユーザーグループ
一覧を確認したい
# ユーザーの一覧 $ cat /etc/passwd # ユーザー名:暗号化されたパスワード:ユーザーID:グループID:コメント:ホームディレクトリー:ログインシェル(ログインした際、最初に起動するシェル) fumi23:x:1061:1001::/home/fumi23:/bin/bash # ユーザーグループの一覧 $ cat /etc/group # グループ名:暗号化されたパスワード:グループID:サブグループとして所属しているユーザーアカウントのリスト (カンマ区切り) dev:x:1001:
追加/削除
# sudo 権限確認 $ grep sudo /etc/group sudo:x:27:fumi12,fumi23,fumi45 # ユーザーをグループに追加 # USER_NAME を、GROUP_NAME グループに追加する # sudo gpasswd -a {USER_NAME} {GROUP_NAME} $ sudo gpasswd -a fumi23 sudo # ユーザー削除 # -r (--remove): ユーザディレクトリも消す $ sudo userdel -r {USER_NAME}
ディスク容量/使用量を確認したい
# ファイルシステムの使用領域と空き領域を表示する $ df -h # 指定したディレクトリのディスク使用量を表示する $ du -sh /path/to/husky
圧縮・展開
# 圧縮: 前のはなくなる $ gzip husky-dump.sql # 展開: 前のはなくなる $ gzip -d husky-dump.sql.gz # アーカイブと圧縮: 前のはなくならない $ tar -cf husky.tar husky $ gzip husky.tar # 展開: 前のはなくならない $ tar -zxvf husky.tar.gz # zip 圧縮 $ zip -r /path/to/husky.zip /path/to/husky # zip 展開 $ unzip /path/to/husky.zip
転送
SCP
# サーバー => ローカル (踏み台サーバーを経由) $ scp -r -o "ProxyCommand ssh <ユーザー名>@<踏み台サーバー名> -W %h:%p" <ユーザー名>@<サーバー名>:<転送元: サーバー上のファイルパス> <転送先: ローカルのパス> $ scp -r -o "ProxyCommand ssh fumi23@fumidai-server -W %h:%p" fumi23@remote-server:/path/to/fumi23 ~/fumi23
SFTP
$ sftp <ユーザー名>@<サーバー名> # ローカル => サーバー sftp> put husky.tar.gz # サーバー => ローカル sftp> get husky.tar.gz # sftp をおしまいにする sftp> quit
サービス
起動/停止とか
# 起動 $ sudo systemctl start mysqld # 停止 $ sudo systemctl stop mysqld # 再起動 $ sudo systemctl restart mysqld # ステータス表示 $ systemctl status mysqld # 起動 $ sudo service nginx start # ステータス表示 $ sudo service nginx status
ログ見る
# 時間指定 $ journalctl -u {SERVICE_NAME} -S "2020-09-11 09:41:00" -U "2020-09-10 09:42:00" # 最近のやつ $ journalctl -u {SERVICE_NAME} -e # 末尾 n行分 $ journalctl -u {SERVICE_NAME} -n 100
ls -l
# . から始まるファイルも全部表示する $ ls -la # ファイルのパーミッション、所有ユーザ、所有グループ、ファイルサイズ、タイムスタンプ、ファイル名 -rw------- 1 fumi23 dev 1047 5月 30 16:20 .viminfo -rwxr-xr-x 1 root root 35359 5月 30 12:15 shiba.dog drwxrwxr-x 2 fumi23 dev 4096 4月 18 13:38 husky # 更新日の新しい順 $ ls -lt # 更新日の古い順 $ ls -ltr
su
# ユーザーを指定しないと root に切り替わる $ sudo su - # ユーザーを www-data に切り替える $ su -l -s /bin/bash www-data
-
-
,-l
,--login
-
切り替え後のユーザーの設定を使用する
-
-
なし -
カレントディレクトリも環境変数も、切り替え前ユーザーのものを引き継ぐ
-
-
あり -
カレントディレクトリも環境変数も、切り替え後のユーザーのデフォルトを使用する、切り替え前ユーザーのものは引き継がない
-
- -s
-
切り替え後のユーザーが使用するシェルを指定できる
sudo
$ sudo -iH
-H
-
環境変数「HOME」をrootユーザーのホームディレクトリに変更してコマンドを実行する
-i
-
rootユーザーのデフォルトのシェルをログインシェルとして実行する。コマンドを指定しなかった場合は対話シェルとなる。
-u
-
コマンドを実行するユーザーを指定する (指定しないと root)
sudoを実行するには、あらかじめ /etc/sudoers ファイルに権限を与えられるユーザーとコマンドを設定しておく必要がある。
最初に叩くコマンドまとめ
# メモリーの使用状況をMバイト単位で表示する $ free -m # ディストリビューションのバージョンを確認する $ cat /etc/redhat-release $ ls $ pwd $ ls /home $ df -h # パッケージキャッシュの削除 $ yum clean all # パッケージの更新 $ yum -y update
dev と devel の違い
- python-devel
-
RedHat (CentOS) 系
- python-dev
-
Debian (Ubuntu) 系
debconf-utils
-
パッケージインストール中の設定に関する質問への返答を、あらかじめ設定しておける
インストール中に質問されなくなる
設定しておいた返答が使用される
インストールを自動化するときに便利
SELinux
# 有効になっている $ sudo getenforce Enforcing # 無効にする $ sudo setenforce 0 # 無効になっている $ sudo getenforce Permissive
SELinux で拒否されたときのログは
/var/log/audit/audit.log
にある
メールのログ
-
一般的にメールのログは
/var/log/mail.log
にある検証用にローカルVMにpostfixを建てるなどした場合は、localhostの
/var/log/mail.log
にログがある
なにかしらのサーバーログを見たい場合はとりあえず (
sudo journalctl
) あたりでみる (/var/log/syslog
でもok)
未整理
source って同じシェル内でコマンド実行するんですけど、 sudo って別のシェルになるんで、 source した結果が引き継がれないんですよね
top: display Linux tasks
これはものすごく便利... (ありがとうございました) : https://explainshell.com/