Дозволити користувачеві читати домашні каталоги деяких інших користувачів


10

Я новачок у системному адмініструванні, і у мене є запит, що стосується дозволу. У мене є група, яка називається administration. Усередині administrationгрупи, у мене є користувачі user1, user2, user3, superuser. Усі користувачі в administrationгрупі. Тепер мені потрібно надати дозволу користувачеві, superuserщоб мати можливість переглядати /homeкаталог інших користувачів. Тим НЕ менше, я не хочу user1, user2, user3щоб побачити будинок будь-якого іншого користувача , крім самої себе. (Тобто user1має бачити лише user1будинок тощо).

Я створив користувачів та групи та призначив усіх користувачів до групи. Як мені зараз вказати дозволи superuser?

Іншими словами, я думаю про створення двох груп (скажіть NormalUsersі Superuser). NormalUsersГрупа буде мати користувач user1, user2і user3. У Superuserгрупі буде лише користувач Superuser. Тепер мені потрібен Superuserповний доступ до файлів користувачів групи NormalUsers. Чи можливо це в Linux?



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

Відповіді:


10

Якщо користувачі співпрацюють, ви можете використовувати списки контролю доступу (ACL). Встановіть ACL в домашній каталог user1(та друзів), який надає доступ до читання superuser. Встановіть ACL за замовчуванням також для новостворених файлів, а також ACL для існуючих файлів.

setfacl -R -m user:superuser:rx ~user1
setfacl -d -R -m user:superuser:rx ~user1

user1 може змінити ACL у своїх файлах, якщо він захоче.

Якщо ви завжди хочете отримувати superuserдоступ до user1файлів для читання , ви можете створити інший перегляд домашніх каталогів користувачів з різними дозволами, з bindfs .

mkdir -p ~superuser/spyglass/user1
chown superuser ~superuser/spyglass
chmod 700 ~superuser/spyglass
bindfs -p a+rX-w ~user1 ~superuser/spyglass/user1

Файли, доступ до яких здійснюється через ~ superuser / spyglass / user1, можна прочитати у всьому світі. Окрім дозволів, ~superuser/spyglass/user1це вид user1домашнього каталогу. Оскільки superuserце єдиний користувач, який може отримати доступ ~superuser/spyglass, superuserвід цього може отримати лише користь.


У моїй системі, права доступу та ім'я користувача міняються місцями: setfacl -R -m user:superuser:rx ~user1.
Aurélien Ooms

10

Ви можете використовувати ACL, щоб надати доступ до певного каталогу довільній групі.

Наприклад, якщо ви бігли setfacl -m g:dba:rwx /home/foo, то члени групи dba мали б на нього права доступу rwx, незалежно від того, якій групі належить каталог.

Ви, ймовірно, також захочете встановити ACL "за замовчуванням" (ACL для новостворених об'єктів всередині каталогу), щоб він також включав цей дозвіл.


Так, саме .. Я також дізнався те саме, але все ще не впевнений, чи є хорошою ідеєю надання ACL-серверів на сервері для користувачів LDAP.
Рамеш

@Ramesh Ну, якщо вони користувачі системи (тому що ви використовуєте nss-ldap, sssd тощо), то я не впевнений, чому це не було б нормально.
дероберт

Я намагався повторити це в тестовому стані. Під час входу в систему як користувач (наприклад, foo), я бачу попереджувальне повідомлення, оскільки "дозволи повинні бути встановлені на 644". Я вірю, що попередження можна ігнорувати. Але я не хочу, щоб користувачі лабораторії знали, що їх облікові записи користувачів були порушені. Коли я змінюю rwx на просто r у команді setfacl, я не в змозі побачити каталог foo.
Рамеш

2
@Ramesh Вам потрібно + x, щоб фактично пройти каталоги. Я не впевнений, що говорить вам про те, що каталог повинен бути 644, це нерозумно, він повинен бути 755 або подібним. Але в будь-якому випадку користувач побачить знак + у полі дозволу ls і може запустити getfacl, щоб побачити його - це не секрет.
дероберт

Гаразд, я отримував попереджувальне повідомлення: Каталог $ HOME користувача повинен належати користувачеві, а не користуватися іншими користувачами. Я видалив дозвіл на запис в команді setacl і тепер не бачу попереджувального повідомлення.
Рамеш

0

На жаль, насправді немає жодного способу зробити це безпосередньо на ванільному Linux.

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

Однак, щоб досягти саме того, про що ви просите, вам доведеться використовувати Apparmor або SELinux, щоб досягти того, що ви хочете. На жаль, жоден із цих інструментів не є простим у налаштуванні та використанні, і приклади далеко не за рамками швидкої відповіді.


1
Linux вже деякий час підтримує ACL. ACL дозволяють вам це зробити.
дероберт

Так, я просто знайшов це рішення і оновив відповідь. Однак я все ще не знаю, чи можна це використовувати на сервері, і це теж для користувачів LDAP.
Рамеш

@derobert З того, що я розумію, неможливо надати комусь дозволу кореневого рівня через sudo, одночасно використовуючи ACL для обмеження доступу. Для цього вам потрібно використовувати SELinux або інший MAC.
Швейцарія

1
Я думаю, коли ОП каже користувачеві "суперпользователь", він означає, що буквально - не корінь.
derobert
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.