Редактирование файла sudoers для ограничения команд пользователя

8

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

РЕДАКТИРОВАТЬ: команды, которые я действительно хочу убрать, это остановка и перезагрузка ... это заставляет меня думать, что существуют специальные системные вызовы для остановки и перезагрузки. Можете ли вы принимать системные вызовы от пользователя? Если нет, то это потому, что система разрешений unix абстрагируется от системных вызовов, пренебрегая этим?

Девин
источник

Ответы:

5

Еще один способ взглянуть на это состоит в том, что если пользователи имеют практически неограниченный root-доступ, они могут легко получить полный root-доступ.

Хотя вы можете что-то придумать, это легко обойти.

SElinux - это возможный способ, хотя для его изучения требуется много.

LapTop006
источник
3

Чтобы сделать то, что вы хотите (оставить в пользовательской форме режимы остановки, перезагрузки и завершения работы), вам нужно изучить содержимое SElinux, чтобы пользователь не мог выполнять эти системные вызовы. В противном случае пользователь сначала запустит / bin / sh, а затем запустит / bin / halt, не заходя в sudo.

pjz
источник
2
Или любую из множества программ, из которых вы можете получить оболочку, или их собственный скрипт.
Рональд Поттол
3

Записывайте все, что они делают, с помощью sudo, вероятно, у вас есть какой-то способ донести мысль, чтобы больше не повторять это.

Defaults logfile=/var/log/sudolog 

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

Рональд Поттол
источник
Вам понадобится централизованное ведение журнала, и вам придется кричать на них, если они запускают оболочку. Оболочка может быть получена из редактора, например. или человек мужчина и т. д.
Джеймс
3

Да и нет ... Вы можете запретить пользователю запускать определенный файл, поставив перед ним файл с ударом (!), Однако вы не можете запретить пользователю копировать файл в другое место и затем запускать его оттуда.

User_Alias    ADMINS = peter, bob, bunny, %operator

ADMINS        ALL    = !/usr/bin/su, !SHELLS

Предоставление доступа к определенным файлам от имени другого пользователя

Джереми Вьет
источник
Пример того, как установить "SHELLS" выше: Cmnd_Alias ​​SHELLS = / bin / sh, / bin / ksh, / bin / bash, / bin / zsh, \ / bin / csh, / bin / tcsh, \ / usr / bin / login, / usr / bin / su
pulcher
Куча утилит позволит вам запускать команды от имени пользователя root (tar, links и nmap), поэтому я искренне считаю, что реальное решение состоит в том, чтобы: а) команды из белого списка, которые вы хотите запускать от имени пользователя root, или б) просто нанять кто-то, кому ты доверяешь
какой-то Linux Nerd
2

Если пользователь действительно хочет перезагрузиться, он найдет способ. sudo -s, sudo -i, sudo $EDITOR /etc/sudoers... может быть использован для удаления ваших ограничений.

А в Unix-подобных системах вам разрешено перезагружать систему, пока вы являетесь пользователем root (uid 0). Если вы найдете способ ограничить эти системные вызовы, можно сделать это:

пользователь $ echo b | sudo tee / proc / sysrq-trigger

или его вариация. Или перезагрузите компьютер, вызвав панику ядра. Или...

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

user1686
источник
Это отстой, что у Linux больше нет уровней безопасности. Они были не идеальны, но человек их легко настроить. Они не мешали перезагрузке, но мешали многим другим вещам. А так как они были настолько просты, вы можете использовать их во всех системах. Никаких настроек и тому подобного.
Томас
Разве они не в BSD, не в Linux?
user1686
1

конечно, как root вызовите visudo и запретите пользователю 'запускать / sbin / halt:

user ALL=(ALL) NOPASSWD: !/sbin/halt
ThorstenS
источник
Я считаю, что запрос был для списка команд, которые пользователь не может выполнять
Уэйн
1

В этом случае существует риск: часто могут быть способы выполнить одно и то же действие. Например, telnit 6 или init 6 тоже выполняет перезагрузку. Там может быть способ заставить ядро ​​сделать дамп ядра и перезагрузить тоже.

Julien
источник
1

Следующая строка должна позволить пользователю «jim» запускать все, кроме / usr / bin / kill и / usr / bin / su.

jim          ALL= !/usr/bin/kill,!/usr/bin/su
Джефф Этвуд
источник
0

Это не проверено и YMMV, но как насчет настройки cmd_list команд, которые вы не хотите запускать, а затем использовать! Cmd_list для указанной группы / пользователя?

У меня нет доступа, чтобы проверить это, и я просто заглянул на страницу руководства в онлайн- руководстве Sudoers, поэтому некоторые эксперты меня поправят, если я ошибаюсь

Wayne
источник