我已在Ubuntu中激活了root用户,并希望将Ubuntu用作无桌面环境的服务器。为此,我想禁用授予第一个用户的sudo特权。我该如何在命令行中完成这个操作?我知道可以使用图形界面,但如何通过命令行来实现呢?
我已在Ubuntu中激活了root用户,并希望将Ubuntu用作无桌面环境的服务器。为此,我想禁用授予第一个用户的sudo特权。我该如何在命令行中完成这个操作?我知道可以使用图形界面,但如何通过命令行来实现呢?
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
来修改用户和组。
sudo
。 - Joril$ sudo passwd root
更多信息请参阅Ubuntu文档。
然后:
即:
$ 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)
小心,这样做可能会锁定您自己的系统!始终确保根用户保留其权限并且您可以访问它。事先打开一个根终端,以便您可以撤消更改。在关闭根终端之前,请在另一个终端中测试设置!
如另一个答案所述。通过在shell中调用visudo来编辑/etc/sudoers
:
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
如果你确定你的根用户账户已启用,那么请删除这行。
默认用户是“admin”组的成员。如果你愿意,你也可以撤销用户的成员资格。只需按照我最后给出的链接操作,或者从/etc/group
文件中的admin:x:120:defaultuser
行中删除他的名字即可:
cp -n /etc/group /etc/group.bak && \
sed -i 's/\(admin:x.*\)defaultuser\(.*\)/\1\2/g' /etc/group