Это краткое руководство объясняет, как разрешить пользователю запускать все программы в каталоге через sudo и запретить ему запускать программы в других каталогах в Linux и Unix-подобных системах.
Введение
В Linux существует множество способов ограничить пользователя в выполнении определенных действий.
Вы можете разрешить пользователю выполнять только определенные команды и задачи.
Вы можете запретить пользователям изменять переменные среды или переходить в каталоги других пользователей.
Ознакомьтесь со следующим руководством, чтобы узнать больше о том, как ограничить доступ пользователей.
В этом руководстве мы собираемся разрешить пользователям выполнять только определенные команды.
В частности, мы разрешим пользователю запускать только те программы, которые доступны в определенном каталоге.
Пользователь сможет выполнять только опеределенные команды вместе с sudo, а команды из других мест не сможет.
Запуск всех программ в каталоге вместе с Sudo
Для демонстрации я собираюсь создать тестового пользователя с именем “user1” от root.
Установим пароль для пользователя user1 с помощью команды:
Затем отредактируйте файл /etc/sudoers с помощью команды:
Добавьте полный путь к каталогу (включая косую черту в конце), который содержит все программы.
Например:
user1 ALL=(root) /usr/bin/
В соответствии с приведенной выше строкой, пользователь user1 может запускать программы ТОЛЬКО из каталога /usr/bin/.
Сохраните файл и закройте его.
Выйдите из сеанса root и снова войдите в систему под именем user1.
Из сессии user1 запустите любую программу от имени root из разрешенного каталога, т.е. /usr/bin/:
Приведенная выше команда должна сработать нормально и создать текстовый файл с именем itsecforu.txt в текущем каталоге.
Обратите внимание, что пользователь user1 может запускать команды ТОЛЬКО из каталога /usr/bin/.
Он даже не может запускать программы из подкаталога каталога /usr/bin/.
Далее проверьте, может ли user1 запускать команды из других директорий через sudo:
Вы увидите следующую ошибку:
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:
user1 ALL=(root) /home/user1/programs/
Выйдите из сеанса root и снова войдите в систему как user1 и проверьте, можете ли вы запускать какие-либо программы из других каталогов через sudo.
Пользователь user1 не может запускать программы через sudo из других каталогов, кроме разрешенного каталога /home/user1/programs/.
Для получения более подробной информации обратитесь к man-страницам.
Заключение
В этом руководстве мы обсудили, как разрешить пользователю запускать все программы в каталоге через sudo и запретить этому же пользователю запускать команды из других мест.
Я не смог найти никаких практических примеров использования этого совета.
Но, независимо от причин, если вы когда-нибудь задавались вопросом, как запускать программы в каталоге от имени root через sudo, это руководство определенно поможет вам.
см. также:
- 🐳 Почему процессы в контейнерах Docker не должны запускаться от имени Root
- 😈 Как сбросить или восстановить пароль пользователя Root во FreeBSD
- 🐳 Что такое Docker без root (rootless)?
- 🐧 Как удалить не root пользователя с UID 0 в системах Linux
- 🐧 Что такое chroot jail и как им пользоваться?
- 🐉 Как предоставить пользователю права root на Kali Linux
- 🐉 Как включить вход под учеткой root на Kali Linux
- 🖧 Как разрешить вход пользователю root по SSH в Ubuntu 20.04 Focal Fossa Linux
- 🐧 Как стать пользователем root на Linux
- 🐧 Как запустить сервисы Systemd без пользователя root / sudo