Почему у каталога установлен бит закрепления, но нет бита исполнения?

Почему у каталога установлен бит закрепления, но нет бита исполнения?

В Ubuntu 14.04 вывод списка содержимого каталога /var/spool/cronпредоставляет ls -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 table и замените ее на одну измойвыбирая, даже если у меня есть доступ на запись в каталог. Именно по этой причине он /tmpтакже липкий.

решение2

Какую цель преследует установка бита закрепления для каталога без бита исполнения?

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

То, что вы видите, похоже на Debian. Каталогделаетиметь установленный исполняемый бит для владельца и группы. Только для владельца sticky не имеет особого смысла, так как по определению это только один пользователь (и владелец в любом случае может переопределить sticky). Но для группы это имеет ровно такое же значение, как и для каталогов, доступных для записи всем, например /tmp, а именно, что обычные пользователи не могут удалять файлы, принадлежащие другим пользователям.

Но зачем кому-то становиться членом группы crontab?

Чтобы иметь возможность изменять свои crontab, конечно! Debian crontabработает с привилегией setgid, таким образом позволяя любому обычному пользователю получить доступ к этому каталогу, с его собственным UID и с GID crontab. Это немного безопаснее, чем позволить им работать crontabс setuidпривилегия, поскольку позволяет пользователям быть отделенными друг от друга.

-rwxr-сrx 1 root crontab 36008 11 июня 2015 г. /usr/bin/crontab

Теперь, обычно, файлы в каталоге принадлежат и названы их соответствующими владельцами, и если crontabтолько позволяется удалить собственный crontab пользователя, то проблем быть не должно. Наличие разрешений на файлы, настроенных таким образом, работает для защиты от ошибок в программе,иделает актуальным фактический UID пользователя, осуществляющего доступ, а не только егоимя.

Связанный контент