web-dev-qa-db-ja.com

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

Ubuntu 14.04では、ディレクトリ/var/spool/cronls -lは、次の権限を提供します(関係のない列は省略されます)。

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

実行可能ビットなしでディレクトリにスティッキービットを設定すると、どのような目的に役立ちますか?

7
Q23

実行可能ビットなしでディレクトリにスティッキービットを設定すると、どのような目的に役立ちますか?

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

あなたが見ているものは、Debianでも似ています。ディレクトリdoesには、所有者とグループの実行可能ビットが設定されています。所有者だけにとって、stickyはあまり意味がありません。これは、定義上、ユーザーが1人だけであるためです(そして、所有者はとにかくstickyをオーバーライドすることになります)。しかし、グループにとっては、/tmpなどの誰でも書き込み可能なディレクトリと同じくらい重要です。つまり、通常のユーザーは他のユーザーに属するファイルを削除することができません。

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

もちろん、crontabを変更できるようにするためです! Debianのcrontabはsetgid特権で動作するため、通常のユーザーは自分のUIDとcrontabのGIDでそのディレクトリにアクセスできます。セットでcrontabを実行させるよりも少し安全ですuid ユーザーを互いに分離しておくための特権。

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

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

7
ilkkachu