我已经在ubuntu中激活了root用户,并且想将ubuntu用作没有DE的服务器。为此,我想禁用给予第一个用户的sudo特权。如何从命令行执行此操作?我知道我可以使用GUI,但是如何从命令行执行呢?
我已经在ubuntu中激活了root用户,并且想将ubuntu用作没有DE的服务器。为此,我想禁用给予第一个用户的sudo特权。如何从命令行执行此操作?我知道我可以使用GUI,但是如何从命令行执行呢?
Answers:
有问题的用户具有sudo特权,因为它在admin
组中。正如wojox所说,您可以visudo
在admin组中使用和删除sudo特权,但这将在admin组的所有成员中删除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
从命令行键入以修改用户和组。
sudo
不是
无论从上述答案中发现什么智慧,我已经解决了如下问题:启用root帐户并为指定用户禁用sudo。
首先启用root帐户:
$ 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)
小心,您可以通过这种方式将自己锁定在我们的系统之外!始终确保root用户保留其权限,并且您可以访问它。预先使根终端保持打开状态,以便您撤消更改。关闭根终端之前,请在另一个终端中测试设置!
如另一个答案所述。/etc/sudoers
通过在shell中调用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