ユーザーとグループを確認する
現在の情報COMMAND
whoami
id
groups表示例OUTPUT
mity
uid=1000(mity) gid=1000(mity) groups=1000(mity),27(sudo)
mity sudoLinuxはユーザーID(UID)とグループID(GID)で主体を識別します。名前は人が読みやすくする表示です。rootのUIDは0で、システム全体を操作できます。
権限表示を読む
練習ファイルCOMMAND
cd ~/linux-practice
printf '#!/bin/sh\necho hello\n' > hello.sh
ls -l hello.sh表示例OUTPUT
-rw-r--r-- 1 mity mity 21 Aug 29 12:00 hello.sh| 部分 | 意味 |
|---|---|
- | 通常ファイル。ディレクトリはd、リンクはl |
rw- | 所有者は読み取り・書き込み可能 |
r-- | グループは読み取りのみ |
r-- | その他も読み取りのみ |
mity mity | 所有ユーザーと所有グループ |
chmodで必要な権限を変更する
所有者へ実行権限を追加COMMAND
chmod u+x hello.sh
ls -l hello.sh
./hello.sh実行結果OUTPUT
-rwxr--r-- 1 mity mity 21 Aug 29 12:00 hello.sh
hellouは所有者、gはグループ、oはその他、aは全員です。+で追加、-で削除、=で指定どおりにします。
数値表記
r=4、w=2、x=1を足します。chmod 640 secret.txtは所有者rw-、グループr--、その他---です。
数値で設定COMMAND
touch secret.txt
chmod 640 secret.txt
stat -c '%A %a %n' secret.txt実行結果OUTPUT
-rw-r----- 640 secret.txt777を避ける
777は全員へ読み書き実行を許可します。原因を調べず設定すると改ざんにつながります。必要な主体へ必要な権限だけを与えます。ディレクトリのr・w・x
ディレクトリでは意味が変わります。rは名前一覧、wは項目の作成・削除、xは内部へ移動して項目へアクセスする権限です。ファイルが書き込み禁止でも、親ディレクトリにwとxがあれば削除できる場合があります。
非公開ディレクトリCOMMAND
mkdir -p private
chmod 700 private
stat -c '%A %a %n' private実行結果OUTPUT
drwx------ 700 private所有者とグループ
chownは所有者、chgrpは所有グループを変更します。通常、別ユーザーへの変更には管理者権限が必要です。
管理者が所有者を変更する例COMMAND
sudo chown alice:developers /srv/shared/report.txt
ls -l /srv/shared/report.txt表示例OUTPUT
-rw-r----- 1 alice developers 120 Aug 29 12:10 /srv/shared/report.txt例をそのまま実行しない ユーザー、グループ、パスが実在し、変更が必要だと確認できた管理対象でのみ実行します。
chown -Rは配下すべてを変えるため特に注意します。sudoを安全に使う
sudo commandは許可されたユーザーがその1コマンドを別ユーザー(通常root)として実行します。
許可の確認COMMAND
sudo -l表示例OUTPUT
User mity may run the following commands on host:
(ALL : ALL) ALL実行前の確認
- 一般ユーザーでは本当に実行できないか
- コマンド、オプション、対象パスを理解しているか
- ワイルドカードや変数が予想どおり展開されるか
- 設定ファイルならバックアップと復旧方法があるか
ミニ課題:共有しないメモ
personal.txtを作り、所有者だけが読み書きできるようにしてください。
解答例COMMAND
printf 'private memo\n' > personal.txt
chmod 600 personal.txt
stat -c '%A %a %n' personal.txt実行結果OUTPUT
-rw------- 600 personal.txt