Questions tagged «sudo»

sudo是一个工具,它允许用户以其他用户(通常是root用户)的身份运行命令

1
作为用户和执行者的Ansible ssh具有root(期望像)
我必须管理大量的主机,其中只有一个用户能够从SSH访问(我们称他为foo),然后必须以root用户身份登录才能执行特权命令。 Foo用户没有任何类型的sudo特权,因此我被迫以root用户身份登录以执行特权命令。我实际上是使用Expect脚本来完成这项工作(ssh登录为foo,通过su登录为root),我想切换到Ansible。我知道我可以创建一个新用户并向他授予sudo特权,或者基本上给foo赋予sudo特权,但是使用Ansible是否可以完成与期望相同的操作? 我想以foo的形式进行ssh连接,然后以root身份执行剧本或任何类型的adhoc命令。我没有在Ansible文档中找到任何有关此的信息,所以我在这里问是否有人已经进行过这种询问。
8 sudo  root  ansible  expect 


1
sudo:如何仅对命令使用一个参数?
我想在suoders中添加一个条目,以允许一个用户运行带有正好一个非选项参数的命令。 # tail -1 /etc/sudoers ALL ALL = (:tool) NOPASSWD: /bin/echo [a-z]* $ sudo -g tool /bin/echo abc def abc def $ sudo -g tool /bin/echo -abc def [sudo] password for user: 我可以使用sudoers sytnax来做到这一点吗?还是我需要创建一个辅助脚本?
8 unix  sudo 

1
如何在sudoers的同一行上同时设置NOPASSWD和SETENV?
在sudoers文件中,如何在同一行上使用多个Tag_Spec。 通常,如果我不想输入密码,我将执行以下操作: who where = (aswhom) NOPASSWD: commands 我想使用SETENV标记,以便用户可以保留环境变量。这样工作正常: who where = (aswhom) SETENV: commands 在sudoers(5)手册页中: Tag_Spec ::= ('NOPASSWD:' | 'PASSWD:' | 'NOEXEC:' | 'EXEC:' | 'SETENV:' | 'NOSETENV:' | 'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' | 'NOLOG_OUTPUT:') 我看不到如何在同一条目上使用多个标签。我既喜欢使用NOPASSWD,并SETENV在同一行。
8 linux  sudo 

3
我们正在从共享的root密码过渡到使用sudo。如何审核sudo的使用情况?
当我上任时,我们所有的SA都必须记住系统的root密码。我觉得这很麻烦(当有人离开公司时,我们必须触摸每台服务器并更改密码)并且不安全。 终于有了足够的吸引力来推动具有sudo访问权限的个人帐户。我想要一个平稳的过渡,所以这是我的最初计划: 允许SA执行“批准的”命令而无需输入密码。 每次使用其他命令时,都需要输入密码sudo。如果有必要,我将审核此命令并将其定义为“已批准”,如果它们构成安全隐患,则将其阻止执行。 我们的用户规范如下所示: %sysadmins ALL = PASSWD: ALL, NOPASSWD: SERVICES, FILE_READING, !/bin/su 问题:执行sudo配置了的命令后,如何进行审核(最好通过电子邮件,但日志可以审核)PASSWD?
8 linux  security  sudo 

5
更新多个sudoers文件
我们有多台向Active Directory域进行身份验证的Linux服务器。对于AD中的组,我想添加允许使用sudo以root身份运行的命令列表。我显然可以插入到每台计算机并更新sudoers文件-但这将需要一些时间。另外,不允许root登录。因此,少密码登录仅适用于非root用户。 有没有一种快速的方法可以立即为每台Linux计算机更新sudoers文件?我在这里考虑具有某些系统管理功能的Perl或Python脚本。 更新:感谢veroteq7和Shane Madden。我曾考虑过一次部署cfengine,但目前还没有运行它。我们已决定使用LDAP是最佳解决方案。导入sudo的LDIF架构schema.ActiveDirectory时出现错误。错误是第144行上的“参数不正确”。 这是从第144行开始的内容: dn: CN=sudoRole,CN=Schema,CN=Configuration,DC=X changetype: add objectClass: top objectClass: classSchema cn: sudoRole distinguishedName: CN=sudoRole,CN=Schema,CN=Configuration,DC=X instanceType: 4 possSuperiors: container possSuperiors: top subClassOf: top governsID: 1.3.6.1.4.1.15953.9.2.1 mayContain: sudoCommand mayContain: sudoHost mayContain: sudoOption mayContain: sudoRunAs mayContain: sudoRunAsUser mayContain: sudoRunAsGroup mayContain: sudoUser rDNAttID: cn showInAdvancedViewOnly: FALSE adminDisplayName: sudoRole adminDescription: Sudoer …
8 sudo 

3
如何在不使用root的情况下运行超级用户?
我似乎很难弄清楚为什么超级用户不能以非root用户身份运行。如果在用户设置为jason(pid 1000)的情况下启动它,则会在日志文件中得到以下内容: 2010-05-24 08:53:32,143 CRIT Set uid to user 1000 2010-05-24 08:53:32,143 WARN Included extra file "/home/jason/src/tsched/celeryd.conf" during parsing 2010-05-24 08:53:32,189 INFO RPC interface 'supervisor' initialized 2010-05-24 08:53:32,189 WARN cElementTree not installed, using slower XML parser for XML-RPC 2010-05-24 08:53:32,189 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2010-05-24 …

1
将sudo配置为无需密码即可工作
我正在尝试将sudo配置为允许所有用户无需输入密码即可重新启动apache。 除了安全问题,这为什么不起作用? 我将行添加到/ etc / sudoers中: %admin ALL=NOPASSWD: /usr/sbin/apache2ctl $sudo -l User aidan may run the following commands on this host: (root) NOPASSWD: /usr/sbin/apache2ctl (ALL) ALL $sudo /usr/sbin/apache2ctl [sudo] password for aidan: 谢谢你的帮助。
8 linux  ubuntu  sudo 

3
通过SSH运行“ sudo”
我正在编写一个脚本,该脚本将登录一堆远程计算机并在它们上运行命令。我已经设置了密钥,因此运行脚本的用户不必键入每台计算机的密码,而只需在脚本的开头键入密码。 问题是远程计算机上的命令需要sudo运行。同时,脚本的要点是使用户不必多次键入密码。有没有办法避免输入密码sudo?不能在远程计算机上更改命令的权限。
8 ssh  sudo 

2
在服务器管理中应该使用sudo还是su root?
哪种方法更好? 对于桌面使用,似乎sudo更好,因为: 作为普通用户,我可以拥有更一致的历史记录 不需要记住两个密码,当我不定期执行管理工作时,尤其如此。 无需在安装时创建其他根帐户。 但是关于服务器管理? 在服务器中,通常您已经创建了一个根帐户,并且您可能经常会做一些管理工作。因此sudo的优点似乎不再成立。 而且,在大多数发行版中,在命令行上配置su很容易,只需将用户添加到wheel组即可。(您甚至可以-G wheel在useradding 时通过。)因此,可以很容易地将su的配置自动化到shell脚本中。 但是对于须藤?您需要先添加用户,然后才能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 但这至少不是那么容易。 那您有什么意见呢?对于服务器环境,您希望使用sudo还是su root?
8 unix  sudo  root  su 

3
sudo之前的用户名
我有一个需要sudo的脚本,但是该脚本必须根据原始用户设置参数,例如: chown "${USER}:${USER}" dir 如果将其设置为sudo,则最终得到chmod root:root,这没有帮助。 那么如何在sudo之前获取用户名?

2
如何使用sudo向系统配置文件添加行?
我需要在配置文件中添加一行(例如/etc/resolv.conf)。如果我用 sudo echo "nameserver 192.168.1.6" >> /etc/resolv.conf 我收到错误消息访问被拒绝。问题是bash从我的帐户而不是roots帐户写入文件。 有什么方法可以使它起作用吗? 我知道有一种“解决方案”可以将我的命令写入文件并批量运行它们,但这是非常不舒服的:-(

9
编辑sudoers文件以限制用户的命令
是否可以编辑sudoers文件,以便用户可以将sudo用于除指定命令以外的任何命令?相反,我相信,可以设置sudoers文件,以便用户只能执行给定的命令列表。 编辑:我真的想带走的命令是停止并重新启动...这使我认为有特殊的系统调用来停止并重新启动。您能否将系统调用从用户那里转移走?如果不是,是否是因为unix权限系统抽象了忽略此功能的系统调用?
8 linux  sudo 

5
限制使用sudo -s
我正在某些Linux服务器上设置Nagios,但是遇到了一些问题。该check_ide_smart插件需要对系统具有root访问权限才能运行。要运行它,我使用check_by_ssh插件将ssh插入远程主机上的nagios帐户,然后check_ide_smart使用sudo 运行。 最初,我添加了以下几行/etc/sudoers以允许程序运行: nagios ALL=NOPASSWD: /usr/lib/nagios/plugins/check_ide_smart 尽管在本地运行时这很好,但是从Nagios运行时却遇到了一个问题:没有生成TTY,这阻止了插件的工作。 我在sudo的手册页中找到了-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,他们可以用它进行任何操作。 此时,尽管如此,我还是可以通过将命令放入nagios用户具有只读特权的shell脚本中来工作,因此我创建了一个shell脚本: #!/bin/sh /bin/bash -c /usr/lib/nagios/plugins/check_ide_plugin $@ 不幸的是,我永远无法通过传递的参数($@)来正确使用该插件,因此我不知道这样是否可行。 编辑:我需要引用$@它才能工作。谢谢@derobert和@pjz。我仍然不知道它是否可以工作,因为我可以使用@Mike Arthur的解决方案来工作。 有没有一种方法可以让我sudo -s在不产生根外壳的情况下工作? 回答: 将以下行添加到/etc/sudoers: nagios ALL=NOPASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_ide_smart * 注意结尾的星号;没有它,这是行不通的。感谢@Mike Arthur的回答。
8 linux  security  sudo 
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.