从命令行禁用用户的sudo权限
我在ubuntu中激活了root用户,并希望将ubuntu用作没有DE的服务器。 为此,我想禁用第一个用户的sudo权限。 我怎么能从命令行执行此操作? 我知道我可以使用GUI,但如何从命令行执行此操作?
有问题的用户具有sudo权限,因为它位于admin
组中。 正如wojox评论的那样,您可以使用visudo
并从管理组中删除sudo权限,但这将删除管理组的所有成员而不仅仅是一个用户的sudofunction。
或者,您可以从管理组中删除该用户。 如果面向屏幕的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 (ic '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用户保留其权限,您可以访问它。 事先保持根终端打开,以便撤消更改。 在关闭根终端之前测试另一个终端中的设置!
soduers
如另一个答案所述 。 通过在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
或者删除该行,如果您确定,则启用您的root用户帐户。
组
默认用户是“admin”组的成员。 如果您愿意,也可以撤销该组的用户成员资格 。 通过关注我的上一个链接或从admin:x:120:defaultuser
行中删除他的名字来做到这一点admin:x:120:defaultuser
/etc/group
文件中的admin:x:120:defaultuser
:
cp -n /etc/group /etc/group.bak && \ sed -i 's/\(admin:x.*\)defaultuser\(.*\)/\1\2/g' /etc/group