知っておくとちょっと便利!ファイルのパーミッションについて2

今号では、前回紹介しきれなかったファイルのパーミッションについて、もう少し深堀りして見ていきます!<br/ >

パーミッションの変更方法

ファイルやディレクトリのパーミッションは、chmod コマンドで変更することができます。
chmod コマンドでは、読み取り・書き込み・実行 の権限を、Owner (所有者)・グループ・他のユーザに対して設定できます。

パーミッションの指定方法には 2種類あり、記号 (アルファベット) もしくは数値 (8進数) で指定することができます。

①記号で指定する場合
各権限を、下記のようにあらわします。

  • 読み取り:r
  • 書き込み:w
  • 実行:x

ユーザの種類を、下記のようにあらわします。

  • Owner:u
  • グループ:g
  • その他のユーザ:o
  • 全員 (u + g + o):a

さらに、権限を付与する場合は +、権限を削除する場合は -、権限を完全に指定する場合は = を使用します。

■ 例1:Owner (u) に実行 (x) 権限を付与 (u+x)

$ chmod u+x test.txt

■ 例2:グループ (g) とその他のユーザ (o) から書き込み (w) 権限を削除 (go-w)

$ chmod go-w test.txt

■ 例3:全員 (a) に読み取り (r) 権限のみを付与 (a=r)

$ chmod a=r test.txt

②数値で指定する場合
各権限を、下記のようにあらわします。

  • 読み取り:4
  • 書き込み:2
  • 実行:1

■ 例4:Owner に読み取り・書き込み・実行権限を付与、グループとその他のユーザには読み取り・実行権限を付与 (chmod 755)

$ chmod 755 test.txt
  • Owner (所有者):読み取り・書き込み・実行 (4 + 2 + 1 = 7)
  • グループ:読み取り・実行 (4 + 1 = 5)
  • 他のユーザ:読み取り・実行 (4 + 1 = 5)

■ 例5:Owner に読み取り・書き込み権限を付与、グループとその他のユーザには読み取り権限のみ付与 (chmod 644)

$ chmod 644 test.txt
$ ls -l test.txt
-rw-r--r--. 1 ykaino ykaino-group 0 Mar 24 12:00 test.txt
  • Owner (所有者):読み取り・書き込み (4 + 2 = 6)
  • グループ:読み取りのみ (4)
  • 他のユーザ:読み取りのみ (4)

のように、それぞれ権限が付与されます。

特殊なパーミッション

上記でご紹介した読み取り (r)・書き込み (w)・実行 (x) に加え、特定の要件がある場合に使用する「特別な権限」について説明します。

  • SetUID (s):実行時「実行したユーザ」ではなく、「所有者の権限」で動作する
  • SetGID (s):実行時「グループの権限」で動作する。ディレクトリの場合、中に作成されるファイルのグループが親ディレクトリと同じになる
  • Sticky Bit (t):ディレクトリに指定すると、所有者以外は中のファイルを削除できないようになる

■ SetUID の使用例
ユーザが自分の権限ではできない操作を、一時的に「所有者の権限」で実行できるようになります。

例えば、パスワードの変更 (passwd コマンド) は、実行時 /etc/shadow を変更する必要がありますが、この操作は root しかできないため、passwd コマンド (/usr/bin/passwd) に SetUID を設定することで可能にしています。

下記の様に、Owner の実行権限が s になっています。

$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 33544 Dec 13  2019 /usr/bin/passwd

■ SetGID の使用例
ディレクトリに設定すると、中に誰がファイルを作成してもすべて親ディレクトリのグループが設定されます。

例えば、特定のディレクトリ配下をチームの共有ディレクトリとする場合に便利です。

下記の様に、グループの実行権限が s になっています。

$ chmod g+s share_directory/
$ ls -ld share_directory/
drwxrwsr-x. 2 ykaino ykaino 6 Apr 13 20:09 share_directory/

■ Sticky Bit の使用例
他のユーザがアクセス可能なファイルやディレクトリを、誤って削除しないようにするために使用します。

例えば、/tmp ディレクトリでは誰でもファイルを作成できますが、所有者しか削除できないようになっています。

下記の様に、その他のユーザの実行権限が t になっています。

$ ls -ld /tmp
drwxrwxrwt. 8 root root 172 Apr 13 20:05 /tmp
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です