特殊なパーミッション「SUID」「SGID」「スティッキービット」

特殊パーミッション

SUID,SGID,スティッキービットとは?

Linuxのファイルシステムには、標準的な読み取り、書き込み、実行のパーミッションに加えて、特殊なパーミッションがあります。これらの特殊なパーミッションは、特定の状況でセキュリティやファイルアクセスの動作を制御するために使用されます。本記事では、SUID、SGID、スティッキービットについてそれぞれの概要と詳細な説明を行います。

SUID(Set User ID)

概要

SUID(Set User ID)ビットは、ファイルの所有者の権限でプログラムを実行するための特殊なパーミッションです。通常、実行ファイルは実行するユーザーの権限で動作しますが、SUIDビットが設定された実行ファイルは、そのファイルの所有者の権限で動作します。

設定方法

SUIDビットを設定するには、chmodコマンドを使用します。以下は、chmodコマンドを使用してSUIDビットを設定する例です:

# chmod u+s filename

数値モードを使用して設定する場合、SUIDビットは「4」として表されます:

# chmod 4755 filename

使用例

例えば、/usr/bin/passwdコマンドはSUIDビットが設定されています。これにより、通常のユーザーが自分のパスワードを変更する際に、必要なシステムファイルへのアクセス権を得ることができます。

# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 47032 Apr  4  2020 /usr/bin/passwd

SGID(Set Group ID)

概要

SGID(Set Group ID)ビットは、ファイルまたはディレクトリに設定できる特殊なパーミッションです。ファイルに設定された場合、そのファイルは実行時に所有グループの権限で動作します。ディレクトリに設定された場合、新しく作成されるファイルやディレクトリは親ディレクトリのグループを継承します。

設定方法

SGIDビットを設定するには、chmodコマンドを使用します。以下は、chmodコマンドを使用してSGIDビットを設定する例です:

# chmod g+s filename

数値モードを使用して設定する場合、SGIDビットは「2」として表されます:

# chmod 2755 filename
chmod 2755 filename

例えば、特定のグループが共有するディレクトリにSGIDビットを設定することで、そのディレクトリ内で作成されるすべてのファイルとディレクトリが同じグループに属するようにすることができます。

# ls -ld /shared_directory
drwxrwsr-x 2 root shared_group 4096 Apr  4  2020 /shared_directory

スティッキービット(Sticky Bit)

概要

スティッキービットは、ディレクトリに設定する特殊なパーミッションです。このビットが設定されたディレクトリでは、そのディレクトリ内のファイルやディレクトリを削除できるのは、そのファイルやディレクトリの所有者、ディレクトリの所有者、またはスーパーユーザー(root)に限られます。

設定方法

スティッキービットを設定するには、chmodコマンドを使用します。以下は、chmodコマンドを使用してスティッキービットを設定する例です:

# chmod +t directory

数値モードを使用して設定する場合、スティッキービットは「1」として表されます:

# chmod 1777 directory

使用例

一般的な例として、/tmpディレクトリがあります。このディレクトリはすべてのユーザーがファイルを作成できる場所ですが、スティッキービットが設定されているため、ユーザーは自分のファイルのみを削除できます。

# ls -ld /tmp
drwxrwxrwt 10 root root 4096 Apr  4  2020 /tmp

まとめ

SUID、SGID、スティッキービットは、Linuxのファイルシステムにおける特殊なパーミッションです。これらのパーミッションを適切に設定することで、セキュリティを強化し、ファイルアクセスの動作を制御することができます。システム管理者は、これらの特殊なパーミッションを理解し、適切に活用することで、より安全で効率的なシステム管理を実現できます。