
В 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 пользователя, осуществляющего доступ, а не только егоимя.