MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/25 おすすめ情報に 『 【案件】Azure AD関連の認証設計/azureの基本設計 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


Linux SUID、SGID、スティッキービット
profile-img
投稿者: fujioka090...さん
投稿日:2023/03/03 15:45
更新日:
like-img
分類
技術
テクノロジー
Unix系サーバ
キャリア
運用・保守
投稿内容
今回はLinuxの特殊なパーミッションであるSUID、SGID、スティッキービットについて説明しようと思います。

その前にまずパーミッションというものについて簡単に説明いたします。

Linux上でファイルやディレクトリには「アクセス権限」が付与されており、「読み込み権限」、「書き込み権限」、「実行権限」という3つの権限設定があります。

また権限を付与するユーザとして対象ファイルやディレクトリの「所有ユーザ」、「所有グループ」、「その他のユーザ」という3つの分類があります。

これら権限のことをパーミッションといい、各3つの分類のユーザに対して「読み込み」や「書き込み」の許可する・しないを設定することでファイルへのアクセス制御・管理を行っています。

そのパーミッションの中でもSUID、SGID、スティッキービットという特殊な権限設定が有ります。各項目の基本的な説明を下記に示します。

・SUID

 こちらはファイルに設定されるのですが、実行権限を持っていれば「SUIDを設定されたファイルの所有者の権限で実行できる」というものになります。

 例えば「passwd」というコマンドには基本的にSUIDが設定されています。コマンドの所有者はrootですが、別の実行権を持つ一般ユーザーが「passwd」コマンドを実行した時、rootユーザーの権限で実行できるということになります。


・SGID

 SUIDと似ていますが、こちらは「グループの権限」についての設定となります。

 SGIDはファイル、ディレクトリどちらにも付与されます。

 ファイルにSGIDが付与されていた場合、実行権限を持っていれば「SGIDを設定されたファイルのグループの権限で実行できる」というものになります。

 こちらは上記SUIDで説明したことと同様にファイルの実行権限さえ持っていれば、別のグループユーザーだったとしても「所有グループ」の権限でファイルを実行できます。

 ディレクトリにSGIDが付与されている場合は動作が異なりまして、SGIDが付与されたディレクトリ配下で作成されたファイルやディレクトリはSGIDのフォルダと同じ所有グループになります。

・スティッキービット

 こちらはディレクトリに設定されるのですが、スティッキービットを設定されたディレクトリ配下のファイルやディレクトリは権限設定に関係無く、所有者にしか変更や削除ができなくなります。

 このパーミッションは全ユーザーにファイルやフォルダ作成を許可したいが、削除だけは制限したい場合等に使用されます。


以上が3つのパーミッションについての説明となります。

ちなみにそれぞれの権限は「chmod」というコマンドを実行することによって付与できます。

コマンド例を下記に示します。


chmod u+s ファイル名・・・SUIDを付与

chmod g+s ファイル名・・・SGIDを付与

chmod o+t フォルダ名・・・スティッキービットを付与


逆に権限を削除したい場合は下記になります。


chmod u-s ファイル名・・・SUIDを削除

chmod g-s ファイル名・・・SGIDを削除

chmod o-t フォルダ名・・・スティッキービットを削除


以前、基本的な「読み込み権限」や「書き込み権限」についての説明をさせていただいたのですが、今回はその説明の補足事項となります。

アクセス制御はサーバーやコンピュータの管理において非常に重要な項目となるため、コマンドを実際に自分で実行してみてさらに理解を深めたいと考えております。


参考資料

Linux - SUID SGID スティッキービット (infraeye.com)

特殊なパーミッションについて | TECH PROjin (pjin.jp)
コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3