UID(ユーザ ID)
- root: 0
- 一般ユーザ: 1~
一般ユーザ
- 個人ユーザ(UID: 1~499): OS にログインして作業するユーザ
- システムユーザ(UID: 500~): アプリケーションの実行プロセス
GID(グループ ID)
- プライマリグループ
- セカンダリグループ
パーミッション
ファイル / ディレクトリには、それを作成したユーザの UID と プライマリグループの GID が
オーナー情報として設定される。
一般的には所有者(ユーザ)へ rwx 、所有グループへ r-x 、その他ユーザへ r-- が設定される。
ファイル / ディレクトリのアクセス権限は多くの場合、
どのユーザ(UID)でファイル / ディレクトリへアクセスしようとしているかで決まる。
- r: 読み取り権限
- w: 書き込み権限
- x: 実行権限
- -: 権限がないことを表す。
特殊なパーミッション
s
- setuid: ファイルを実行すると、実行プロセスのオーナーがファイルオーナーと同じになる。
- setgid: ディレクトリ内にファイル / ディレクトリを作成すると、
所有グループが親ディレクトリと同じ GID になる。
特定グループに所属するユーザ同士でファイルを共有する際に使用する。
t
- sticky: ディレクトリ内のファイル / ディレクトリの削除 / リネームは、
その所有者と root ユーザのみに許可される。
万人が読み書き可能だが、削除やリネームは自由にできない共有ファイルを作ることができる。
コマンド
useradd, adduser
新規ユーザを作成する。
OS によってコマンド名が違うっぽい。(未検証)
userdel
既存のユーザを削除する。
usermod
既存ユーザの情報を変更する。(所属グループの変更等)
id [ユーザ名]
指定したユーザ名に対応する UID と所属グループ(GID)の情報を表示する。
ユーザ名を指定しない場合、コマンドを実行したユーザ自身の情報が表示される。
groupadd
新規グループを作成する。
groupdel
既存のグループを削除する。
passwd <ユーザ名>
ログインパスワードを設定する。
chage
パスワードの有効期限を設定する。
mkpasswd, pwgen
ランダムなパスワードを生成する。 OS によって使用できるコマンドが違う?
mkpasswd は CentOS、 pwgen は MacOS と Ubuntu で使用できるらしい。
mkpasswd については @IT を参照。
なお JM Project で検索すると
同じ名前の違う機能を持つコマンドがヒットする。
chmod
ファイル / ディレクトリのパーミッションを変更する。
chown
ファイル / ディレクトリの所有者 / 所有グループを変更する。
umask
ファイル / ディレクトリの新規作成時に適用するパーミッションを設定する。
chsh
ログインシェルを変更する。
/etc/shells に記載されているシェルにのみ変更することができる。
設定ファイル
/etc/skel
ユーザ作成時にホームディレクトリへコピーするファイル群を定義する。
/etc/passwd
UID をはじめとする基本情報が記録される。
/etc/shadow
暗号化されたパスワードが記録される。
/etc/group
セカンダリグループのユーザ名が記録される。
/etc/shells
使用可能なシェル名が記録されている。