published: 2022/5/20 update: 2022/5/20
bashのpermission関連について、すぐ忘れてしまうのでまとめておきます。
ls -l
コマンドで見れる。
よく見るのは以下のような出力
#|u||g||a|
-rwxrwxrwx
drwxrwx---
|rw-rw----
そのファイルの種類を示している。
記号 | 意味 |
---|---|
- | ファイル |
d | ディレクトリ |
| | シンボリックリンク |
ファイル種別以外の部分は、それぞれの範囲でどのパーミッションがあるのかを示している。
範囲 | 意味 |
---|---|
[2, 4] | 所有者の権限 |
[5, 7] | 所有グループの権限 |
[8, 10] | その他 |
記号 | 意味 |
---|---|
r | 読み取り権限 |
w | 書き込み権限 |
x | 実行権限 |
s | SUIDかSGID |
t | スティッキービート |
SUID (Set User ID)
: 指定したユーザーの権限でファイルが実行される。SGID (Set Group ID)
: 指定したグループの権限でファイルが実行される。ディレクトリ内部で作成されたファイルはすべてディレクトリのSGIDで指定したグループが割り当てられる。スティッキービート
: 自身のファイル以外の削除を行えない。ただし書き込みは行える。chmod --help
# Usage: chmod [OPTION]... MODE[,MODE]... FILE...
# or: chmod [OPTION]... OCTAL-MODE FILE...
# or: chmod [OPTION]... --reference=RFILE FILE...
# Change the mode of each FILE to MODE.
# With --reference, change the mode of each FILE to that of RFILE.
#
# -c, --changes like verbose but report only when a change is made
# -f, --silent, --quiet suppress most error messages
# -v, --verbose output a diagnostic for every file processed
# --no-preserve-root do not treat '/' specially (the default)
# --preserve-root fail to operate recursively on '/'
# --reference=RFILE use RFILE's mode instead of MODE values
# -R, --recursive change files and directories recursively
# --help display this help and exit
# --version output version information and exit
#
# Each MODE is of the form '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'.
#
# GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
# Full documentation at: <http://www.gnu.org/software/coreutils/chmod>
# or available locally via: info '(coreutils) chmod invocation'
それぞれの権限には値が割り当てられている。その数字の和を指定することで権限を設定できる。基本的に3桁の数字で指定して、1桁目が所有者、2桁目がグループ、3桁目がその他のパーミッションの設定となる。
権限 | 値 |
---|---|
読み取り権限 (r ) | 4 |
書き込み権限 (w ) | 2 |
実行権限 (x ) | 1 |
例
-rwxrw-r--
: chmod 764 file
-rwxrwxrxw
: chmod 777 file
-rw-rw----
: chmod 660 file
また、SUID、SGID、スティッキービートを指定する場合は少し特殊で、4桁の数字を使って指定することになる。この場合、1桁目がSUID、SGID、スティッキービートのどれかの値、2桁目が所有者、3桁目がグループ、4桁目がその他のパーミッションの設定となる。
権限 | 値 |
---|---|
SUID (s) | 2 |
SGID (s) | 4 |
スティッキービート (t) | 1 |
例
-rwsr-xr-x
: chmod 4755 file
drwxr-sr-x
: chmod 2755 dir
drwxrwxrxt
: chmod 1777 dir
数字の代わりに、変更対象、変更方法、変更内容を指定する。
指定の仕方は以下の通り。
変更対象 | 意味 |
---|---|
u | 所有者 |
g | 所有グループ |
a | その他 |
変更方法 | 意味 |
---|---|
+ | 権限を付与 |
- | 権限を削除 |
= | 指定した権限にする |
変更内容 | 意味 |
---|---|
r | 読み取り権限 |
w | 書き込み権限 |
x | 実行権限 |
s | SUIDかSGID |
t | スティッキービート |
例
chmod u+x file
chmod u+x,g+x file
chmod a-wx file
chmod u+s file
chmod g+s file
chmod a+t dir
chmod -R 755 .
find
を使う。-exec
よりxargs
を使うほうが推奨されているらしい(参考: findコマンドで-execオプションを使用する時の最後の「 ;」ってなんだっけ?)。
# dir
find . -type d | xargs chmod 755
# file
find . -type f | xargs chmod 755
# 特定拡張子
find . -name '*.sh' | xargs chmod 755
あるディレクトリにおいて作成されるファイルに常に同じパーミッションを割り当てたくなる時がある。その場合はumask
コマンドが使える
umask
コマンドは、付与しない権限を指定する。ディレクトリの場合は実行可能の設定は可能だが、ファイルの場合は実行可能に設定することはできないため、ファイルを実行可能にする場合は、後からchmodコマンドで指定する必要がある。
chmod
と同様に数字の和で権限を指定する。
付与しない権限 | 値 |
---|---|
読み取り権限 (r ) | 4 |
書き込み権限 (w ) | 2 |
実行権限 (x ) | 1 |
例
-rwxr-xr-x
: umask 022
-rw-rw----
: umask 117
umask -S 変更対象=変更内容
でアルファベットで指定することもできる。この場合も、付与しない権限を指定することに注意する。
-rwxr-xr-x
: umask g=x,a=x
-rw-rw----
: umask u=x,g=x,a=rwx
あまりちゃんと理解できていない
通常のパーミッションとは別に、MAC (Mandatory Access Control)を追加することで従来のLinuxの権限より粒度の小さい権限を設定することが可能。
SELinux (Security-Enhanced Linux) は Linux カーネルに MAC (Mandatory Access Control) を追加するもので、標準の Discretionary Access Controls (DAC: 任意アクセス制御) がチェックされた後で許可された操作をチェックします。これは米国国家安全保障局 (National Security Agency) が開発したもので、定義されたポリシーを基に Linx システム内のファイルやプロセスおよびその他のアクションにルールを強制できます。
SELinuxの権限はls -Z
やps -Z
で確認することができる。
モード | 説明 |
---|---|
Enforcing | SELinux 有効。ルール外の動作があれば止める。 |
Permissive | SELinux 有効。ただしルール外の動作はログに記録するのみ。 |
Disable | SELinux 無効。 |
動作モードの確認・設定
# 確認
getenforce
# Enforcing
# 設定
setenforce Permissive
ボリュームを指定する際に:z
か:Z
の接尾語を使用することで共有コンテントとラベルをDockerに伝えることで、privateかつ個別にボリュームを指定できる(参考: Docker-docs-ja)。
記事に間違い等ありましたら、お気軽に以下までご連絡ください
E-mail: illumination.k.27|gmail.com ("|" replaced to "@")
Twitter: @illuminationK
当HPを応援してくれる方は下のリンクからお布施をいただけると非常に励みになります。
Ofuse当HPを応援してくれる方は下のリンクからお布施をいただけると非常に励みになります。
Ofuseディレクトリのデフォルトパーミッションの設定 (umask)
当HPを応援してくれる方は下のリンクからお布施をいただけると非常に励みになります。
OfuseCopyright © illumination-k 2020-2022.