【Linux】スティッキービットの設定方法、確認方法など概要まとめ

Linux

スティッキービットの概要をまとめました。

stickyは粘着性のあるという意味

まずGoogleでstickyという単語の意味を調べてみると、粘着性がある、という形容詞で翻訳されました。

名詞のstickは日本語でもスティックと呼ぶもので、いわゆる「棒(ぼう)」です。棒っぽい(sticky)⇒粘着性があるという解釈ですね。名詞にyをつけると「~っぽい」みたいなニュアンスの英単語になります。

スティッキービットと権限

スティッキービットは、一言でいうと「ファイルの所有者 (およびルート) のみがそのディレクトリ内のファイルを削除できる権限」です。

Red Hatのブログでは以下のように説明されています。

その他 + t (sticky)
最後の特殊アクセス権は「スティッキービット」と呼ばれています。この権限は個々のファイルには影響しません。ただし、ディレクトリレベルではファイルの削除を制限します。ファイルの所有者 (およびルート) のみがそのディレクトリ内のファイルを削除できます。一般的な例としては、/tmp ディレクトリが挙げられます。

[tcarrigan@server article_submissions]$ ls -ld /tmp/
drwxrwxrwt. 15 root root 4096 Sep 22 15:28 /tmp/

このアクセス権セットは、通常は実行権限を示す x の代わりに小文字の t で示されます。

Linux アクセス権:SUID、SGID、スティッキービット
Linux アクセス権とは、開発の初期段階で皆が深く理解するようになる概念です。システムを効果的に管理するためには...

Oracleのドキュメントでもスティッキービットについての説明があり、以下のように説明されています。

スティッキービット

「スティッキービット」は、ディレクトリ内のファイルを保護するアクセス権ビットです。ディレクトリにスティッキービットが設定されている場合、そのファイルを削除できるのはその所有者、ディレクトリの所有者、または特権を持つユーザーだけです。特権を持つユーザーの例として、root ユーザーや Primary Administrator 役割が挙げられます。スティッキービットにより、ユーザーは /tmp などの公開ディレクトリからほかのユーザーのファイルを削除できなくなります。


drwxrwxrwt 7 root sys 400 Sep 3 13:37 tmp
https://docs.oracle.com/cd/E19253-01/819-0383/secfile-69/index.html

スティッキービットが設定されているディレクトリの例としては/tmpや/var/tmpなどがあります。

スティッキービットの確認方法

スティッキービットが設定されていることを確認するにはlsコマンドに-l(ハイフンエル)をつけて実行します。

ls -l

以下はコマンドの実行例で、/tmpの権限を確認すると以下のようになっています。

drwxrwxrwt. 14 root root 4096 10月 28 15:45 tmp

drwxrwxrwt.の「t」がスティッキービットが設定されていることを確認できる文字列になります。

スティッキービットを設定するには

スティッキービットを設定するにはchmodコマンドにオプションで+tを指定します。

# chmod +t <ディレクトリ名>

以下のコマンドでもスティッキービットを設定できます。

# chmod 1777 <ディレクトリ名>

設定したいパーミッション(今回の例でいえば777)の一つ前に「1」を記載することでディレクトリにスティッキービットを設定できます。

/tmpディレクトリにスティッキービットを設定する

次の見出しで/tmpディレクトリのスティッキービットを削除したので、スティッキービットを/tmpに再設定します。

[root@RHEL96 /]# chmod +t /tmp
[root@RHEL96 /]#
[root@RHEL96 /]#
[root@RHEL96 /]# ls -l
合計 28
dr-xr-xr-x.   2 root root    6  6月 25  2024 afs
lrwxrwxrwx.   1 root root    7  6月 25  2024 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096  6月 20 10:27 boot
drwxr-xr-x.  20 root root 3440 10月 28 15:32 dev
drwxr-xr-x. 138 root root 8192 10月 28 15:32 etc
drwxr-xr-x.   3 root root   19  6月 20 09:31 home
lrwxrwxrwx.   1 root root    7  6月 25  2024 lib -> usr/lib
lrwxrwxrwx.   1 root root    9  6月 25  2024 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6  6月 25  2024 media
drwxr-xr-x.   3 root root   18  6月 20 09:21 mnt
drwxr-xr-x.   2 root root    6  6月 25  2024 opt
dr-xr-xr-x. 345 root root    0 10月 28 15:32 proc
dr-xr-x---.  14 root root 4096 10月 28 16:19 root
drwxr-xr-x.  46 root root 1220 10月 28 15:32 run
lrwxrwxrwx.   1 root root    8  6月 25  2024 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6  6月 25  2024 srv
dr-xr-xr-x.  13 root root    0 10月 28 15:32 sys
drwxrwxrwt.  19 root root 4096 10月 28 15:48 tmp
drwxr-xr-x.  12 root root  144  6月 20 09:20 usr
drwxr-xr-x.  20 root root 4096  6月 20 10:27 var

/tmpのパーミッションにtが付きました。これでスティッキービットが設定されている状態です。

スティッキービットの設定を削除するには

スティッキービットの設定を削除するには以下のコマンドを実行します。

# chmod -t <ディレクトリ名>

もしくは、以下のコマンドでもスティッキービットを削除できます。

# chmod 777 <ディレクトリ名>

スティッキービットを設定する際に、777のパーミッションの前に1を記載してスティッキービットを設定することができます(1777)。

実際に/tmpのスティッキービットの設定を削除してみる

Red Hat Enterprise Linux 9.6で/tmpのスティッキービットの設定を削除してみました。

[root@RHEL96 /]# chmod -t /tmp
[root@RHEL96 /]#
[root@RHEL96 /]#
[root@RHEL96 /]# ls -l
合計 28
dr-xr-xr-x.   2 root root    6  6月 25  2024 afs
lrwxrwxrwx.   1 root root    7  6月 25  2024 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096  6月 20 10:27 boot
drwxr-xr-x.  20 root root 3440 10月 28 15:32 dev
drwxr-xr-x. 138 root root 8192 10月 28 15:32 etc
drwxr-xr-x.   3 root root   19  6月 20 09:31 home
lrwxrwxrwx.   1 root root    7  6月 25  2024 lib -> usr/lib
lrwxrwxrwx.   1 root root    9  6月 25  2024 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6  6月 25  2024 media
drwxr-xr-x.   3 root root   18  6月 20 09:21 mnt
drwxr-xr-x.   2 root root    6  6月 25  2024 opt
dr-xr-xr-x. 343 root root    0 10月 28 15:32 proc
dr-xr-x---.  14 root root 4096 10月 28 16:15 root
drwxr-xr-x.  46 root root 1220 10月 28 15:32 run
lrwxrwxrwx.   1 root root    8  6月 25  2024 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6  6月 25  2024 srv
dr-xr-xr-x.  13 root root    0 10月 28 15:32 sys
drwxrwxrwx.  19 root root 4096 10月 28 15:48 tmp
drwxr-xr-x.  12 root root  144  6月 20 09:20 usr
drwxr-xr-x.  20 root root 4096  6月 20 10:27 var

/tmpのスティッキービットの設定「t」が「x」になりました。

タイトルとURLをコピーしました