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

Как запретить владельцу файла изменять / удалять собственный файл? Linux CentOS

Это НЕ ваш стандартный вопрос "как работают разрешения"!

Я думаю, ответ, вероятно, будет включать ACL, но я не знаю, как именно.

Я испортил стандартные разрешения, руководство, липкий бит и т. Д. Не работает.

Что я хочу: пользователь будет загружать файлы. Пользователь будет иметь возможность изменять права доступа к файлам, чтобы разрешить выполнение. Но пользователь не сможет изменить содержимое файла после его создания. И пользователь не сможет удалить файл.

Пожалуйста помоги! Я уже часами рвал волосы!

РЕДАКТИРОВАТЬ:

Спасибо за ответы, но пока они, похоже, не рассматривают, как сделать эту работу автоматически для вновь созданных файлов.

Возможное решение:

find -mtime -1 -exec chattr +i '{}' \+

2-е возможное решение:

inotifywait -m -e create --format %f .

Теперь мне просто нужно выяснить, как передать это в чат.

Вы можете попробовать использовать chattr

Пример:

urug@nada.cclan:~$ sudo chattr +i plik.txt 
urug@nada.cclan:~$ rm plik.txt 
rm: remove write-protected regular empty file `plik.txt'? y
rm: cannot remove `plik.txt': Operation not permitted
urug@nada.cclan:~$ chattr -i plik.txt 
chattr: Operation not permitted while setting flags on plik.txt

Использовать атрибуты

sudo chattr +i /path/to/file

Удалить "неизменяемый" флаг с помощью

sudo chattr -i /path/to/file

Однако это не позволит вам изменить права доступа к файлу. Поэтому вам понадобится какой-то способ (как root) добавить разрешение на выполнение или что-то еще по запросу пользователя. Также атрибуты не добавляются по умолчанию; вы должны добавить что-нибудь, что сделает это.

Я оставлю это читателю в качестве упражнения.

Используйте inotify или другой механизм наблюдения по вашему выбору, чтобы найти новые файлы в каталоге загрузки и переместить их в новый каталог, для которого у исходного пользователя нет разрешений.

SELinux может быть одним из способов решения этой проблемы - связать уникальный тип со всеми пользователями, у которых будет эта «ограниченная способность». Установите политику SELinux, чтобы разрешить создание файлов в этом каталоге для этих типов пользователей, но не изменять и т.д. Теоретически - должно работать. Видеть Учебное пособие по Gentoo SELinux, в частности о:

allow auditd_t <type>:file { <permission> };

затем узнайте больше о доступных разрешениях