Articles of sudo

如何通过sudo传递别名

我有一个别名,通过一些parameter passing给我经常使用的工具。 有时我像自己一样跑步,有时在sudo下跑步。 不幸的是,当然,sudo不能识别别名。 有没有人有一个关于如何通过别名通过? 在这种情况下,当我正在debugging时,我有一些perl选项: alias pd='perl -Ilib -I/home/myuser/lib -d' 有时,我必须以root身份来debugging我的工具,所以,而不是运行: pd ./mytool –some params 我需要在sudo下运行它。 我已经尝试了很多方法: sudo eval $(alias pd)\; pd ./mytool –some params sudo $(alias pd)\; pd ./mytool –some params sudo bash -c "$(alias pd)\; pd ./mytool –some params" sudo bash -c "$(alias pd); pd ./mytool –some params" sudo bash -c eval\ […]

为什么su以root身份login而不是以root身份login?

我经常听说,最好是su根,而不是直接以root用户身份login(当然也有人说sudo更好)。 我从来没有真正明白为什么一个人比其他人更有见识?

如何使用xauth通过其他用户在Linux上运行graphics应用程序

我的常规用户帐户,比方说,user1。 我为一些x应用程序创build了单独的user2,我想以user1的身份login到x时运行它,但会阻止它对user1数据进行读/写访问。 我以为我可以使用xauth和sudo / su从user1 user2运行此应用程序。 我如何做到这一点? 我不知道如何configurationxauth。

我怎样才能允许一个用户su到另一个用户不允许root访问?

我希望允许某些用户访问其他用户帐户,而不必知道该帐户的密码,但不允许访问任何其他用户帐户(即root)。 例如,我想让汤姆DBA su到oracle用户,而不是tomcat用户或root。 我想这可以用/ etc / sudoers文件来完成 – 可能吗? 如果是这样,怎么样?

为什么sudo命令需要很长时间才能执行?

在过去的几个月里,我一直在使用Linux(Fedora 10,然后是11),并且非常享受它,就像重新发现计算机,学习这么多东西。 我已经将我的用户添加到/ etc / sudoers文件的最后一行,如下所示,以便在执行sudo命令时不会询问我的密码: MyUserName ALL =(ALL)NOPASSWD:ALL 现在,每次我使用sudo执行一个命令,在实际执行任务(~10秒)之前,它会暂停一个不可估量的时间。 为什么会这样,我该如何解决这个问题? 我在Fedora 11 x86 64上运行Sudo 1.7.1版本。

为什么我必须用visudo编辑/ etc / sudoers?

我注意到sudoers文件和cronconfiguration文件与Linux上的其他configuration文件相比有特殊的作用。 他们需要使用特殊的包装器而不是任何文本编辑器进行编辑。 为什么是这样?

Linux:设置远程系统pipe理员

我偶尔会收到奇怪的请求,在Linux系统上提供远程支持,故障排除和/或性能优化。 较大的公司通常已经build立了完善的程序来向供应商/供应商提供远程访问,我只需要遵守这些程序。 (无论好坏。) 另一方面,小公司和个人总是要求我指导他们做什么来build立我。 通常他们的服务器直接连接到互联网,现有的安全措施包括Linux发行版的默认设置。 几乎总是我需要根级别的访问权限,谁将设置访问我不是一个专家系统pipe理员。 我不希望他们的root密码,我也很确定我的行为不会是恶意的,但是我应该给出什么合理简单的指示: build立一个帐户并安全地交换凭证 设置root(sudo)访问权限 限制访问我的帐户 提供审计跟踪 (是的,我意识到并总是警告那些客户,一旦我有pipe理员访问隐藏任何恶意行为是微不足道的,但让我们假设我没有什么可以隐藏和积极参与创build审计跟踪。) 在下面的步骤可以改进什么? 我目前的指令集: build立一个帐户并安全地交换凭证 我提供了一个密码哈希,并要求我的帐户是使用该encryption的密码设置的,所以我们不需要传输明文密码,我是唯一一个知道密码的人,而且我们不会以一个可预见的弱密码。 sudo useradd -p '$1$********' hbruijn 我提供了一个公共密钥SSH(每个客户端的特定密钥对),并要求他们使用该密钥设置我的帐户: sudo su – hbruijn mkdir -p ~/.ssh chmod 0700 ~/.ssh echo 'from="10.80.0.0/14,192.168.1.2" ssh-rsa AAAAB3NzaC1y***…***== hbruijn@serverfault' >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys 设置root(sudo)访问权限 我要求客户使用sudo sudoedit或使用他们最喜欢的编辑器为我设置sudo,并追加到/etc/sudoers : hbruijn ALL=(ALL) ALL 限制访问我的帐户 通常情况下,客户端仍允许使用基于密码的login,并要求他们将以下两行添加到/etc/ssh/sshd_config ,以至less将我的帐户限制为仅使用SSH密钥: Match user hbruijn […]

在生产服务器上loggingpipe理员运行的所有命令

pipe理员通过个人用户名login服务器是公司的政策,然后运行sudo -i成为root用户。 在运行sudo -i ,sudo将创build一个名为SUDO_USER的环境variables,其中包含原始用户的用户名。 有没有办法在syslog中logging所有命令,类似于下面的语法: ${TIME/DATE STAMP}: [${REAL_USER}|${SUDO_USER}]: ${CMD} 一个例子是: Sat Jan 19 22:28:46 CST 2013: [root|ksoviero]: yum install random-pkg 显然,它不一定是上面的语法,它只需要包含最less的真实用户(例如root),sudo用户(例如ksoviero)以及运行的完整命令(例如yum安装random-pkg)。 我已经尝试过snoopy ,但没有包含SUDO_USERvariables。

可以在云服务器上设置无密码`sudo`吗?

我喜欢通过密钥访问服务器的想法,所以我不必每次input密码时都input密码,甚至locking我的用户(而不是root )密码( passwd -l username ),所以不可能无需密钥login。 但是,如果我需要为sudo命令input密码,所有这一切都会中断。 所以我很想设置无密码的sudo ,使其符合无密码login。 然而,我仍然有一种直觉,认为这可能会以某种意想不到的方式对我产生反感,似乎有点不安全。 有没有这样的设置警告? 你会build议/不build议这样做的服务器上的用户帐户? 澄清 我在这里讨论在交互式用户会话中使用sudo ,而不是服务或pipe理脚本 我正在谈论使用云服务器(所以我没有物理本地访问一台机器,只能远程login) 我知道sudo有一个超时期间,我不必重新input我的密码。 但是我的演唱会并不是浪费额外的时间来input密码。 我的想法虽然是不必处理密码,因为我认为: 如果我必须记住它,它很可能太短,不安全或重用 如果我为远程帐户生成一个长而唯一的密码,那么我将不得不将其存储在某个地方(本地密码pipe理器程序或云服务),并在每次使用sudo时候获取它。 我希望我能避免这一点。 所以在这个问题上,我想更好地理解一个可能的configuration的风险,警告和折衷。 跟进1 所有答案都说,无密码sudo是不安全的,因为如果我的个人用户帐户被攻陷,它允许“简单”升级权限。 我明白那个。 但另一方面,如果我使用密码,我们会带着密码(太短或常见string,在不同服务中重复)等所有经典风险。 但是我猜如果我在/etc/ssh/sshd_config禁用密码authentication,这样你仍然必须有一个密钥login,我可以使用一个简单的密码只是为了更容易inputsudo ? 这是一个有效的策略? 跟进2 如果我也有一个通过SSH以rootlogin的密钥,如果有人能够访问我的计算机并窃取我的密钥(他们仍然受到操作系统密钥环密码的保护!),他们也可以直接访问root帐户,绕过sudopath。 那么访问root帐户的政策应该是什么呢?

如何使用sudo通过ssh运行任意复杂的命令?

我有一个系统,我只能login到我的用户名(myuser),但我需要以其他用户(scriptuser)运行命令。 到目前为止,我已经拿出以下来运行我需要的命令: ssh -tq myuser@hostname "sudo -u scriptuser bash -c \"ls -al\"" 但是,如果我尝试运行一个更复杂的命令,比如[[ -d "/tmp/Some directory" ]] && rm -rf "/tmp/Some directory"我很快就会遇到引用问题。 我不知道我怎么能通过这个例子复杂的命令bash -c ,当\"已经界定了我传递的命令的边界(所以我不知道如何引用/ tmp /某些目录,这包括一个空格。 是否有一个通用的解决scheme可以让我通过任何命令,无论引用是多么复杂/疯狂,还是这种限制,我已经达到了? 还有其他可能的,也许更可读的解决scheme?