Як я можу надати різні дозволи для кожного користувача?


11

Отже, я вже декілька років використовую Linux, і мені справді слід знати цю відповідь, але у мене виникають проблеми з її пошуком. Зокрема, я використовую дистрибутив на базі Debian .... переважно Ubuntu.

Якщо у мене є сервер, який містить більше трьох користувачів, як я можу встановити інший набір дозволів для кожного користувача.

Наприклад:

Якщо у мене є файл із цими дозволами та правом власності:

rwx rw_ r__ user1:group1 file1.txt

і у мене є 3 користувачі з цими бажаними дозволами ....

  • user1 rwx
  • user2 rw_
  • user3 r__

Все, що мені потрібно зробити - це мати власний файл user1 , user2 бути в group1 , а user3 не може бути ні - правильно?

Але що робити, якщо у мене є user4 та user5 .

  • user4 _wx
  • user5 __x

Як я це встановив?

Мені цього раніше не доводилося робити, але мені це питання задав адміністратор Windows, і я, чесно кажучи, не зміг відповісти.


8
Для такого виду деталізації дозволів вам потрібно буде використовувати списки контролю доступу (ACL). Швидкий підручник ви можете знайти тут . Хоча слово обережності, коли ви починаєте шлях ACL замість дозволів, це дуже слизький нахил, і справи ускладнюються реально швидко з деякими непередбачуваними наслідками в кінці.
Мельбурслан

Відповіді:


19

Традиційні дозволи Unix дозволяють використовувати лише користувацькі, групові та інші дозволи, як ви знайшли. Це може призвести до незручного поєднання груп, які потрібно створити ...

Тож була застосована нова форма списків доступу ACL (Контроль доступу). Це дозволяє вказати кілька користувачів та декілька груп з різними дозволами. Вони встановлюються setfaclкомандою і читаються за допомогоюgetfacl

$ setfacl -m u:root:r-- file.txt
$ setfacl -m u:bin:-wx file.txt 
$ setfacl -m u:lp:--x file.txt 
$ getfacl file.txt
# file: file.txt
# owner: sweh
# group: sweh
user::rw-
user:root:r--
user:bin:-wx
user:lp:--x
group::r--
mask::rwx
other::r--

Ви можете легко визначити, чи має файл ACL, переглянувши lsвихідний:

$ ls -l file.txt
-rw-rwxr--+ 1 sweh sweh 0 Jul 26 10:33 file.txt

В +кінці дозволів вказується ACL.


2

Так, ACL: s дозволяють вільно встановлювати різні права різним користувачам або групам. IIRC, звичайні групові дозволи обмежують набір дозволів, які можуть мати групи та користувачі через ACL: s (показано як maskу getfacl), але це setfaclслід вирішувати, якщо ви додаєте дозволи.

Але в деяких випадках потрібно запитати, чи має набір дозволів якийсь сенс.

У мене є 3 користувачі з цими бажаними дозволами ....
- user1 rwx
- user2 rw_
- user3 r__

Ви можете реалізувати це за допомогою ACL: s або (приблизно) за допомогою звичайних дозволів Unix, зробивши user1 власником файлу, user2 членом групи, а інші, включаючи user3, мають доступ для читання. Хоча тоді всі (з доступом до каталогу) мали б також доступ для читання.

Розглянемо значення цих дозволів. У вас є один користувач, який може читати, та інший, який може читати та писати. Це абсолютно звичайно. Жоден із них не має доступу для виконання файлу, але тоді третій користувач повинен також це зробити.

Це не має особливого сенсу в моїй свідомості. Будь-який користувач, який може прочитати файл, може зробити копію (*), позначити її виконуваною та запустити її, не маючи доступу для виконання оригінального файлу. Єдина ситуація, яка має сенс мати доступ для деяких користувачів, але не для інших, - це коли виконуваний файл має підвищені привілеї через suid. Але якби це було так, у вас також не повинно бути інших користувачів, які мають доступ до файлу.

У цьому ж сенсі, user4 with -wxта user5 with --xне мають для мене сенсу. Доступ лише для запису може мати сенс, якщо існувала б можливість дозволу лише додавання файлів , але система дозволів не є такою дрібною.

(* якщо тільки вони не можуть писати ніде)


Хоча якщо ми видалимо дивну вимогу до xбіту, ми залишимо файл, у якому user1 та user2 повинні мати доступ для запису, а user3 повинен мати доступ для читання. Один автор і кілька читачів було б легко з традиційною моделлю, але в цьому випадку потрібні хитрощі, щоб поєднати дозволи файлів з дозволом каталогу, що містить. На щастя, у багатьох випадках достатньо одного користувача з більшою кількістю дозволів.

Без вимоги про біт виконання, це виглядає як випадок використання ACL: s. Але в цьому випадку цей конкретний приклад здається мені досить заплутаним.


Якщо користувач може записувати в файлову систему, встановлену без дозволу на виконання, він не може виконати копію, навіть якщо він міг би виконати оригінал, якщо були б встановлені відповідні дозволи. Також виконання може мати сенс лише, якщо ви хочете завадити їм шукати подвиги. -wxЦе, безумовно, дивно.
celtschk

1
Деякі системи мають механізм, що дозволяє лише додавати. chattr +aНаприклад, у Linux . І навіть не маючи нічого системного, ви можете зробити файл FIFO. --x, і в розширенні також -wxдля мене є сенсом для каталогів .
Випадково832
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.