実行可能ファイルとディレクトリに使用できる 3 つの特別なアクセス許可があります。これらは:
<強い>1. SUID権限
2. SGID 権限
3.スティッキー ビット
ユーザー ID の設定 (SUID)
root 以外のユーザーが /etc/shadow ファイルへの書き込み権限を持っていないときに、自分のパスワードを変更する方法を考えたことはありますか。うーん…面白いですね。 /usr/bin/passwd コマンドのパーミッションのトリック チェックを理解するには:
# ls -lrt /usr/bin/passwd -r-sr-sr-x 1 root sys 31396 Jan 20 2014 /usr/bin/passwd
– よく確認すると、許可フィールドに 2 つの S があります。最初の s は SUID を表し、2 番目の s は SGID を表します。
– SUID ビットが設定されたコマンドまたはスクリプトが実行されると、その有効な UID は、ファイルを作成したユーザーではなく、ファイルの所有者のものになります。
– SUID のもう 1 つの良い例は、su コマンドです:
# ls -l /bin/su -rwsr-xr-x-x 1 root user 16384 Jan 12 2014 /bin/su
– 所有者の実行フィールドに「s」として表示される setuid パーミッション。
ファイルに SUID を設定する方法
# chmod 4555 [path_to_file]注 :
所有者の実行フィールドに大文字の「S」が表示される場合は、setuid ビットがオンであり、ファイルの所有者の実行ビット「x」がオフまたは拒否されていることを示します。
セットグループ識別 (SGID)
実行ファイルに対する SGID 権限
– SGID パーミッションは SUID パーミッションと似ていますが、唯一の違いは – SGID をオンにしてスクリプトまたはコマンドを実行すると、ファイルがメンバーである同じグループのメンバーであるかのように実行されます。
# ls -l /usr/bin/write -r-xr-sr-x 1 root tty 11484 Jan 15 17:55 /usr/bin/write
– setgid パーミッションは、グループの実行フィールドに「s」として表示されます。
注:– グループの実行フィールドに小文字の「l」が表示される場合は、setgid ビットがオンであり、グループの実行ビットがオフまたは拒否されていることを示します。
ファイルに GUID を設定する方法
# chmod 2555 [path_to_file]
ディレクトリの SGID
– ディレクトリに SGID 権限が設定されている場合、そのディレクトリに作成されたファイルは、そのディレクトリがメンバーであるグループに属します。
– たとえば、ディレクトリに書き込み権限を持つユーザーがそこにファイルを作成した場合、そのファイルはユーザーのグループではなく、ディレクトリと同じグループのメンバーです。
– これは、共有ディレクトリの作成に非常に役立ちます。
ディレクトリに SGID を設定する方法
# chmod g+s [path_to_directory]
スティッキー ビット
– スティッキー ビットは、主に共有ディレクトリで使用されます。
– /var/tmp などの共有ディレクトリで役立ちます。 および /tmp ユーザーはファイルを作成したり、他のユーザーが所有するファイルを読み取ったり実行したりできますが、他のユーザーが所有するファイルを削除することはできません。
– たとえば、ユーザー bob が /tmp/bob という名前のファイルを作成した場合、他のユーザー tom は/tmp ディレクトリに 777 の権限がある場合でも、このファイルを削除しないでください。スティッキー ビットが設定されていない場合、/tmp/bob ファイルは親ディレクトリの権限を継承するため、Tom は /tmp/bob を削除できます。
– root ユーザー(もちろん!) ファイルの所有者は自分のファイルを削除できます。
スティッキー ビットの例:
# ls -ld /var/tmp drwxrwxrwt 2 sys sys 512 Jan 26 11:02 /var/tmp
- T refers to when the execute permissions are off. - t refers to when the execute permissions are on.
スティッキー ビット許可の設定方法
# chmod +t [path_to_directory] or # chmod 1777 [path_to_directory]