概要
Linux学習で覚えたコマンドや知識をメモする記事です。
コマンドはLinux覚え書きコマンド集にまとめています
ユーザ管理
グループとユーザを適切に管理することで、ファイルやプログラムなどを必要なユーザのみ参照・編集する権限を与えることが出来ます。
グループやユーザの編集を行う場合は、管理者であるrootユーザで実行する必要があります。
# で始まる場合はroot権限
$ で始まる場合は一般ユーザ
ユーザ
ユーザは**/etc/passwd**に定義されている。基本はコマンドで編集する。
パスワードファイルの内容
account:password:UID:GID:GECOS:directory:shell
項目 | 内容 |
---|---|
account | ユーザ名(大文字は含めない) |
password | パスワード('x'で表示される) |
UID | ユーザID番号 |
GID | プライマリグループID |
GECOS | ユーザ名またはコメント |
directory | ホームディレクトリ |
shell | ログイン時に起動されるコマンドインタプリタ |
ユーザを追加
useradd ユーザ名
<オプション>
オプション | 説明 |
---|---|
-c [コメント] | コメント追加 |
-g [グループ名] | プライマリグループを指定 |
-G [グループ名] | 補助グループを指定 |
-d | ホームディレクトリを指定 |
-s | シェルを指定(デフォルト /bin/bash) |
-u | ユーザID |
ユーザの変更
usermod ユーザ名
<オプション>
オプション | 説明 |
---|---|
-c [コメント] | コメント追加 |
-g [グループ名] | プライマリグループを指定 |
-G [グループ名] | 補助グループを指定 |
-l [ユーザ名] | ユーザ名を変更する |
-u [ユーザID] | ユーザIDを変更 |
ユーザの削除
userdel ユーザ名
<オプション>
| オプション | 説明 |
| -r | ホームディレクトリを削除
グループ
グループファイルの内容
group_name:password:GID:user_list
項目 | 内容 |
---|---|
group_name | グループの名前 |
password | パスワードが不要なら空欄 |
GID | グループID |
GECOS | ユーザ名またはコメント |
user_list | グループに所属するユーザ |
ユーザは**/etc/group**に定義されている。基本はコマンドで編集する。
グループの作成
groupadd グループ名
<オプション>
オプション | 説明 |
---|---|
-g [グループID] | グループIDを指定 |
グループ情報の変更
groupmod [-g gid] [-n new-group-name] 変更対象のグループ
<オプション>
オプション | 説明 |
---|---|
-n | 既存グループ名の変更をする場合に指定 |
-g | 既存グループIDを変更 |
グループ情報の削除
groupdel グループ名
パスワード
ユーザを利用するにはパスワードが必要。パスワードは**/etc/shadow**に暗号化されて記録される。
passwd [ユーザ名]
シャドウファイル
account:password:last_changed:may_be_changed:must_be_changed:warned:expires:disabled:reserved
項目 | 内容 |
---|---|
account | ユーザ名 |
password | 暗号化されたパスワード |
last_changed | 1970/1/1から最後にパスワードが変更された日までの日数 |
may_be_changed | パスワードが変更可能になる日数 |
must_be_changed | パスワードの変更しなくてはいけない日までの日数 |
warned | 警告を受ける日数 |
expires | パスワード有効期限が過ぎ、使用不能になるまでの日数 |
disabled | 1970/1/1からアカウントが使用不能になる日までの日数 |
reserved | 予約フィールド |
特殊なユーザ
一般ユーザ
アカウントを作成すると、ユーザ名と同じのグループが作られ、ユーザはそのユーザグループに所属します。
グループを利用することで以下のようなことが行えます。
- ある特定のディレクトリにアクセスできるグループの作成
- 特定グループに所属しているユーザのみrootユーザになることができる運用
rootユーザ
rootユーザはシステムの変更やプログラムのインストール、ユーザ作成などが行える(利用制限のないユーザ)です。
su コマンド
別ユーザでログインしているユーザが、一時的に他のユーザになる為のコマンド。
ユーザを指定しない場合はrootユーザでシェルを起動する。
オプションなしで実行した場合、カレントディレクトリを変更しないでログインします。
rootの帆無ディレクトリに変更したい場合は、以下のように実行する
su -
su -root
su コマンドを利用することでrootユーザで作業を開始した時間などが履歴に残るため、管理面を考える
sudoコマンド
sudoコマンドを利用することで、rootユーザでコマンドを実行することができる。
su コマンドはユーザを切り替えるが、sudoコマンドは切り替えることなく実行が可能。
sudo コマンド
オプション | 説明 |
---|---|
-u [ユーザ名] | 指定したユーザでコマンドを実行 |
用途別
一般ユーザにsudo権限を付与
以下の方法で、特定のユーザをwheelグループに追加し、sudoコマンドを実行時にPWの入力を不要とする。
su # rootに変更
usermod -G wheel <username> # wheelグループに<username>を追加
vigr # wheelグループにユーザが追加されているか確認
visudo # wheelグループを有効に変更(%wheel ALL=(ALL) NOPASSWD: ALL)
アクセス権
ユーザとグループを変更する場合は、rootユーザで実行する必要がある。
ファイルは以下の3つの権限レベルが存在する
- ファイルを所有するユーザ
- ファイル所有グループからファイル所有者を除いたユーザ
- その他のユーザ
権限レベルごとに 読み・書き・実行の権限が存在する
それぞれの権限を確認するには以下のコマンドを実行する
ls -l
#d rwxrwxrwx <所有者><所有グループ><バイトサイズ><更新日><ファイル名> # ユーザ , グループ, その他
項目 | 説明 |
---|---|
r | 読み込み |
w | 書き込み |
x | 実行またはディレクトリの移動 |
8進数表記は、付与したい権限を合計する
項目 | 数値 |
---|---|
r | 4 |
w | 2 |
x | 1 |
chmod :アクセス権の変更
chmod モード[, モード]... ディレクトリ/ファイル
chmod 8進数表記のモード ディレクトリ/ファイル
chown :所有者の変更
chown ユーザ[. グループ] ディレクトリorファイル
オプション | 説明 |
---|---|
-R | ディレクトリの中のファイルも再帰的に変更する |
chgrp :所有グループの変更
chgrp グループ ディレクトリ
オプション | 説明 |
---|---|
-R | ディレクトリの中のファイルも再帰的に変更する |
特殊な属性(setuid, setgid, sticky)
setuid/setgid 付与されていると所有者/所有グループの権限で実行される
例) 一般ユーザがrootユーザ所有のsetuidがセットされたプログラムを実行
→ rootユーザが実行した場合と同じ動作になる
stickyが付与されたディレクトリ内のファイルは所有者以外削除できなくなる
一般的には/tempディレクトリに付与される
作成時のデフォルト
CentS7は/etc/login.defsに記載されている
umaskを利用することで、デフォルトのモードから変更してファイルを作成出来る
umask [8進数のモードのマスク値]