Я хотел бы создать пользователей, которые подчиняются другому пользователю в Linux. Под этим я подразумеваю, что хочу, чтобы старший пользователь был связан с подчиненными пользователями двумя способами:

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

Это возможно? Если так, то как? Я знаю, что могу справиться с первым делом с помощью групп, но второе на самом деле является более важным.

Я немного искал решение, но не смог найти. Я не уверен, означает ли это, что это не может быть сделано / действительно неясно, или у меня просто нет правильных слов, чтобы выразить это.

1 ответ1

1

Первая часть - доступ к файлам - вообще невозможна на простом Linux. Вы можете делать что-то с группами или ACL для файлов, но ничто не мешает владельцу файла использовать chmod чтобы сделать свои собственные файлы приватными.

В Linux не существует такой вещи, как « X подчинен root поэтому root может обращаться к файлам X ».
Вместо этого root просто имеет возможность "переопределить все проверки прав доступа" (cap_dac_override). Это все.

Тем не менее, возможно, можно написать LSM, который делает это - тип модуля, который используют SELinux или SMACK ... Или вы можете просто использовать su <subordinate_user> и читать их файлы следующим образом:


Вторая часть возможна путем написания пользовательских правил sudo или специальной конфигурации PAM для su (хотя, к сожалению, я не знаю ни одного из существующих модулей PAM, которые могли бы помочь).

Например, если вы хотите разрешить пользователю X запускать sudo -u Z -s (эквивалентно su Z), правило будет следующим:

X    ALL=(Z) ALL

Вы также можете использовать %groupname для указания группы Unix:

superiorguy    ALL=(%subordinates) ALL

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .