Articles of sudo

创build一个伪terminal使sudo开心

我需要自动configuration一个云实例(正在运行Fedora 17),以下是最初的事实: 我有基于ssh-key的访问远程用户( cloud ) 该用户通过sudo具有无密码root权限。 手动configuration就像login并运行sudo su -一样简单,并且拥有它,但是我想完全自动化这个过程。 诀窍是系统默认启用了sudo的requiretty选项,这意味着尝试做这样的事情: ssh remotehost sudo yum -y install puppet 会失败: sudo: sorry, you must have a tty to run sudo 现在我正在解决这个问题,首先推倒一个在伪terminal上运行命令的小Python脚本: import os import sys import errno import subprocess pid, master_fd = os.forkpty() if pid == 0: # child process: now that we're attached to a # […]

Sudoers文件允许特定文件上的sudo用于活动目录组

我有一个在Ubuntu 12.04盒子上工作的活动目录login。 当用户login时,我有一个需要sudo权限的脚本(因为它修改了sambaconfiguration文件)。 我将如何在我的sudoers文件中指定这个? 活动目录用户是称为domain users的组的一部分。 当我将groups作为活动目录用户时,我会看到domain users用户。 我试过了: %domain+users ALL=NOPASSWD: /etc/userScripts/createSambaShare.php 这仍然要求我input密码,然后告诉我用户不在sudoers文件中。 有没有一个日志,我可以检查,看看它在做什么,当询问活动目录用户的密码?

从另一个非root用户访问SSH_AUTH_SOCK

场景: 我在本地PC上运行ssh-agent,并且我的所有服务器/客户端都设置为转发SSH代理authentication。 我可以使用本地PC上的ssh-agent在所有机器之间跳转。 这样可行。 我需要能够作为我自己(user1)SSH机器 ,更改为另一个用户名为user2( sudo -i -u用户2),然后ssh到另一个使用我的本地PC上运行的ssh代理盒子。 比方说,我想要做一些像ssh user3 @ machine2(假设user3在他的authorized_keys文件中有我的公共SSH密钥)。 我有sudoconfiguration保持SSH_AUTH_SOCK环境variables。 所有涉及的用户(用户[1-3])都是非特权用户 (不是root用户)。 问题: 当我更改为另一个用户时,即使SSH_AUTH_SOCKvariables设置正确(可以说设置为:/tmp/ssh-HbKVFL7799/agent.13799)user2无权访问由user1创build的套接字 – 哪一个当然是有道理的,否则user2可以劫持user1的私钥并像用户一样跳来跳去。 这种情况下工作得很好,如果不是通过sudo获得一个shell为user2,我通过sudo获得一个shell的根。 因为自然root可以访问机器上的所有文件。 问题是: 最好使用sudo, 我如何从user1更改为user2,但仍然可以访问user1的SSH_AUTH_SOCK?

Linux / Unix – / etc / sudoers – 主机定义

有人可以告诉我,在这种情况下,sudo主机定义是有用的吗? 我的意思是sudoers文件中这一行的一部分: bob host1 = NOPASSWD: reboot 在哪个环境中(除了sudo通过LDAP)我需要定义一个用户可以运行指定命令的主机?

su:/ bin / bash:资源暂时不可用

无法将用户切换到postgres。 postgres用户的ulimit设置设置了合理的限制。 我们没有达到最大。 / var / log / messages中没有错误。 错误: BETA -bash-4.2# sudo su – postgres su: /bin/bash: Resource temporarily unavailable 设置: BETA -bash-4.2# ps -auxww | grep -i postgr | wc -l 503 BETA -bash-4.2# lsof | grep -i postgr | wc -l 35225 BETA -bash-4.2# Ulimit postgres进程。 BETA -bash-4.2# cat /proc/26230/limits Limit Soft […]

修复一个破碎的sudoers文件

可能重复: Ubuntu:borked我的sudoers文件,我该如何解决? 问题描述: 我打破了我的/ etc / sudoers文件,在其中input错误。 现在我不能再使用任何sudo命令,因为下面的错误被抛出。 因此,我无法修复我的sudoers文件,并有效地卡住。 $ sudo nano /etc/sudoers >>> /etc/sudoers: syntax error near line 39 <<< sudo: parse error in /etc/sudoers near line 39 sudo: no valid sudoers sources found, quitting 我发现几个解决scheme,说我应该启动到恢复模式(如下面的),我显然希望避免。 Ubuntu:borked我的sudoers文件,我该如何解决? 问题: – 有没有其他的方法来解决它,而无需重新启动Ubuntu? – 如果在修改sudoers文件(每个人都可以input错字)的时候,把自己locking在sudo上是非常容易的,为什么sudoers config不是直接从内存中读取文件? 会有一个命令(例如sudo-load)来确保在将configuration加载到内存之前语法正确,从而避免这种问题。 解决scheme: 似乎有两种恢复方法: 如果你有root密码,你可以简单地发一个'su'然后编辑这个文件 如果您没有root密码,则需要重启到单用户模式

允许用户'git'通过sudo运行'git pull'作为'www-data'

我想让git运行'git pull'作为用户'www-data'。 据我了解git ALL =(www-data)/ etc / sudoers中的git pull应该使它成为可能。 可悲的是我得到了这条线的语法错误和visudo语法突出显示中的“ – ”在“万维网数据” 在/ etc / sudoers用户名中找不到关于禁止的“ – ”的信息。 任何提示?

我们正在从共享根密码转换到使用sudo。 我如何审计sudo的使用情况?

当我join时,我们所有的SA都必须记住系统的root密码。 我觉得这很麻烦(当有人离开公司时,我们不得不触摸每一台服务器并更改密码),并且不安全。 最后得到足够的拉,以推动与sudo访问个人帐户。 我想有一个平稳的过渡,所以这是我的初步计划: 允许SA在不input密码的情况下执行“批准”命令。 每次使用sudo时,其他命令都需要密码。 我会审核这个命令,并在必要时将它们定义为“已批准”,或者如果它们构成安全风险,则会阻止它们执行。 我们的用户规格如下所示: %sysadmins ALL = PASSWD: ALL, NOPASSWD: SERVICES, FILE_READING, !/bin/su 问:如何执行configuration了PASSWD的命令时,如何进行sudo审计(最好通过电子邮件发送,但日志会这样做)?

“sudo”如何search可执行文件的path?

我正在使用rubygems(1.3.7),在Ubuntu 10.10上需要root权限的gem。 当我用rubygems 1.3.6安装将我的设置与Ubuntu 9.10进行比较时,我在gem environment看到以下差异: 1.3.7 / 10.10 – EXECUTABLE DIRECTORY: /var/lib/gems/1.8/bin 1.3.6 / 09.10 – EXECUTABLE DIRECTORY: /usr/bin 输出是相同的,无论我使用sudo或不。 为了解决这个问题(我不知道为什么它在第一位),我试图修改我的pathvariables。 我的问题是, sudo在哪里查找可执行文件? 如果我安装一个gem(使用sudo ),可执行文件显然被放置在/varpath中。 我添加了这个path到我的~/.profile和/etc/environment文件,但我不能得到sudo来执行可执行文件。 如果我运行: $ gemname它正确运行我的工具。 $ sudo gemname它只是告诉我command not found 。 $ sudo echo $PATH它确实显示了正确的path。 $ sudo -i gemname运行正常。 $ sudo sudo -V显示PATH被保留。 sudo是否遵守~/.profile和/或/etc/environment ? 如果是这样,他们为什么不能find我的可执行文件,而目录显示在$PATH环境variables? 我已经阅读了sudo的文档,我也search并浏览了很多关于stackoverflow和serverfault的主题(例如, 如何覆盖sudo中的PATH环境variables?但是我的示例显示$PATH包含正确的path),但他们从来没有真正显示如何通过sudo运行一个gem。

为什么root用户可以编辑只读文件,但具有sudo访问权限的普通用户不能?

如果你尝试添加一个没有写入权限的文件(比如,拥有root权限的/ etc / sudoers文件,并且拥有0440的权限),如果你是真正的root用户,这是可行的。 但是,如果您是使用sudo的另一个用户,则会获得权限被拒绝的错误。 为什么是这样? 这不是因为文件的所有权 – 它不适用于普通用户拥有的文件。 真正的root用户似乎拥有比sudo更多的权限。 这是什么原理? 有没有办法将这个权限授予使用sudo的用户?