Intereting Posts
Синхронизировать файлы с Mac на флешку – автоматически? Перенаправление ввода (<) добавляет символ новой строки? Выполнять команды, поступающие из последовательного порта Bash: изменить переменную, определенную в верхней части скрипта Как выполнить операцию «&» последовательно Подсчитайте общее количество подпроцессов (рекурсивно), порожденных командой Bash: date -d выбрасывает «недопустимую дату», когда дата параметризуется Как подавить все уведомления по электронной почте от cron для конкретной работы? Сортировка таблицы HTML BIND9, разрешение имен с двумя видами и сетями Как я могу определить время последней активности harddisk / samba или zfs для ifplugd как действия? Проверка типа NAT Как я могу экспортировать свою цветовую колокольню? iostat (столбцу svctm больше не доверяют), что использовать вместо этого? Есть ли способ демонстрации потокового видео h264 из flv (h264, aac)?

Запуск sudo ограниченных команд путем создания софт-ссылки

У меня есть sudo доступ к одной из наших тестовых машин, и следующие команды ограничены для меня:

 user_sree@sel8585:~> sudo -l user_sree's password: User user_sree may run the following commands on this host: (ALL) ALL, (ALL) !/bin/sh, !/bin/bash, !/bin/ksh, (ALL) !/bin/su, (ALL) !/usr/bin/passwd, !/usr/sbin/useradd, !/usr/sbin/userdel, !/usr/sbin/usermod, !/usr/sbin/visudo 

Который говорит, что я не могу запустить visudo или /usr/sbin/visudo . И я подтвердил это:

 user_sree@sel8585:~> sudo /usr/sbin/visudo Sorry, user user_sree is not allowed to execute '/usr/sbin/visudo' as root on sel8585. 

Теперь из любопытства я создал символическую ссылку на /usr/sbin/visudo :

 ln -s /usr/sbin/visudo myvi` 

Я попытался получить доступ к файлу sudoers, позвонив по этой мягкой ссылке, и он отлично работает.

 user_sree@sel8585:~> sudo /home/user_sree/myvi myvi: /etc/sudoers.tmp unchanged 

Аналогичным образом я смог запустить другие ограниченные команды, создав программные ссылки.

Если я настрою sudo для других, как я могу остановить других от этого? Я не хочу ограничивать их созданием программных ссылок.

 user_sree@sel8585:~> sudo -l | grep bash (ALL) ALL, (ALL) !/bin/sh, !/bin/bash, !/bin/ksh, (ALL) !/bin/su, (ALL) !/usr/bin/passwd, !/usr/sbin/useradd, !/usr/sbin/userdel, !/usr/sbin/usermod, 

По аналогии:

 user_sree@sel8585:~> sudo sh -c 'ls' Sorry, user user_sree is not allowed to execute '/usr/bin/sh -c ls' as root on sel8585. 

Теперь с mybash связанным с /bin/bash : (в моей системе /usr/bin/sh есть ссылка на /bin/bash )

 user_sree@sel8585:~> sudo /home/user_sree/mybash -c 'ls' 

bin mybash myvi sudoers.back test.pp

 user_sree@sel8585:~> ll my* lrwxrwxrwx 1 user_sree users 9 Jul 16 14:10 mybash -> /bin/bash lrwxrwxrwx 1 user_sree users 16 Jul 16 14:13 myvi -> /usr/sbin/visudo 

PS:

 Cmnd_Alias NSHELLS = /bin/sh,/bin/bash,/bin/ksh Cmnd_Alias NSU = /bin/su Cmnd_Alias NCMDS = /usr/bin/passwd,/usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/usermod,/usr/sbin/visudo user_sree ALL=(ALL) ALL, !NSHELLS, !NSU, !NCMDS 

Выше указаны записи в /etc/sudoers .

Если честно, если вы разрешите пользователям запускать все, кроме нескольких команд, вы столкнетесь с проблемами.

Например, вы запрещаете доступ к user* командам, однако пользователи все равно могут запускать vipw или даже просто редактировать файлы с паролями и теневыми файлами с помощью текстового редактора. И если вы заблокируете доступ к vi например, что мешает им устанавливать другой текстовый редактор и использовать это? Или даже использовать cat или оболочку встроенного echo для добавления нового пользователя?

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