Поиск по сайту:

Запуск всех программ в каталоге через 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

Статьи по данной тематике