在我的工作场所,我们使用sudo–ldap从一个集中的商店中通过networking提供sudo特权。 我们根据用户名和他们正在运行sudo的主机名来做到这一点,例如:
sudoHost: foo1 sudoUser: user1
我希望能够匹配基于FQDN而不是短主机名的sudoHost属性,以便我们可以将DNS子域用于不同的环境 – 例如在开发环境中使用web1.dev.example.com , web1.test.example.com在testing环境中等等。 但是,现在sudoHost只匹配短主机名。
即这工作:
sudoHost: foo1
但是这不起作用:
sudoHost: foo1.dev.example.com
只有短主机名( foo1 )的问题是,它匹配所有环境 – foo1.dev , foo1.test , foo1.staging等。我希望它比这更细粒度。
是否有可能得到sudo-ldap查询基于FQDN(由hostname -f返回),而不是只是简短的主机名?
我用googlesearch没有成功。 我在man page或online上找不到任何东西; 在讨论sudoHost属性时最接近的是:
sudoHost
主机名,IP地址,IPnetworking或主机networking组(以“+”为前缀)。 特殊值ALL将匹配任何主机。
没有提到FQDN与短主机名。 在configurationldap.conf部分中没有提到FQDN和简短的主机名。
有问题的主机正在运行Ubuntu 10.04。
鉴于sudo本身只与sudoHost属性提到的相同,我倾向于认为没有侵入性的sudo补丁,你不会得到你想要的东西。
有一种可能 – 您是否将计算机主机名设置为短名称或FQDN? 如果你正在做前者,试试后者,看看是否sudo切换到识别FQDN(尽pipe如此,你可能会失去匹配短名称的能力)。 老实说,我更喜欢将我的主机名设置为FQDN,我认为它提供了更多的价值在像你所描述的多域设置(顺便说一句,我赞赏你的做法,我希望每个人都会做到这一点)。
如果我想冒险(受过教育的)猜测为什么你不能基于FQDN(或者更确切地说,是由hostname -f提供的数据)而不是基于主机名来匹配(而且说实话不应该)匹配,我想说,这是因为该值( hostname -f )是通过NSS获得的 – 意思是/etc/hosts或DNS(而sudo无法分辨哪个)。 所以你突然有一个安全漏洞,如果攻击者可以操纵DNS结果,他就得到了你的主机限制的sudo安装程序。
作为一个不太有用,但仍有潜在价值的选项(如果将FQDN设置为主机名是不可能的),切换到使用IP地址。 如果你不得不重新编号,那么它就不那么明显了,而且有点维护的痛苦,但是除非你手工编辑你的LDAPlogging,否则你的sudo-config-maintenance-tool-thingy至less可以通过parsing名称/地址来掩盖丑陋给你名字玩和sudo IP地址。