Thank you for reading this post, don't forget to subscribe!
как разрешить пользователю запускать все программы в каталоге через sudo и запретить ему запускать программы в других каталогах в Linux и Unix-подобных системах.
В Linux существует множество способов ограничить пользователя в выполнении определенных действий.
Вы можете разрешить пользователю выполнять только определенные команды и задачи.
Вы можете запретить пользователям изменять переменные среды или переходить в каталоги других пользователей.
В этом руководстве мы собираемся разрешить пользователям выполнять только определенные команды.
В частности, мы разрешим пользователю запускать только те программы, которые доступны в определенном каталоге.
Пользователь сможет выполнять только определенные команды вместе с sudo, а команды из других мест не сможет.
Запуск всех программ в каталоге вместе с Sudo
Для демонстрации я собираюсь создать тестового пользователя с именем “user1” от root.
Установим пароль для пользователя user1 с помощью команды:
Затем отредактируйте файл /etc/sudoers с помощью команды:
Добавьте полный путь к каталогу (включая косую черту в конце), который содержит все программы.
Например:
1 |
user1 ALL=(root) /usr/bin/ |
В соответствии с приведенной выше строкой, пользователь user1 может запускать программы ТОЛЬКО из каталога /usr/bin/.
Сохраните файл и закройте его.
Выйдите из сеанса root и снова войдите в систему под именем user1.
Из сессии user1 запустите любую программу от имени root из разрешенного каталога, т.е. /usr/bin/:
Приведенная выше команда должна сработать нормально и создать текстовый файл с именем itsecforu.txt в текущем каталоге.
Обратите внимание, что пользователь user1 может запускать команды ТОЛЬКО из каталога /usr/bin/.
Он даже не может запускать программы из подкаталога каталога /usr/bin/.
Далее проверьте, может ли user1 запускать команды из других директорий через sudo:
Вы увидите следующую ошибку:
1 |
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 может выполнять все команды из любой точки системного пути.
Например, он может выполнить:
Но не от пользователя root:
Здесь используется программа yt-dlp для демонстрации.
Вы можете использовать любую программу по своему выбору.
Чтобы вернуться к первоначальным настройкам по умолчанию, просто удалите строку, которую вы добавили в файл /etc/sudoers.
Авторизация пользователей для выполнения команд через Sudo из пользовательской директории
Вы также можете создать пользовательский каталог и хранить в нем все исполняемые двоичные файлы.
Например, я собираюсь создать следующую директорию под пользователем root:
Скопируйте все бинарные исполняемые файлы, которые вы хотите запускать от имени user1.
Затем добавьте полный путь к каталогу в файл /etc/sudoers:
1 |
user1 ALL=(root) /home/user1/programs/ |
Выйдите из сеанса root и снова войдите в систему как user1 и проверьте, можете ли вы запускать какие-либо программы из других каталогов через sudo.
Пользователь user1 не может запускать программы через sudo из других каталогов, кроме разрешенного каталога /home/user1/programs/.