我试过了:
sudo "some string" >> test.txt
Run Code Online (Sandbox Code Playgroud)
但我收到了拒绝许可的警告。
任何人都可以帮忙吗?
我是几台不同服务器的管理员,目前每台服务器上都有不同的 sudoers 文件。这有点失控,因为我经常需要授予某人使用 sudo 执行某些操作的权限,但它只能在一台服务器上完成。是否有一种简单的方法可以在我的中央服务器上编辑 sudoers 文件,然后通过 SFTP 或类似的方式以简单的方式将其分发到其他服务器?
主要是想知道其他系统管理员如何解决这个问题,因为 sudoers 文件似乎无法通过 NIS 远程访问,例如。
操作系统是 SUSE Linux Enterprise Server 11 64 位,但应该没有关系。
编辑:现在,每台机器都有相同的 sudoers 文件。
EDIT2:接受的答案的评论最接近我实际进行的操作。我现在正在使用 SVN 支持的 puppet 安装,经过几次头痛,它运行良好。
我使用的是 Red Hat Enterprise 5 Linux 机器。我发现如果一个用户在/etc/sudoers文件中,那么如果用户用sudo运行命令,用户将以root权限运行这个命令(在不知道root密码的情况下,用户运行sudo只需在其中输入用户自己的密码即可)以使用 sudo 运行命令)。这是正确的理解吗?
提前致谢,乔治
我使用 vim /etc/sudoers 编辑了我的 Linux Amazon EC2 实例并尝试将另一个帐户添加到列表中。我现在意识到这是一个可怕的错误。我不能再从任何帐户 sudo (这意味着我不能再次编辑文件)并且我没有 root 帐户密码。我能做些什么来纠正这个问题吗?
谢谢。
我在 Ubuntu 12.04 机器上使用活动目录登录。当用户登录时,我有一个需要 sudo 权限运行的脚本(因为它修改了 samba 配置文件)。我将如何在我的sudoers文件中指定它?
Active Directory 用户是名为 的组的一部分domain users。domain users当我groups以活动目录用户身份发布时,我看到了。
我试过了:
%domain+users ALL=NOPASSWD: /etc/userScripts/createSambaShare.php
Run Code Online (Sandbox Code Playgroud)
这仍然要求我输入密码,然后告诉我该用户不在sudoers文件中。
当它向活动目录用户询问他们的密码时,是否有我可以检查的日志以查看它在做什么?
我需要自动配置一个云实例(运行 Fedora 17),以下初始事实为真:
cloud)sudo.手动配置就像登录和运行sudo su -并拥有它一样简单,但我想完全自动化这个过程。诀窍是系统默认为requiretty启用该选项sudo,这意味着尝试执行以下操作:
ssh remotehost sudo yum -y install puppet
Run Code Online (Sandbox Code Playgroud)
将失败:
sudo: sorry, you must have a tty to run sudo
Run Code Online (Sandbox Code Playgroud)
我现在正在解决这个问题,首先推送一个将在伪终端上运行命令的小型 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
# pty, run the given command.
os.execvp(sys.argv[1], sys.argv[1:])
else:
while True:
try:
data …Run Code Online (Sandbox Code Playgroud) 我有这个命令
chroot /chroots/box /bin/bash -c 'cd /repos/system && git pull'
Run Code Online (Sandbox Code Playgroud)
我试着写在 /etc/sudoers
user ALL = (root) NOPASSWD: chroot /chroots/box /bin/bash -c 'cd /repos/system && git pull'
Run Code Online (Sandbox Code Playgroud)
但这没有用。在我见过的日志中
sudo: user : command not allowed ; TTY=pts/7 ; PWD=/home/user ; USER=root ; COMMAND=chroot /chroots/box /bin/bash -c cd /repos/system && git pull
Run Code Online (Sandbox Code Playgroud)
我还尝试在 sudo 调用中转义引号,例如\',并且它们出现在具有相同错误的日志文件中。
这个 repo 影响了 chroot 的根文件系统,所以我不能从外面调用 git pull 。
我试图在我的文件(在 Ubuntu 12.04 LTS 服务器上)中添加一个NOPASSWD条目sudotest.sh(或任何需要 sudo 的脚本/二进制/etc/sudoers文件),但为了使其工作,我必须指定完整路径。以下条目工作正常:
%jenkins ALL=(ALL)NOPASSWD:/home/vts_share/test/sudotest.sh
Run Code Online (Sandbox Code Playgroud)
问题是脚本可能会移动到不同的目录。这似乎是*在路径中使用通配符(即/*/sudotest.sh)的好机会,这样我的脚本就可以在任何目录中,但手册指出,/在路径中使用通配符时,通配符将与字符不匹配。我已经确认它不起作用。
我知道我可以使用这个词ALL代替我的脚本,但这意味着对于任何看起来不安全的命令都没有密码提示。
我该如何解决这个问题?
我在 Debian 的 root 的 crontab 中使用以下命令。
rsync -vqrlHEAXogDtzhi --log-file=${LOG} --progress --rsync-path="sudo /usr/bin/rsync" --exclude-from=$CONFIG_DIR/excludes -e "ssh -i /home/backups/.ssh/id_rsa" backups@${HOSTNAME}:/ ${BACKUP_DIR}
Run Code Online (Sandbox Code Playgroud)
我得到以下信息:
sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)
我尝试将 -t 添加到 ssh 命令中,我得到:
Pseudo-terminal will not be allocated because stdin is not a terminal.
Run Code Online (Sandbox Code Playgroud)
我尝试将 -t -t 添加到 ssh 命令中,我得到:
protocol version mismatch -- is your shell clean?
Run Code Online (Sandbox Code Playgroud)
我已经向远程设备上的备份用户添加了一个 .hushlogin 文件,并确认我可以使用远程设备的密钥 ssh 作为备份而没有显示任何内容(登录被隐藏)。我仍然收到这些消息。
请注意,我可以成功地使用密钥 ssh 作为远程设备的备份。
请注意,我的 sudo 没有 -tt 选项。
请注意,以下是在源和目标的 /etc/sudoers 文件中设置的:
backups ALL= NOPASSWD:/usr/bin/rsync
Run Code Online (Sandbox Code Playgroud)
请注意,我的 …
有人能告诉我在哪种情况下 sudo 主机定义有用吗?
我的意思是 sudoers 文件中一行的这一部分:
bob host1 = NOPASSWD: reboot
Run Code Online (Sandbox Code Playgroud)
在哪种环境中(sudo通过 LDAP除外),我需要定义用户可以在其上运行指定命令的主机吗?
sudo ×10
linux ×7
amazon-ec2 ×1
cloud ×1
debian ×1
host ×1
permissions ×1
rsync ×1
security ×1
shell ×1
ssh ×1
terminal ×1
ubuntu ×1
ubuntu-12.04 ×1
unix ×1