从命令行禁用对用户的sudo权限


18

我已经在ubuntu中激活了root用户,并且想将ubuntu用作没有DE的服务器。为此,我想禁用给予第一个用户的sudo特权。如何从命令行执行此操作?我知道我可以使用GUI,但是如何从命令行执行呢?


根据您建立群组的方式,输入visudo
wojox 2011年

Answers:


14

有问题的用户具有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不是
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用户保留其权限,并且您可以访问它。预先使根终端保持打开状态,以便您撤消更改。关闭根终端之前,请在另一个终端中测试设置!

du客

另一个答案所述/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

1
@psusi:不,你错了。他可以删除它。正如他所说的“我已在ubuntu中激活root用户”一样,他可以始终以root用户身份登录以获取访问权限。请更正您对我的帖子的不赞成。
con-f-use
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.