Linux – SUID、SGID、スティッキービットについて詳しく解説

目次

概要

Linux では、ファイルシステムのアクセス制御を強化するために、SUID (Set User ID)SGID (Set Group ID)、およびスティッキービット (Sticky Bit) と呼ばれる特別な許可ビットがあります。本記事では、これらの許可ビットの詳細と使用方法について説明します。

SUID (Set User ID)

SUID (Set User ID)ビットは、実行可能ファイルに設定される特殊な許可ビットです。このビットが設定されたファイルを実行すると、そのファイルの所有者の権限で実行されます。これにより、通常のユーザーが特定の管理タスクを実行できるようになります。

設定方法

SUID ビットを設定するには、chmod コマンドを使用します。

chmod u+s <executable>

確認方法

SUID ビットが設定されたファイルは、ls -l コマンドで確認できます。ユーザーの実行権限が s に変わります。

$ ls -l /path/to/executable
-rwsr-xr-x 1 root root 12345 Feb  4 16:21 /path/to/executable

ユーザーのパーミッション rws の部分が SUID ビットが設定されていることを示しています。

使用例

典型的な使用例は、passwd コマンドです。実行時に root 権限が必要ですが、root 権限を持たない通常のユーザーが実行できるよう SUID ビットが設定されています。

SGID (Set Group ID)

SGID (Set Group ID) ビットは、実行可能ファイルやディレクトリに設定される特殊な許可ビットです。実行可能ファイルに設定された場合、そのファイルを実行すると、実行中のプロセスはファイルのグループの権限で実行されます。ディレクトリに設定された場合、そのディレクトリ内で作成されるすべてのファイルやサブディレクトリは、親ディレクトリのグループを継承します。

設定方法

SGID ビットを設定するには、chmod コマンドを使用します。

chmod g+s <executable_or_directory>

確認方法

SGID ビットが設定されたファイルやディレクトリは、ls -l コマンドで確認できます。グループの実行権限が s に変わります。

$ ls -l /path/to/executable_or_directory
-rwxr-sr-x 1 root staff 12345 Feb  4 16:21 /path/to/executable
drwxr-sr-x 2 root staff  4096 Feb  4 16:21 /path/to/directory

グループのパーミッション r-s の部分が SGID ビットが設定されていることを示しています。

使用例

ディレクトリに SGID を設定することで、そのディレクトリ内で作成されたすべてのファイルやサブディレクトリが、親ディレクトリと同じグループ所有権を持つようになります。

$ mkdir project
$ sudo chgrp developers project/
$ sudo chmod g+s project/
$ cd project/
$ touch file
$ mkdir subdir
$ ls -l
total 4
-rw-rw-r-- 1 ubuntu developers    0 Feb  4 16:48 file
drwxrwsr-x 2 ubuntu developers 4096 Feb  4 16:48 subdir

スティッキービット

スティッキービット (Sticky Bit) は、ディレクトリに設定される特殊な許可ビットです。このビットが設定されたディレクトリ内のファイルやディレクトリは、その所有者または root ユーザーのみが削除や名前変更を行えます。これにより、多くのユーザーがアクセスするディレクトリ内のファイルが誤って削除されるのを防ぎます。

設定方法

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

chmod +t <directory>

確認方法

スティッキービットが設定されたディレクトリは、ls -l コマンドで確認できます。その他のユーザーの実行権限が t に変わります。

$ ls -l /path/to/directory
drwxrwxrwt 2 root staff 4096 Feb  4 16:21 /path/to/directory

その他のユーザーのパーミッション rwt の部分がスティッキービットが設定されていることを示しています。

使用例

典型的な使用例は、/tmp ディレクトリです。多くのユーザーが一時ファイルを作成するために使用しますが、スティッキービットにより、他のユーザーが作成したファイルを削除できないように保護されています。

コメント

コメントする

目次