Чи можна дозволити користувачам chmod файл, який не належить їм?


17

Я хотів би дозволити користувачам chmod файл, який належить root, або якийсь користувач, який не є самими собою. Я chmod'ed файл на 777, і я отримую "операція не дозволена". Я додав користувача до групи файлу і отримаю те саме. Чому користувач не може chmod до файла, до якого він має доступ?


1
За цією логікою, чому б просто не запустити все як root? Якщо будь-який користувач може змінити будь-який режим, ви в основному знищите всю модель дозволів Unix ...
Chris Down

1
Що ти хочеш робити? можливо, вам слід заглянути sudo: linux.die.net/man/8/sudo & linux.die.net/man/5/sudoers
xx4h

Файл має дозволи 777, користувач може перейти "mv file file.old; cat file.old> file", і тепер він буде володіти файлом і може chmod його. Чому вони не можуть "chmod 777 файл"?
ashleysmithgpu

5
Ні, вони можуть це зробити, лише якщо вони мають дозвіл на запис у каталог. Якщо користувач мав право змінювати дозволи файлів, якими він не володіє, встановивши режим 04777 та скопіювавши в нього / usr / bin / env, він міг би виконати будь-яку команду як цього користувача.
Стефан Шазелас

@StephaneChazelas Тобто дивний аргумент , оскільки ядро може легко вирішити (і робить!) , Щоб не власник таких змін , НЕ будучи пов'язаним з цим рішенням дати їм все види змін. Адже SUID навіть скидається, коли власник записує файл.
Hauke ​​Laging

Відповіді:


8

Чому користувач не може chmod до файла, до якого він має доступ?

Для звичайних прав доступу це рішення дизайну. Вам потрібні ричаклі : WRITE_ACLі, може, це WRITE_OWNER.


1
І вам слід попередити, що ричаклів зазвичай немає.
sendmoreinfo

@sendmoreinfo Стаття у Вікіпедії говорить про це, і це, очевидно, треба прочитати, оскільки моя відповідь не пояснює, що таке ричаки та як вони використовуються. Смішно вважати правильну відповідь «не корисною» через це. Тим більше, що немає рівнозначної альтернативи. Наступного разу зробіть правки, якщо вважаєте, що така інформація потрібна.
Hauke ​​Laging

Я бачу, це дизайнерське рішення, дякую
ashleysmithgpu

2
Ви, очевидно, використовували цю функцію, тому поясніть її власними словами.
sendmoreinfo

10

Права Unix розроблені так, щоб вони були простими. Вам потрібен дозвіл на читання, щоб читати з файлу, дозвіл на запис на файл та дозвіл на виконання файлу. Вам потрібно мати власний файл, щоб змінити його метадані¹.

Дозволити користувачеві, який може прочитати файл, щоб надати іншим право на читання, або дозволити користувачеві, який може написати файл, надати іншим дозвіл на запис, не сильно змінить модель безпеки. Це тому, що дозволи Unix є дискреційними: користувач, який може прочитати файл, може викрити його вміст іншим користувачам, навіть якщо ці інші користувачі не змогли б прочитати файл (і аналогічно для написання, користувач може діяти як проксі і пишіть від імені інших).

З іншого боку, дозволити користувачеві надати дозвіл, якого він не мав, повністю би порушив систему дозволів: користувач міг надати всі дозволи собі.

Досить рідко потрібно змінювати дозволи файлу, яким ви не володієте. Зазвичай ви повинні домовитись, щоб файл мав правильні дозволи, як тільки він створений. Якщо вам це справді потрібно, ви можете дати sudo chmodправа користувача на певний режим та певний файл (наприклад joe: ALL = (ALL) chmod g+r /path/to/file).

¹ для доступу і модифікації часів, які особливо тому , що читання або запис в файл і встановлює їх , за винятком.


У моєму випадку є як веб-процес (за www-data), так і процес cli (сам), який хоче встановити дозволи на файл. Я додав себе до групи даних www, але цього недостатньо.
donquixote

Навіть змінивши власника / групу на себе: www-data не допомагають. (Я не розробив механізм, який намагається встановити дозволи, я не маю над ним контролю)
donquixote
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.