Отключить разрешение sudo для пользователя из командной строки
Я активировал пользователя root в Ubuntu и хочу использовать Ubuntu в качестве сервера без DE. Для этого я хочу отключить привилегию sudo, предоставленную первому пользователю. Как я могу сделать это из командной строки? Я знаю, что могу использовать графический интерфейс, но как это сделать из командной строки?
3 ответа
У данного пользователя есть права sudo, потому что он находится в admin
группа. Как прокомментировал wojox, вы можете использовать visudo
и удалите привилегии sudo из группы администраторов, но это уберет возможности sudo у всех членов группы администраторов, а не только у одного пользователя.
Кроме того, вы можете удалить пользователя из группы администраторов. Если экран ориентирован vi
достаточно считать командную строку, запустить vigr
и удалите имя пользователя из соответствующей строки.
Для "чистого" решения командной строки попробуйте gpasswd
, так как он администрирует /etc/group и может добавлять и удалять пользователей из групп.
root@toki:~# id -Gn username
username adm dialout cdrom plugdev lpadmin admin sambashare
# ^- the group to remove
root@toki:~# gpasswd -d username admin
Removing user username from group admin
root@toki:~# id -Gn username
username adm dialout cdrom plugdev lpadmin sambashare
# ^- username not a member
root@toki:~# gpasswd -a username admin
Adding user username to group admin
root@toki:~# id -Gn username
username adm dialout cdrom plugdev lpadmin admin sambashare
Ниже мой первый ответ, прежде чем я понял, что был менее глупый способ сделать это.
Если вы хотите более сложный способ сделать это, вы можете использовать usermod
,
Вот цитата из usermod
справочная страница:
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
A list of supplementary groups which the user is also a member of.
Each group is separated from the next by a comma, with no intervening
whitespace. The groups are subject to the same restrictions as the
group given with the -g option.
If the user is currently a member of a group which is not listed, the
user will be removed from the group. This behaviour can be changed via
the -a option, which appends the user to the current supplementary group
list.
Таким образом, вы должны указать все группы для пользователя, кроме admin
,
root@toki:~# id username
uid=1000(username) gid=1000(username) groups=1000(username),4(adm),20(dialout),24(cdrom),46(plugdev),111(lpadmin),119(admin),122(sambashare)
root@toki:~# usermod -G 4,20,24,46,111,122 username
root@toki:~# id username
uid=1000(username) gid=1000(username) groups=1000(username),4(adm),20(dialout),24(cdrom),46(plugdev),111(lpadmin),122(sambashare)
Наконец, это нарушает дух вопроса, но можно было бы напечатать users-admin
из командной строки для изменения пользователей и групп.
Какую бы мудрость можно ни найти в приведенных выше ответах, я решил проблему включения учетной записи root и отключения sudo для указанного пользователя следующим образом.
Сначала включите учетную запись root:
$ sudo passwd root
Больше информации в документации по Ubuntu.
Затем:
- стать корнем
- сделайте резервную копию и затем отредактируйте /etc/group
- стать пользователем снова, чтобы проверить изменения
То есть:
$ su
# cp /etc/group /etc/group.bak
# nano /etc/group # find a line like 'sudo:x:27:guest', remove the
# user name (i.c. 'guest') and save the file
# exit,
$ [try any sudo command]
Пользователь 'guest' теперь удален из файла sudoers. Если все прошло хорошо, любая команда sudo должна вернуть сообщение, подобное этому:
guest is not in the sudoers file. This incident will be reported.
Гость, входящий в систему на этом компьютере, больше не может случайно или добровольно связываться с системой, поскольку для этого вам нужно быть пользователем root. Конечно, если вы добавите нового пользователя, вам нужно будет повторить редактирование /etc/group.
Ура!
- linuxrev
(Ubuntu 12.04)
Предупреждение
Осторожно, таким образом вы можете выйти из нашей системы! Всегда убедитесь, что пользователь root сохраняет свои права, и вы можете получить к нему доступ. Держите корневой терминал открытым заранее, чтобы вы могли отменить изменения. Проверьте настройки в другом терминале, прежде чем закрывать свой root-терминал!
soduers
Как описано в другом ответе. редактировать /etc/sudoers
вызывая visudo в оболочке:
sudo select-editor # this is optional. it will allow you to select your default editor in shell
sudo visudo
Затем измените строку, которая говорит что-то похожее на это:
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
к этому:
# root may gain root privileges
root ALL=(ALL) ALL
Или удалите строку, если вы уверены, что ваша учетная запись root включена.
группа
Пользователь по умолчанию является членом группы "admin". Если вы предпочитаете это, вы также можете отозвать членство пользователей в этой группе. Сделайте это, перейдя по моей последней ссылке или удалите его имя из строки admin:x:120:defaultuser
в /etc/group
файл:
cp -n /etc/group /etc/group.bak && \
sed -i 's/\(admin:x.*\)defaultuser\(.*\)/\1\2/g' /etc/group