Думаю, это почти невозможно, потому что вы должны запретить пользователю использовать любой редактор, даже если это не помешает ему, потому что он может установить другой или переместить двоичный файл в любое другое место и использовать его.
Главное, что вы не можете добавлять пользователя в sudoers
и давать ему все разрешения, кроме некоторых.
Вы должны делать это наоборот.
Я, в основном, согласен с Виссамом Аль-Руджулой по этому поводу.
Нам нужно добавить несколько пользователей в файл sudoers
Вам, , действительно это нужно? Возможно, есть другие способы, используя acl
или обычные разрешения UNIX.
Как уже отмечал Виссам Аль-Руджула, попытка «занести в черный список» определенные команды на самом деле является действительно плохой идеей (читайте ниже из man sudoers
, курсив мой):
Note, however, that using a ‘!’ in conjunction with the built-in ALL alias to allow a user to run “all but a few” commands rarely works as intended
Вместо этого вы можно указать «белый список», например фактические команды, которые пользователи могут выполнять . Примерно так:
user1 ALL=/sbin/shutdown
Вышеупомянутое позволит user1
завершить работу. Вы можете добавить другие команды в список, разделенный запятыми.
Подробнее об этом читайте здесь .
su
/ sudo
доступ - это согласие, а не отказ. Как только они смогут получить корневую оболочку, они смогут обойти любые другие меры защиты, которые вы устанавливаете. Если у них есть определенные вещи, которые необходимо запустить, а управление файлом sudoers
слишком сложно (что, вероятно, является лучшим подходом в целом), подумайте о написании небольших одноцелевых двоичных файлов, которые запускают это, а затем вместо этого установите для них флаг setuid
.
Вы рассматривали возможность использования SELinux? Какой дистрибутив вы используете?
Возможно, можно создать нового пользователя SELinux и дать ему только необходимые привилегии (доступ к ролям). Это будет опция, так что вам нужно будет перечислить все, что пользователь должен делать.