编辑 /etc/sudoers 以允许 Winbind 组成员仅对 1 个本地用户执行 sudo

编辑 /etc/sudoers 以允许 Winbind 组成员仅对 1 个本地用户执行 sudo

我有多个 Ubuntu Linux 主机需要连接到 Active Directory 进行用户管理(不幸的是,这里没有实际的 LDAP 服务器选项......)并且已配置 Winbind 来处理身份验证,并且我的%sudoers组条目工作正常:

## Allow AD members of the service group restricted user access to that account
%sudoers ALL=(ALL:ALL) NOPASSWD:ALL

我已在 ssh 配置中允许密码验证,并已将以下条目添加到该帐户的 sudoers 文件中:

%service ALL=(service:service) NOPASSWD:ALL

sudoers尽管组和service组在 AD 服务器上的目录树中处于同一级别,但这甚至找不到该组。当我执行此操作时:

%domain.local\\service ALL=(ALL:ALL) NOPASSWD:ALL

...组成员service能够登录并拥有完全的 sudo 权限,包括不可接受的 root 权限,并且已被sudoers组和条目所涵盖。或者当我这样做时:

%domain.local\\service ALL=(service:service) NOPASSWD:ALL

...成员无法对任何用户执行 sudo 操作。对于服务用户,以下是该service用户的 /etc/passwd 条目:

service:x:1001:16777230::/opt/service:/bin/bash

根据Sudoers 手册页这最后一项应该可以工作,但出于某种原因它没有工作。此外,它还%service应该涵盖本地和 AD 提供的成员身份,但似乎没有。当我创建此用户时,由于目录服务器中已经有一个组,service下面是我创建service用户帐户的方式:

useradd -d /opt/service -g service service

sudo -l以下是该组成员的输出:

[user.test@server ~]$ sudo -l
Matching Defaults entries for user.test on this host:
    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
    DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
    PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
    LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
    LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User user.test may run the following commands on this host:
    (service : service) NOPASSWD: /opt/service

我在这里遗漏了什么?

答案1

我找到了解决方案。我们需要设置登录 shell 和service用户主目录 sudoers 条目的路径,如下所示:

%domain.local\\service ALL=(service) NOPASSWD:/bin/bash, /opt/service/*

现在我们可以输入以下内容来成为用户service

$ sudo -i -u service
$ whoami
service
$ pwd
/opt/service

相关内容