Запуск всех программ в каталоге через Sudo в Linux
В этом кратком руководстве объясняется, как разрешить пользователю запускать все программы в каталоге через sudo и запретить пользователю запускать программы в других каталогах в Linux и Unix-подобных системах.
Введение
Существует множество способов запретить пользователям выполнять определенные действия в Linux. Вы можете разрешить пользователю запускать только определенные команды и задачи. Вы можете запретить пользователям изменять переменные среды или переключаться на каталоги других пользователей. Ознакомьтесь со следующим руководством, чтобы узнать больше о том, как ограничить доступ пользователя.
Как ограничить доступ пользователя к системе Linux
В этом руководстве мы разрешим пользователям запускать только определенные команды. В частности, мы разрешаем пользователю запускать ТОЛЬКО программы, доступные в определенном каталоге. Пользователь может выполнять только эти команды через sudo, но не команды из других мест.
Запуск всех программ в каталоге через Sudo
В демонстрационных целях я собираюсь создать тестового пользователя с именем "user1" и именем root
.
[root@Almalinux8CT ~]# useradd user1
Установите пароль для пользователя user1 с помощью команды:
[root@Almalinux8CT ~]# passwd user1
Затем отредактируйте файл /etc/sudoers
с помощью команды:
[root@Almalinux8CT ~]# visudo
Добавьте полный путь к каталогу (включая косую черту в конце), содержащему все программы. Например:
user1 ALL=(root) /usr/bin/
Разрешить пользователю 1 запускать все программы в каталоге
Согласно приведенной выше строке, пользователь 1 может запускать ТОЛЬКО программы в каталоге /usr/bin/
. Сохраните файл и закройте его.
Выйдите из сеанса root
и войдите снова как пользователь user1.
Из сеанса user1 запустите любую программу от имени пользователя root из разрешенного каталога, например /usr/bin/
:
[user1@Almalinux8CT ~]$ sudo -u root /usr/bin/touch ostechnix.txt
Приведенная выше команда должна работать нормально и создает текстовый файл с именем ostechnix.txt
в текущем каталоге. Обратите внимание, что пользователь1 может запускать команды ТОЛЬКО из каталога /usr/bin/
. Он даже не может запускать программы из подкаталога каталога /usr/bin/
.
Затем проверьте, может ли пользователь1 запускать команды из другого каталога через sudo:
[user1@Almalinux8CT ~]$ 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.
Запуск всех программ в каталоге через Sudo
Видеть? Пользователю 1 не разрешено запускать команды в каталоге /usr/local/bin/
.
Как уже говорилось, пользователь1 имеет право запускать любую команду только из каталога /usr/bin/
, но не из подкаталога каталога /usr/. bin/
и другие каталоги.
Я также должен сказать, что этот совет эффективен только тогда, когда пользователь 1 запускает команды от имени пользователя root через sudo. Пользователь1 по-прежнему может запускать все команды из любого места системного пути.
Например, пользователь1 может запустить:
[user1@Almalinux8CT ~]$ yt-dlp --help
Но не как пользователь root
:
[user1@Almalinux8CT ~]$ sudo -u root /usr/local/bin/yt-dlp --help
Здесь я использовал программу yt-dlp для демонстрационных целей. Вы можете использовать любую программу по вашему выбору.
Чтобы вернуться к исходным настройкам по умолчанию, просто удалите строку, добавленную вами в файл /etc/sudoers
.
Разрешить пользователям запускать команды через Sudo из пользовательского каталога
Вы также можете создать собственный каталог и хранить в нем все исполняемые двоичные файлы. Например, я собираюсь создать следующий каталог от имени пользователя root
:
[root@Almalinux8CT ~]# mkdir /home/user1/programs
Скопируйте все двоичные исполняемые файлы, которые вы хотите запустить пользователем1. Затем добавьте полный путь к каталогу в файл /etc/sudoers
:
user1 ALL=(root) /home/user1/programs/
Выйдите из корневого сеанса, войдите снова как пользователь user1 и проверьте, можете ли вы запускать какие-либо программы из других каталогов через sudo. Пользователь1 не может запускать программы через sudo из других каталогов, кроме разрешенного каталога /home/user1/programs/
.
Более подробную информацию можно найти на страницах руководства.
man sudoers
Заключение
В этом руководстве мы обсудили, как разрешить пользователю запускать все программы в каталоге через sudo и запретить тому же пользователю запускать команды из других мест.
Я не смог найти никаких практических вариантов использования этого совета. Но, каковы бы ни были причины, если вы когда-нибудь задавались вопросом, как запускать программы в каталоге с правами root через sudo, это руководство определенно поможет.
Связанное чтение:
- Как предотвратить аргументы команд с помощью Sudo в Linux