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

Защита каталогов в chroot-root fs

Поэтому мы пытаемся модернизировать старый ftp-сервер, который также может использоваться как конечная точка rsync. В каждом пользовательском chroot есть структура каталогов, которая выглядит следующим образом:

/.
├─── usr/
├─── lib/
└─── ...(customer data)

В идеале мы бы добавили /data каталог в chroot и несколько лет назад попросили клиентов отправлять туда свои данные. Однако мы не делали этого в прошлом и не можем изменить структуру в ближайшем будущем.

Мне было интересно, есть ли комбинация разрешений, которая позволила бы моему пользователю по-прежнему создавать новые файлы в каталоге /, но не перемещать или переименовывать два существующих каталога. Я предполагаю, что это можно сделать с помощью ACL, но я не знаю, как это сделать. Итак, как тест

  1. echo cust_data > customer_file : Должно быть разрешено
  2. mv customer_file customer_file2 : Должно быть разрешено
  3. mkdir customer_dir : Должно быть разрешено
  4. rm usr : Следует запретить
  5. 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. Для обычных файлов в некоторых старых системах бит сохраняет текстовое изображение программы на устройстве подкачки, поэтому при запуске она загружается быстрее; это называется липкий кусочек.