标签: sudo

如何在 Linux 上设置无密码的 `sudo`?

如何sudo在 RHEL(Fedora、CentOS 等)或 Ubuntu 发行版上设置无密码访问?(如果跨发行版都一样,那就更好了!)

设置:个人和/或实验室/培训设备,无需担心未经授权的访问(即设备位于非公共网络上,并且任何/所有用户都是完全信任的,并且设备的内容是“普通的”) .

linux password sudo

186
推荐指数
5
解决办法
28万
查看次数

Sudo 作为不同的用户和运行屏幕

今天发现作为我 sudo 进入的不同用户运行屏幕将不起作用!

IE

ssh bob@server         # ssh into server as bob
sudo su "monitor" -
screen                 # fails: Cannot open your terminal '/dev/pts/0'
Run Code Online (Sandbox Code Playgroud)

我有一个以“监视器”用户身份运行的脚本。我们在屏幕会话中运行它,以便在屏幕上看到输出。问题是,我们有许多用户使用自己的帐户(即 bob、james、susie 等)登录,然后他们 sudo 进入“监视器”用户。让他们访问“监视器”用户是不可能的。

sudo gnu-screen

178
推荐指数
4
解决办法
9万
查看次数

ssh-agent 转发和 sudo 到另一个用户

如果我有一个服务器 A,我可以使用我的 ssh 密钥登录,并且我有能力“sudo su - otheruser”,我会丢失密钥转发,因为 env 变量被删除并且套接字只能由我的原始用户读取。有没有一种方法可以通过“sudo su - otheruser”桥接密钥转发,这样我就可以使用转发的密钥(在我的情况下为 git clone 和 rsync )在服务器 B 上做一些事情?

我能想到的唯一方法是将我的密钥添加到其他用户的授权密钥和“ssh otheruser@localhost”,但对于我可能拥有的每个用户和服务器组合来说,这很麻烦。

简而言之:

$ sudo -HE ssh user@host
(success)
$ sudo -HE -u otheruser ssh user@host
Permission denied (publickey). 
Run Code Online (Sandbox Code Playgroud)

ssh sudo agent forwarding ssh-agent

177
推荐指数
7
解决办法
9万
查看次数

如何安全地使用每个主机的密码实现 ansible?

我想使用ansible来管理一组现有的服务器。我创建了一个ansible_hosts文件,并-K使用仅针对单个主机的命令进行了成功测试(使用选项)

ansible -i ansible_hosts host1 --sudo -K # + commands ...
Run Code Online (Sandbox Code Playgroud)

我现在的问题是每个主机上的用户密码都不同,但是我在 Ansible 中找不到处理此问题的方法。

使用-K,我只被提示预先输入一个 sudo 密码,然后似乎在没有提示的情况下为所有后续主机尝试:

host1 | ...
host2 | FAILED => Incorrect sudo password
host3 | FAILED => Incorrect sudo password
host4 | FAILED => Incorrect sudo password
host5 | FAILED => Incorrect sudo password
Run Code Online (Sandbox Code Playgroud)

迄今为止的研究:

security sudo ansible

118
推荐指数
4
解决办法
4万
查看次数

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

在过去的几个月里,我一直在使用 Linux(Fedora 10,然后是 11)(并且非常享受它——就像重新发现计算机一样,有很多东西要学习)。

我已将我的用户添加到/etc/sudoers文件的最后一行,如下所示,以便在执行sudo命令时不会要求我输入密码:

MyUserName ALL=(ALL) NOPASSWD:ALL
Run Code Online (Sandbox Code Playgroud)

现在,每次我使用 执行命令时sudo,它都会在实际执行任务之前暂停一段明显的时间(约 10 秒)。为什么会这样,我该如何解决这个问题?我在 Fedora 11 x86 64 上运行 Sudo 1.7.1 版。

linux permissions sudo

108
推荐指数
7
解决办法
12万
查看次数

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

我有一个只能以我的用户名 (myuser) 登录的系统,但我需要以其他用户 (scriptuser) 身份运行命令。到目前为止,我想出了以下来运行我需要的命令:

ssh -tq myuser@hostname "sudo -u scriptuser bash -c \"ls -al\""
Run Code Online (Sandbox Code Playgroud)

但是,如果当我尝试运行更复杂的命令时,例如[[ -d "/tmp/Some directory" ]] && rm -rf "/tmp/Some directory"我很快就会遇到引用问题。我不确定如何将这个示例复杂命令传递给bash -c,当\"已经分隔了我传递的命令的边界时(所以我不知道如何引用 /tmp/Some 目录,其中包含一个空格。

无论引用多么复杂/疯狂,是否有通用解决方案允许我传递任何命令,或者这是我达到的某种限制?是否有其他可能的,也许更具可读性的解决方案?

scripting ssh bash sudo

83
推荐指数
6
解决办法
7万
查看次数

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

管理员通过个人用户名登录服务器,然后运行sudo -i成为 root ,这是公司的政策。运行时sudo -i,sudo 将创建一个名为 的环境变量SUDO_USER,其中包含原始用户的用户名。

有没有办法使用类似于以下语法的内容在 syslog 中记录所有命令:

${TIME/DATE STAMP}: [${REAL_USER}|${SUDO_USER}]: ${CMD}
Run Code Online (Sandbox Code Playgroud)

一个示例条目是:

Sat Jan 19 22:28:46 CST 2013: [root|ksoviero]: yum install random-pkg
Run Code Online (Sandbox Code Playgroud)

显然它不必完全是上述语法,它只需要包含最少的真实用户(例如 root)、sudo 用户(例如 ksoviero)和运行的完整命令(例如 yum安装随机包)。

我已经试过了snoopy,但它不包括SUDO_USER变量。

bash logging centos sudo

80
推荐指数
3
解决办法
10万
查看次数

sudoers:如何禁用每个用户的要求

我不想注释掉以下行/etc/sudoers

Defaults    requiretty
Run Code Online (Sandbox Code Playgroud)

相反,我只希望某个用户不需要 tty。如何才能做到这一点?

sudo

79
推荐指数
2
解决办法
13万
查看次数

如何在不允许 root 访问的情况下允许一个用户 su 到另一个用户?

我想允许某些用户 su 到另一个用户帐户而不必知道该帐户的密码,但不允许访问任何其他用户帐户(即 root)。
例如,我想允许 DBA Tom su 到 oracle 用户,而不是 tomcat 用户或 root。

我想这可以通过 /etc/sudoers 文件来完成 - 有可能吗?如果是这样,如何?

security linux sudo

63
推荐指数
3
解决办法
15万
查看次数

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

我喜欢通过密钥访问服务器的想法,这样我就不必每次ssh进入一个盒子时都输入我的密码,我什至锁定了我的用户(不是root)密码(passwd -l username),所以没有密钥就不可能登录。

但是如果我需要为sudo命令输入密码,所有这些都会中断。所以我很想设置无密码sudo来使事情符合无密码登录。

然而,我一直有一种直觉,它可能会以某种意想不到的方式对我产生适得其反的效果,它似乎有点不安全。这样的设置有什么注意事项吗?您是否建议/不建议为服务器上的用户帐户执行此操作?

澄清

  1. 我在这里谈论的是sudo在交互式用户会话中的使用,而不是用于服务或管理脚本
  2. 我说的是使用云服务器(所以我没有对机器的物理本地访问权限,只能远程登录)
  3. 我知道sudo有一个超时,在此期间我不必重新输入我的密码。但我的音乐会并不是为了浪费额外的时间来实际输入密码。我的想法是根本不必处理密码,因为我认为:
    • 如果我必须记住它,它很可能太短而无法安全或重复使用
    • 如果我为我的远程帐户生成一个长而唯一的密码,我将不得不将它存储在某个地方(本地密码管理器程序或云服务)并在每次我想使用sudo. 我希望我能避免这种情况。

因此,通过这个问题,我想更好地了解一种可能配置相对于其他配置的风险、警告和权衡。

跟进 1

所有的答案都说无密码sudo是不安全的,因为如果我的个人用户帐户受到威胁,它允许“轻松”提升权限。我明白那个。但另一方面,如果我使用密码,我们会承担密码的所有经典风险(太短或太常见的字符串,在不同的服务中重复等)。但是我想如果我禁用密码验证/etc/ssh/sshd_config以便您仍然必须有一个密钥才能登录,我可以使用更简单的密码只是为了sudo更容易输入?这是一个有效的策略吗?

跟进 2

如果我也有root通过 ssh登录的密钥,如果有人可以访问我的计算机并窃取我的密钥(尽管他们仍然受操作系统的密钥环密码保护!),他们也可以直接访问该root帐户,绕过sudo路径。那么访问该root帐户的策略应该是什么?

security linux password sudo

60
推荐指数
5
解决办法
1万
查看次数