Отключить разрешение sudo для пользователя из командной строки


18

Я активировал пользователя root в Ubuntu и хочу использовать Ubuntu в качестве сервера без DE. Для этого я хочу отключить привилегию sudo, предоставленную первому пользователю. Как я могу сделать это из командной строки? Я знаю, что могу использовать графический интерфейс, но как это сделать из командной строки?


В зависимости от того, как вы настраиваете свои группы, введите visudo
wojox

Ответы:


14

У данного пользователя есть права 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из командной строки, чтобы изменить пользователей и группы.


Похоже, что группа для удаления на Precise теперь sudoвместо этого
Joril

2

Какую бы мудрость можно ни найти в приведенных выше ответах, я решил проблему включения учетной записи 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)


1

Предупреждение

Осторожно, таким образом вы можете выйти из нашей системы! Всегда убедитесь, что пользователь 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

1
@psusi: Нет, ты НЕПРАВИЛЬНО. Он МОЖЕТ удалить это. Как он сказал: «Я активировал пользователя root в Ubuntu», то есть он ВСЕГДА ДОЛЖЕН ВХОДИТЬ ПОЛЬЗОВАТЕЛЕМ ROOT В ПОЛУЧИТЬ ДОСТУП. Пожалуйста, исправьте ваш downvote моего поста.
con-f-use
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.