Articles of sudo

即使授予Sudo,Ansible也不能validationSudo

问题 使用最新,稳定的Ansible版本,我有一个奇怪的问题,我的剧本在“Gathering_Facts”挂在一台服务器上,但在使用Sudo时在其他类似的服务器上工作正常。 在Ansible服务器上,我以用户(NIS用户)身份运行,并在远程服务器上使用sudo (以root身份)进行更改。 如果我从这个设置删除Sudo,一切工作正常。 build立 软件版本 操作系统 :RHEL 6.4 Ansible版本 : ansible 1.8.2 Sudo版本 : Sudo版本1.8.6p3 Sudoers政策插件版本1.8.6p3 Sudoers文件语法版本42 Sudoers I / O插件版本1.8.6p3 SSH版本 :OpenSSH_5.3p1,OpenSSL 1.0.0-fips 2010年3月29日 服务器映射 ——– User1 @ Server1:sudo -H -S -p(挂在Gathering_Facts上) / User1 @ Ansible —- \ ——– User1 @ Server2:sudo -H -S -p(工作正常) 用户 User1:Server1和Server2上的NIS可访问用户。 root:每个服务器的本地root用户。 Ansibleconfiguration 我的ansible.cfg的相关部分。 ansible.cfg sudo […]

限制使用`sudo -s`

我正在一些Linux服务器上设置Nagios,并遇到了一些问题。 check_ide_smart插件需要root权限才能运行系统。 要运行它,我使用check_by_ssh插件ssh到远程主机上的nagios帐户,然后使用sudo运行check_ide_smart 。 我最初/etc/sudoers添加到/etc/sudoers以允许程序工作: nagios ALL=NOPASSWD: /usr/lib/nagios/plugins/check_ide_smart 虽然在本地运行时工作得很好,但是从Nagios运行时遇到问题:没有生成TTY,导致插件无法工作。 我在sudo的man页面中挖了一下,发现了-s选项,它生成一个shell并在那里执行程序。 当我尝试使用sudo -s ,由于-s显然将命令更改为/bin/bash -c /usr/lib/nagios/plugins/check_ide_smart ,这是sudoers文件不允许的,所以我遇到了权限问题。 我尝试改变sudoers文件来使用这个命令,但是这不起作用,并且使用引号是一个语法错误。 我最终通过在/etc/sudoers使用以下行来完成工作: nagios ALL=/bin/bash 这对我来说真的是错误的,因为我允许nagios用户产生一个root shell,他们可以做任何事情。 在这一点上,我虽然也许,通过将命令放在一个shell脚本,nagios用户具有只读权限将工作,所以我创build了一个shell脚本: #!/bin/sh /bin/bash -c /usr/lib/nagios/plugins/check_ide_plugin $@ 不幸的是,我永远不能得到传递的参数( $@ )正确地使用插件,所以我不知道这是否会工作。 编辑:我需要引用$@它的工作。 感谢@derobert和@pjz。 我仍然不知道这是否会工作,因为我使用@Mike Arthur的解决scheme来工作。 有没有一种方法可以让sudo -s在不允许生成根shell的情况下工作? 回答: 将以下行添加到/etc/sudoers : nagios ALL=NOPASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart * 注意尾部星号; 没有它,这是行不通的。 感谢@Mike亚瑟的答案。

作为另一个用户启动一个脚本

我在/etc/init.d/中创build了一个脚本,它必须从其主目录中运行其他(非超级用户)用户的其他脚本,就好像他们启动了它们一样。 我使用以下sudo -b -u <username> <script_of_a_particular_user>启动这些脚本: sudo -b -u <username> <script_of_a_particular_user> 它工作。 但是,对于每个继续运行的用户脚本(例如一些看门狗),我都会看到一个相应的父级sudo进程,它仍然以root身份运行。 这在活动进程列表中创build一个混乱。 所以我的问题是: 如何从另一个用户启动(fork)另一个脚本作为另一个用户,并将其作为孤立的(独立)进程? 更详细的解释: 我基本上是试图提供给机器上的其他用户一个意思是在系统启动或系统closures时运行的东西,通过运行在其主目录中find的名为.startUp和.shutDown的各个子目录中find的可执行文件。 由于我没有find任何其他的方法来做到这一点,所以我写了我的bash脚本,完全是这样做的,我已经在/etc/init.d/中configuration它作为服务脚本(通过下面的框架示例)启动参数启动了.startUp目录中的所有内容,当它以stop参数运行时,它启动所有用户的.shutDown目录中的所有内容。 另外我也有兴趣,如果我可以使用一些现有的解决scheme来解决这个问题。 UPDATE 我查了一下,我发现这个问题: https : //unix.stackexchange.com/questions/22478/detach-a-daemon-using-sudo 接受的答案在那里,使用: sudo -u user sh -c "daemon & disown %1" ,适用于我。 但是,我也尝试不留%1 ,这是一样的。 所以这就是我所期待的对我的作用: sudo -u <username> bash -c "<script_of_a_particular_user> &" 我现在的另外一个问题是,为什么它没有被忽视呢? 无论如何,我是否还应该离开这个离别的电话呢? 更新2 显然这也可以工作: su <username> -c "<script_of_a_particular_user> &" […]

通过SSH运行“sudo”

我正在编写一个脚本,login到一堆远程机器上,并对它们运行一个命令。 我已经设置了密钥,所以运行脚本的用户不必input每台机器的密码,只需在脚本的开始处input密码即可。 问题是远程机器上的命令需要sudo才能运行。 同时脚本的重点是摆脱用户必须多次input密码。 有没有办法避免inputsudo的密码? 更改远程计算机上的命令权限不是一个选项。

应该使用sudo或只是su服务器pipe理的根?

哪种方法更好? 对于桌面使用,似乎sudo更好,因为: 作为普通用户,我可以拥有更一致的历史 不需要记住两个密码,当我不经常执行pipe理工作时更是如此。 无需在安装时创build额外的root帐户。 但关于服务器pipe理? 在服务器中,通常您已经创build了一个root帐户,并且您可能经常执行pipe理任务。 所以sudo的优势似乎已经不复存在了。 更重要的是,在大多数发行版中,在命令行上configurationsu很容易,只需将用户添加到轮组即可。 (在使用时你甚至可以传递-G wheel )。因此,configurationsu可以很容易地自动化到shell脚本中。 但是对于sudo? 您需要先添加用户,而不是交互式运行visudo 。 这是不好的,因为你不能将它自动化到shell脚本中。 (好吧,你可以。例如, echo '%wheel ALL=(ALL) ALL' >> /tmp/sudoers.tmp cp /etc/sudoers /etc/sudoers.old visudo -c -f /tmp/sudoers.tmp && mv /tmp/sudoers.tmp /etc/sudoers 但至less不是那么容易的。) 那么你有什么意见? 对于你喜欢的服务器环境,sudo或su root?

编辑sudoers文件来限制用户的命令

是否有可能编辑sudoers文件,以便用户可以使用sudo来执行除指定命令之外的任何命令? 我相信,我相信,sudoers文件可以被设置,以便用户只能执行给定的命令列表。 编辑:我真的要拿走的命令是暂停和重新启动…这让我觉得有特殊的系统调用停止和重新启动。 你可以把系统调用从用户? 如果没有,是因为unix系统调用的权限系统抽象忽略了这个吗?

如何使用sudo添加行到系统configuration文件?

我需要添加一行到configuration文件(例如/etc/resolv.conf)。 如果我使用 sudo echo "nameserver 192.168.1.6" >> /etc/resolv.conf 我得到错误消息访问被拒绝。 问题是bash从我的帐户写入文件,而不是从root帐户。 有没有办法如何得到它的作品? 我知道有一个“解决scheme”将我的命令写入文件并按批处理方式运行,但是非常不舒服:-(

sudoer报告去了哪里?

所以我正在testing一个小的CentOS版本(rackspace cloud)。 我build立了我的用户,并去做一些sudo'ing。 那么,我忘记了用visudo将我的用户添加到sudoers文件的步骤。 所以当然,我得到这个错误: 不在sudoers文件中。 这个事件将被报道。 从来没有见过,所以现在我想知道。 哪里得到报告? 它只是被发送到邮件,或被logging在某个地方? 感谢您的帮助

Linux – 使用“su – ”但保留当前目录

当我做su -到根目录时,我的当前目录被设置为root的主目录。 有没有办法保持我当前的目录,很像sudo -s 。 或者是使用sudo的答案?

testing用户是否具有sudo权限而不需要用户input

我有一个本地shell脚本,在交付有效负载之前,在远程主机上执行一些testing; 其中一个testing是用户是否具有sudo特权,只需使用sudo -v进行检查,但这需要用户input密码。 此外,远程主机似乎有即时sudo超时,所以每个新的连接都需要密码input,这是我没有改变(作为一个政策)的权限。 我当然可以testing用户是否属于某些组,但是这对于远程主机configuration不是不可知的,所以我希望有一种方法可以检查是否需要假设用户组不需要用户input? 谢谢! 更新:为了回应我的评论,我只想testing用户是否可以sudo,而不需要用户交互的testing。