从命令行禁用用户的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