【Linux】Linux ~ パーミッション / アクセス権限 ~

■ はじめに

Linux のパーミッション周りをメモ。

目次

【1】パーミッションの確認
 1)アクセス権限の見方
【2】アクセス権の変更
 1)コマンド例
【3】パーミッション例
 1)777
 2)755
 3)764
 4)666
 5)644
【4】ファイル/ディレクトリの所有者を変更する
 1)コマンド例

 【1】パーミッションの確認

ls -l

 1)アクセス権限の見方

d rwx rwx rwx
- --- --- ---
1  2   3   4

【項目】

 1) ファイル種別(ファイル(-)/ディレクトリ(d)/シンボリックリンク(l))
 2) 所有者(その対象物の所有者に対しての権限)
 3) 所有グループ(所有者が所属しているグループに対しての権限)
 4) その他(上記以外の利用者に対しての権限)

パーミッション

 * r : 読み込み権限 (Read)
 * w : 書き込み権限 (Write)
 * x : 実行権限     (eXecute)
 * - : 許可しない
 * s : SUID

 【2】アクセス権の変更

chmod : change mode? 

chmod [権限] [ディレクトリ/ファイル]

# [権限]は、「所有者」「所属グループ」「その他ユーザー」の順で指定

1)コマンド例

例1

# ファイル "startup.sh" を全てのユーザに読み/書き/実行権限を付与
chmod 777 startup.sh

例2

# ファイル "startup.sh" の権限を以下のように付与

chmod 755 startup.sh

 + その所有者は読み出せて、書き込めて、実行できる
 + そのグループは、読み出せて、実行できる(書き込みは不可)
 + その他のユーザは、読み出せて、実行できる(書き込みは不可)

例3

# ディレクトリ "tomcat" およびその配下のディレクトリ・ファイルを
# 全てのユーザに読み/書き/実行権限を付与

chmod -R 777 tomcat

例4

# 実行権限を付ける

chmod +x /etc/init.d/tomcat

例5

# u(所有者に)+(権限を与える)x(実行権限)

chmod u+x /etc/init.d/tomcat

# u(所有者に)-(権限を外す)x(実行権限)

chmod u-x /etc/init.d/tomcat

 【3】パーミッション

1)777

 * 全てのユーザに対して、読み書き実行可能

4(r)+ 2(w)+ 1(x)= 7 

使用上の注意
https://techtarget.itmedia.co.jp/tt/news/2207/06/news01.html

より抜粋
~~~~~~~~~~~~~~
Linuxで「777」を設定してはいけない理由

chmodで「777」のパーミッションを設定するのは避けた方がよい。それは
 ・匿名ユーザーであっても、ファイルの実行を許可することになる
からだ。
777のパーミッションは、攻撃者がWebサーバに不正侵入するのを
許容してしまう。
エンドユーザーが、本来は扱うことができないファイルを
気付かずに編集、実行してしまうリスクももたらす。
~~~~~~~~~~~~~~

2)755

 * 誰でも読込みと実行はできるが、書き込みは自分だけ
 (例えば「スクリプト」「ディレクトリ」)

3)764

https://techtarget.itmedia.co.jp/tt/news/2206/15/news02.html

より抜粋
~~~~~~~~~~~~~~
764は「nginx」などのWebサーバで利用する
アップロード用フォルダによく割り当てられるパーミッション
~~~~~~~~~~~~~~

4)666

 * 自分もグループメンバも他人も、読み書き可能

5)644

 * 自分は読み書き可能だが、
 グループメンバや他人は読み込みしかできない
 (例えば、「(静的な)HTMLファイル」「画像」などのリソース)

 【4】ファイル/ディレクトリの所有者を変更する

chown : change owner? 

chown -c [所有者]:[所有グループ] [ディレクトリ/ファイル]

1)コマンド例

例1

# ディレクトリ "tomcat" およびその配下のディレクトリ・ファイル所有者を
# ユーザadmin/にグループadmingroupに変更する

chmod -R -c admin:admingroup tomcat

関連記事

Linux ~ ユーザに関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/26/233349
Linux ~ 権限/所有 に関わるコマンド ~
https://dk521123.hatenablog.com/entry/2016/06/10/233349
sudoコマンド
https://dk521123.hatenablog.com/entry/2016/10/22/165317
ケーパビリティ(POSIX Capability)
https://dk521123.hatenablog.com/entry/2014/08/16/235803