🐧 Как разрешить выполнение приложений с sudo в определенном каталоге на Linux |

🐧 Как разрешить выполнение приложений с sudo в определенном каталоге на Linux

Мануал

Это краткое руководство объясняет, как разрешить пользователю запускать все программы в каталоге через sudo и запретить ему запускать программы в других каталогах в Linux и Unix-подобных системах.

Введение

В Linux существует множество способов ограничить пользователя в выполнении определенных действий.

Вы можете разрешить пользователю выполнять только определенные команды и задачи.

Вы можете запретить пользователям изменять переменные среды или переходить в каталоги других пользователей.

Ознакомьтесь со следующим руководством, чтобы узнать больше о том, как ограничить доступ пользователей.

👥 Руководство по Linux PAM

В этом руководстве мы собираемся разрешить пользователям выполнять только определенные команды.

В частности, мы разрешим пользователю запускать только те программы, которые доступны в определенном каталоге.

Пользователь сможет выполнять только опеределенные команды вместе с sudo, а команды из других мест не сможет.

Запуск всех программ в каталоге вместе с Sudo

Для демонстрации я собираюсь создать тестового пользователя с именем “user1” от root.

useradd user1

Установим пароль для пользователя user1 с помощью команды:

passwd user1

Затем отредактируйте файл /etc/sudoers с помощью команды:

  visudo

Добавьте полный путь к каталогу (включая косую черту в конце), который содержит все программы.

Например:

user1   ALL=(root)      /usr/bin/

 

В соответствии с приведенной выше строкой, пользователь user1 может запускать программы ТОЛЬКО из каталога /usr/bin/.

Сохраните файл и закройте его.

Выйдите из сеанса root и снова войдите в систему под именем user1.

Из сессии user1 запустите любую программу от имени root из разрешенного каталога, т.е. /usr/bin/:

sudo -u root /usr/bin/touch itsecforu.txt

Приведенная выше команда должна сработать нормально и создать текстовый файл с именем itsecforu.txt в текущем каталоге.

Обратите внимание, что пользователь user1 может запускать команды ТОЛЬКО из каталога /usr/bin/.

Он даже не может запускать программы из подкаталога каталога /usr/bin/.

Далее проверьте, может ли user1 запускать команды из других директорий через sudo:

sudo -u root /usr/local/bin/yt-dlp --help

Вы увидите следующую ошибку:

Sorry, user user1 is not allowed to execute '/usr/local/bin/yt-dlp --help' as root on Almalinux8CT.

Видите?

Пользователю user1 не разрешено выполнять команды в каталоге /usr/local/bin/.

Как уже было сказано, пользователь user1 имеет право запускать любые команды только из каталога /usr/bin/, но не из подкаталога /usr/bin/ и других каталогов.

Также стоит сказать, что этот совет эффективен только в том случае, если user1 выполняет команды от имени пользователя root через sudo.

user1 может выполнять все команды из любой точки системного пути.

Например, он может выполнить:

yt-dlp --help

Но не от пользователя root:

sudo -u root /usr/local/bin/yt-dlp --help

Здесь используется программа yt-dlp для демонстрации.

Вы можете использовать любую программу по своему выбору.

Чтобы вернуться к первоначальным настройкам по умолчанию, просто удалите строку, которую вы добавили в файл /etc/sudoers.

Авторизация пользователей для выполнения команд через Sudo из пользовательской директории

Вы также можете создать пользовательский каталог и хранить в нем все исполняемые двоичные файлы.

Например, я собираюсь создать следующую директорию под пользователем root:

mkdir /home/user1/programs

Скопируйте все бинарные исполняемые файлы, которые вы хотите запускать от имени user1.

Затем добавьте полный путь к каталогу в файл /etc/sudoers:

user1   ALL=(root)      /home/user1/programs/

Выйдите из сеанса root и снова войдите в систему как user1 и проверьте, можете ли вы запускать какие-либо программы из других каталогов через sudo.

Пользователь user1 не может запускать программы через sudo из других каталогов, кроме разрешенного каталога /home/user1/programs/.

Для получения более подробной информации обратитесь к man-страницам.

man sudoers

Заключение

В этом руководстве мы обсудили, как разрешить пользователю запускать все программы в каталоге через sudo и запретить этому же пользователю запускать команды из других мест.

Я не смог найти никаких практических примеров использования этого совета.

Но, независимо от причин, если вы когда-нибудь задавались вопросом, как запускать программы в каталоге от имени root через sudo, это руководство определенно поможет вам.

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий