ディレクトリに実行可能ビットがないのにスティッキー ビットが設定されているのはなぜですか?

ディレクトリに実行可能ビットがないのにスティッキー ビットが設定されているのはなぜですか?

Ubuntu 14.04 では、ディレクトリの内容を一覧表示すると/var/spool/cronls -lその中のディレクトリに対して次の権限が付与されます (無関係な列は省略されています)。

drwxrwx--T daemon daemon atjobs
drwxrwx--T daemon daemon atspool
drwx-wx--T root crontab crontabs

実行可能ビットのないディレクトリにスティッキー ビットを設定する目的は何ですか?

答え1

のマニュアルページからsticky:

スティッキーディレクトリ

`sticky bit' が設定されているディレクトリは、追加専用ディレクトリ、またはより正確には、ファイルの削除が制限されているディレクトリになります。sticky ディレクトリ内のファイルは、ユーザーがディレクトリの書き込み権限を持ち、ファイルの所有者、ディレクトリの所有者、またはスーパーユーザーである場合にのみ、削除または名前の変更が可能です。この機能は、/tmp などの、パブリックに書き込み可能である必要があるが、ユーザーが他のユーザーのファイルを任意に削除または名前変更する権限を拒否する必要があるディレクトリに適用すると便利です。

どのユーザーでもスティッキーディレクトリを作成できます。ファイルモードの変更の詳細については、chmod(1)を参照してください。

この結果、スティッキーディレクトリ内のファイルの所有者だけがファイルを削除できることになります。テーブルの場合cron、これは次のことを意味します。そこに入って取り除くことはできないあなたのcronテーブルを以下の1つに置き換えます私のディレクトリへの書き込みアクセス権がある場合でも、選択することはできません。これ/tmpもまた、問題となる理由です。

答え2

実行可能ビットのないディレクトリにスティッキー ビットを設定する目的は何ですか?

drwx-wx--T 2 root crontab 4096 Apr 24 15:00 /var/spool/cron/crontabs/

Debianでも同様のディレクトリが表示されます。する所有者とグループに対して実行可能ビットが設定されます。所有者の場合、定義上 1 人のユーザーのみであるため、sticky はあまり意味がありません (また、所有者はいずれにしても sticky を上書きできます)。ただし、グループの場合、のような世界書き込み可能なディレクトリの場合とまったく同じくらい/tmp、つまり、通常のユーザーは他のユーザーに属するファイルを削除できないことが重要です。

しかし、なぜ誰かがグループのメンバーになるのでしょうかcrontab?

もちろん、crontab を変更できるようにするためです。Debian はcrontabsetgid 権限で動作するため、一般ユーザーは自分の UID と の GID を使用してそのディレクトリにアクセスできます。これは、 set でcrontab実行させるよりも少し安全です。crontabユーザID特権により、ユーザー同士が分離されます。

-rwxr-srx 1 ルート crontab 36008 2015年6月11日 /usr/bin/crontab

さて、通常、ディレクトリ内のファイルはそれぞれの所有者によって所有され、名前が付けられており、crontabユーザー自身のcrontabのみを削除できる場合は、問題はないはずです。このようにファイル権限を設定すると、プログラムのバグから保護されます。そしてアクセスしているユーザーの実際のUIDだけでなく、名前

関連情報