Поэтому мы пытаемся модернизировать старый ftp-сервер, который также может использоваться как конечная точка rsync. В каждом пользовательском chroot есть структура каталогов, которая выглядит следующим образом:
/.
├─── usr/
├─── lib/
└─── ...(customer data)
В идеале мы бы добавили /data
каталог в chroot и несколько лет назад попросили клиентов отправлять туда свои данные. Однако мы не делали этого в прошлом и не можем изменить структуру в ближайшем будущем.
Мне было интересно, есть ли комбинация разрешений, которая позволила бы моему пользователю по-прежнему создавать новые файлы в каталоге /, но не перемещать или переименовывать два существующих каталога. Я предполагаю, что это можно сделать с помощью ACL, но я не знаю, как это сделать. Итак, как тест
echo cust_data > customer_file
: Должно быть разрешеноmv customer_file customer_file2
: Должно быть разрешеноmkdir customer_dir
: Должно быть разрешеноrm usr
: Следует запретитьmv usr usr_something
: Следует запретитьЕсть ли политика ACL, которую я могу настроить для этого?
Установите владельца chroot /
каталог в root:root
:
chown root:root /path/to/chroot/rootdir
затем установите липкий кусочек:
chmod 1777 /path/to/chroot/rootdir
Покинуть /usr
и /lib
как есть, предположительно что-то вроде root
-в собственности и root
-только для записи. Это позволит пользователям манипулировать файлами, как они хотят, но не смогут изменять /usr
и /lib
в любом случае.
За Linux chmod.1
страница руководства:
Флаг ограниченного удаления или липкий бит - это отдельный бит, интерпретация которого зависит от типа файла. Для каталогов он не позволяет непривилегированным пользователям удалять или переименовывать файл в каталоге, если только они не владеют файлом или каталогом; это называется флагом ограниченного удаления для каталога и обычно встречается в каталогах, доступных для записи всем, например
/tmp
. Для обычных файлов в некоторых старых системах бит сохраняет текстовое изображение программы на устройстве подкачки, поэтому при запуске она загружается быстрее; это называется липкий кусочек.