Использование pam_succeed_if.so для разрешения беспарольного su для заданной группы

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

cat text.txt | sort > text2.txt
2
23.03.2017, 11:16
1 ответ

Ничто в документации pam_succeed_if , похоже, не указывает на то, что он будет поддерживать несколько союзов, поэтому вам нужно делать это за пределами модуль.

Если бы вы писали необходимое правило, их было бы просто объединить, создав два отдельных правила:

auth  required  pam_succeed_if.so user = srvuser
auth  required  pam_succeed_if.so use_uid user ingroup maintainers

Но с достаточным правилом, как в случае, который завершает обработка, когда возвращается положительный результат, это не сработает, а вместо этого превратится в условие или . Но PAM поддерживает своего рода управление потоком, позволяя пропускать некоторые правила на основе возвращаемого значения предыдущего модуля. См. Документацию здесь .

Это должно выполняться правилом pam_permit , пока модули pam_succeed_if возвращают значение true, но переходите к следующим правилам, если они возвращают что-либо, кроме успеха .

auth  [success=ok default=2]  pam_succeed_if.so user = srvuser
auth  [success=ok default=1]  pam_succeed_if.so use_uid user ingroup maintainers
auth  [success=done default=ignore]  pam_permit.so
... # other modules

Как видите, синтаксис ужасен, и я бы посоветовал протестировать конфигурацию, прежде чем даже пытаться использовать ее где-нибудь.


Конечно, чтобы позволить членам некоторой группы запускать процесс с привилегиями другого пользователя, вам не обязательно нужны su , sudo или PAM. С обычными разрешениями для файлов вы можете создать двоичный файл setuid и разрешить его выполнение только членам данной группы:

# chown srvuser.maintainers ls
# chmod 4510 ls
# ls -l ls
-r-s--x--- 1 srvuser maintainers 118280 Mar 26 19:03 ls

Обратной стороной является то, что в отличие от su и sudo , запуск двоичного файла setuid нигде не регистрируется, и что двоичный файл setuid может быть изменен или удален процессами, запущенными от имени целевого пользователя. Чтобы обойти это, вы можете создать простую программу-оболочку с фиксированной функцией, чтобы регистрировать выполнение, setuid для цели, а затем exec фактической команды.

1
27.01.2020, 22:19

Теги

Похожие вопросы