总结
testserver
我使用我的帐户登录到服务器,并且由于我在该组中,因此testuser
我可以执行操作。sudo -s
sysadm
当我查询群组时,我得到了该sysadm
群组,但是当我直接用该群组查询时,cat /etc/group
或者getent group sysadm
我的登录名未列在该群组中。
为什么?
长版本
我有一个用户帐户testuser
,可以用来通过 putty(SSH)登录到服务器(Ubuntu 14.04)上的终端会话testserver
。
当我运行该groups
命令时,我的帐户获得以下输出:
sysadm
好的,所以我应该在 sysadm 组中。然后我列出 sysadm 组成员:
getent group sysadm
...产生以下结果:
sysadm:x:800:
这时我有点困惑。我(testuser)在组中,但我(从视觉上)又不在该组中,因为在组输出的末尾没有条目。
我使用 visudo 查看了 sudoer 配置。我有以下配置:
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
#%admin ALL=(ALL) ALL
%sysadm ALL=(ALL) ALL
# Allow members of group sudo to execute any command
#%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
这就是该文件中的所有内容。
概括
- 我发现我在这个
sysadm
群组里 - 该
sysadm
群组尚无任何成员 - 我可以
sudo -s
做任何我想做的事
问题
- 我如何才能从系统中检索信息,告诉我为什么我处于系统管理员团体?
- 是否有其他我目前不知道的配置设置会将我的登录名放入组中?
a) Active Directory
b) 策略
c) ...
到目前为止,我已经阅读了以下文章,但没有一篇帮助我找到为什么我在 sysadm 组中但(视觉上)不在该组中。
答案1
您在 /etc/passwd 中的输入是否在登录时将您置于 800 组中?getent passwd $USER | cut -d: -f4
将显示您的登录组。您(或任何人)如何创建 testuser 帐户?
要更改您的group
,您必须更改/etc/passwd
(man vipw
),并使用更改所有文件和目录的组sudo chgrp -R $NewGroup $HOME
,然后注销并再次登录。
“用户”(相对于“系统”)组通常从 开始1000
,但您可以签入/etc/login.defs
(UID_MIN
)。
再次,您(或任何人)是如何创建该testuser
帐户的?