Как я могу ограничить моего пользователя выполнять только выборочные команды. У меня есть пользователь TOMC в группе TOMC. Мне нужно, чтобы этот пользователь был пользователем sudo, а затем имел ограниченный доступ к bash. Я пробовал следующий код в /etc/sudoers
файле, но он не работает, так как пользователь может выполнять другие команды, такие как mkdir
,rm
%tomc ALL=/bin/bash,/usr/bin/vim /*
sudo bash
в большинстве случаев эквивалентно наличию пароля root. Изsudo bash
оболочки они могут запускать любую команду администратора, устанавливать или удалять программное обеспечение, удалять пользователей и каталоги и т. Д.Ответы:
Вы можете пойти по этому неправильному пути. Вместо того, чтобы предоставлять пользователю «ограниченную» оболочку bash, вы должны предоставить им только доступ к командам, которые ему понадобятся для запуска от имени пользователя root. Например, в вашем файле sudoers:
Будьте внимательны, разрешив пользователям запускать vim от имени пользователя root. Vim имеет множество встроенных функций, таких как экранирование в оболочку и возможность запуска команд из vim. В зависимости от вашего распространения, вы можете иметь в
sudoedit
наличии. Он работает так же, как обычный Vim, за исключением того, что он предназначен для обработки экранирования оболочки и тому подобного.источник
vim
можете запускать произвольные команды оболочки. И вторая строка, вероятно, позволитless /var/log/myapp/../../../etc/shadow
! Согласно моим экспериментам, безопасно использовать sudo ! Но если вы можете избежать*
s и использоватьsudoedit
вместо этого,vim
то вы можете быть в порядке.*
не достаточно! Попав вless
качествеroot
пользователя, попробуйте набрать!tail /var/log/secure
. Как ты себя чувствуешь? ИзучитеNOEXEC
тег. Но примите к сведению сообщение @ joeytwiddle: безопасность sudo действительно трудна.На моей Synology Diskstation под управлением DSM 6 только пользователи с правами администратора могут последовательно подключаться к ssh (пользователи без прав администратора имеют оболочку как / sbin / nologin в / etc / passwd - вы можете установить ее в / bin / sh, чтобы временно разрешить ssh, но при перезагрузке файл / etc / passwd сбрасывается). По этой причине требуется некоторое ограничение sudo для учетной записи, которая в противном случае существует только для выполнения, например, / sbin / poweroff. Следующие строки в / etc / sudoers работали для меня:
Перевод: запретить все команды, затем разрешить только желаемую команду (без запроса пароля в этом случае).
При такой конфигурации sudo запрашивает пароль, а затем не выполняет команды, отличные от белого списка:
источник