Назад | Перейти на главную страницу

Cronjobs только для чтения для пользователей

Вот странная проблема. Я хочу сделать crontab для пользователя, который доступен только для чтения для этого конкретного пользователя и может управляться только через root. Звучит просто? Вот в чем загвоздка:

$ ls -alh /var/spool/cron/my_user
-r-------- 1 root root 386 May  8 15:13 /var/spool/cron/my_user

Итак, файл принадлежит / сгруппирован для root и имеет только права чтения (0400) для root.

Уловка:

$ su - my_user
my_user~$ crontab -e
(write something to the crontab)
crontab: installing new crontab
$ ls -alh /var/spool/cron/my_user
-rw------- 1 my_user my_user 386 May  8 15:13 /var/spool/cron/my_user

Таким образом, файл, принадлежащий root, с привилегиями только для чтения от root мог быть прочитан непривилегированным пользователем, а затем был изменен на 0600 (rw) и принадлежал этому пользователю?

Какой очевидной уловки мне не хватает?

crontab имеет установленный идентификатор. Таким образом, пользователи могут обновить свой crontab.

Какую версию cron вы используете. Если вы используете версию, поддерживающую вставку фрагментов в /etc/cron.d тогда вы должны это сделать.

Используйте системный файл / etc / crontab вместо пользовательского contab.

Вы могли бы сделать /var/spool/cron/my_user неизменяемый после установки желаемых модификаций для предотвращения изменений.

sudo chattr +i /var/spool/cron/my_user

Вы можете добавить пользователя в /etc/cron.deny. Это запретит пользователю доступ к команде crontab и она больше не может редактировать свой crontab.

AFAICT запись в /etc/cron.deny делает не отключить определенные cronjobs.