Linuxの特殊なパーミッション

Linuxサーバの構築などを行っていると、あまり見かけない特殊なパーミッションを見ることがあります。普通のファイルやフォルダに付いているパーミッションは、「-rwxr-xr-x」ようにr、w、xで構成されています。あまり見かけない特殊なパーミッションとは、「-rwsr-xr-x」「drwxrwsr-x」「drwxrwxrwt」のことで見る度に調べては、すぐにその内容を忘れてしまうのでまとめておこうと思います。

特殊なパーミッション

特殊なパーミッションは、次のように3種類です。また、「sgid」については、設定対象がファイルとフォルダなので使用方法としては、4パターンあります。

パーミッション 記号 8進数 設定対象
suid s 4000 実行可能ファイル
sgid s 2000 実行可能ファイル、ディレクトリ
sticy t 1000 ディレクトリ

suidを実行可能ファイルに設定する場合

suidが設定された実行可能ファイルを実行すると、実行可能ファイルの所有ユーザ権限で動作します。例えば、rootの所有ファイルで所有ユーザのみ読み書きできるファイルがあるとします。この場合、「cat」コマンドでこのファイルを見ようとしても見ることができません。

user01@debian:~$ ls -l /bin/cat
-rwxr-xr-x 1 root root 17156 2007-01-31 03:51 /bin/cat

user01@debian:~$ ls -l /etc/shadow
-rw-r----- 1 root shadow 655 2008-06-18 10:23 /etc/shadow

user01@debian:~$ cat /etc/shadow
cat: /etc/shadow: 許可がありません

ところが、「cat」コマンドにsuidを設定すると先のファイルが読めるようになります。

debian:~# chmod 4755 /bin/cat

debian:~# ls -l /bin/cat
-rwsr-xr-x 1 root root 17156 2007-01-31 03:51 /bin/cat

sgidを実行可能ファイルに設定する場合

基本的な使い方は、suidと同じなのですが、sgidの場合には、実行可能ファイルを実行すると実行可能ファイルの所有グループ権限で動作します。sgidの設定は、次のようにします。

user01@debian:~$ ls -l /bin/program
-rwxr-xr-x 1 root root 17156 2007-01-31 03:51 /bin/program

debian:~# chmod 2755 /bin/program

debian:~# ls -l /bin/program
-rwxr-sr-x 1 root root 17156 2007-01-31 03:51 /bin/program

sgidをディレクトリに設定する場合

sgidが設定されているディレクトリにファイルを作成すると、ファイルの所有グループがディレクトリの所有グループに置き換わります。そのため、sgidが設定されているディレクトリの所有グループに所属するユーザ同士では、互いの作成したファイルの編集が出きるようになります。数人でファイル共有し、他のユーザからのアクセス制限をする場合に便利です。sgidの設定は、次のようにします。

debian:~# ls -ld /home/user01/directory
drwxr-xr-x 2 user01 share 4096 2008-08-08 17:08 /home/user01/directory

debian:~# chmod 2755 /home/user01/directory

debian:~# ls -ld /home/user01/directory
drwxr-sr-x 2 user01 share 4096 2008-08-08 17:08 /home/user01/directory

stickyをディレクトリに設定する場合

stickyが設定されているディレクトリでは、自分が作成したファイルの削除はできるが、他のユーザが作成したファイルの削除は、できなくなります。設定は、次のようにします。

debian:~# ls -l /home/user01/directory
drwxr-xr-x 2 user01 user01 4096 2008-08-08 17:28 /home/user01/directory

debian:~# chmod 1777 /home/user01/directory

debian:~# ls -ld /home/user01/directory
drwxrwxrwt 2 user01 user01 4096 2008-08-08 17:28 /home/user01/directory

特殊なパーミッションのファイルやディレクトリの検索

特殊なパーミッションを多くのファイルやディレクトリに設定するとセキュリティなどの面で管理が大変になります。これらのファイルをやディレクトリを検索するには、「find」コマンドを使用します。実行するコマンドは、上から順にsuid、sgid、stickyが設定されているファイルやディレクトリを検索できます。

find / -perm -4000 -exec ls -l {} \;
find / -perm -2000 -exec ls -l {} \;
find / -perm -1000 -exec ls -l {} \;
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする