标签: sudo

sudo 不保留 TMPDIR

sudo 联机帮助页告诉我,我可以通过传递选项来保护环境-E,这在以下情况下不起作用$TMPDIR

> env | grep TMPDIR
TMPDIR=/localdata/tmp
> sudo env | grep TMPDIR
[no output]
> sudo -E env | grep TMPDIR
[no output]
Run Code Online (Sandbox Code Playgroud)

此选项未列入黑名单,即sudo sudo -V未将其列为“要删除的环境变量”。按照问题“如何指定根的环境变量”的答案中提出的方法,我尝试将其列入白名单,这是我的/etc/sudoers读物:

Defaults        env_reset
Defaults        env_keep = "TMPDIR"
Run Code Online (Sandbox Code Playgroud)

这也不起作用,它实际上甚至没有TMPDIR出现在白名单中(即“sudo sudo -V”打印为“要保留的环境变量”)。

(我运行的是 Ubuntu 10.04。)

sudo environment-variables tmp

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

我如何“sudo -i”特定命令

我需要像 sudo -i 一样在没有密码的情况下运行 important_script.sh。

如果我有 sudoers:

apache ALL = (root) NOPASSWD:    /blah/important_script.sh
Run Code Online (Sandbox Code Playgroud)

并运行“sudo /blah/important_script.sh”我可以在没有密码的情况下运行它。

但是,如果我运行“sudo -i /blah/important_script.sh”,我需要输入 apache 的密码。

如果我将 sudoers 中的行更改为:

apache ALL = (root) NOPASSWD:ALL
Run Code Online (Sandbox Code Playgroud)

我可以在没有密码的情况下运行命令“sudo -i /blah/important_script.sh”。

但我希望只能运行 /blah/important_script.sh,而不是所有命令。

那么,我如何设置只有 /blah/important_script.sh 可以在没有密码的情况下使用 sudo -i 运行。

root sudo

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

使用 NOPASSWD 时 sudo 仍然要求输入密码

我阅读了关于 serverfault 的所有 sudo 帖子,但我仍然无法弄清楚我做错了什么。通常我终于找到了解决方案,但这次不是:

我希望 apache 用户能够以用户“hremotessh”的身份执行此命令:

sudo /home/hremotessh/scripts/redirect.sh 8892 8893
Run Code Online (Sandbox Code Playgroud)

因此我在 visudo 中添加了这个:

apache ALL=(hremotessh) NOPASSWD: /home/hremotessh/scripts/redirect.sh
Run Code Online (Sandbox Code Playgroud)

但是 sudo 仍在询问密码?

sudo /home/hremotessh/scripts/redirect.sh
[sudo] password for apache:
Run Code Online (Sandbox Code Playgroud)

我试过这个,但不是更好:

sudo -u hremotessh /home/hremotessh/scripts/redirect.sh
hremotessh is not in the sudoers file.  This incident will be reported.
Run Code Online (Sandbox Code Playgroud)

任何想法都会受到热烈欢迎:-)

丹尼斯

security linux unix sudo

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

Visudo 没有给出错误,但会问“现在怎么办?”

我正在尝试使用sudo visudo -f /etc/sudoers.d/abe . 我添加了以下内容:

# Allow automatic update of abe
matt    ALL=(root) NOPASSWD: python /home/matt/token-abe/setup.py install --force
Run Code Online (Sandbox Code Playgroud)

但是当我尝试写作并退出时,我得到“现在怎么办?” 没有错误:

$ sudo visudo -f /etc/sudoers.d/abe
[sudo] password for matt: 
What now? e
What now? 
Run Code Online (Sandbox Code Playgroud)

我正在使用 Debian 7。

linux debian sudo debian-wheezy

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

丢失无密码 sudo 且没有 root 访问权限

我有一个正在运行的 AWS 虚拟机。我唯一的访问权限是使用 ssh 密钥(.pem 文件)以 ec2-user 身份登录,这是一个非特权用户。从那里,我可以在没有密码的情况下使用 sudo 命令。

不知何故,无密码 sudo 被禁用,它要求我提供 ec2-user 密码。但是这个密码从来没有设置过,它是乱码。

  1. 如何重新获得 root/sudo 访问权限?还是我被迫从头开始?
  2. 这怎么发生的?我从未接触过 /etc/sudoers 文件

password sudo amazon-web-services

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

SE Linux - 无法使用 sudo 更改 SELinux 布尔值

我认为这是放置此内容的正确位置,而不是放在 StackOverflow 中

不管怎样,我们都有一个 CentOS 6.6 服务器。SElinux 不允许我们启用 httpd_can_sendmail

我试过这个....

sudo setsebool -P httpd_can_sendmail on
Run Code Online (Sandbox Code Playgroud)

然后我得到这个

/usr/sbin/getsebool httpd_can_sendmail
httpd_can_sendmail --> off
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个

sudo setsebool -P httpd_can_sendmail 1
sudo setsebool -P httpd_can_sendmail true
sudo setsebool -P httpd_can_sendmail on
Run Code Online (Sandbox Code Playgroud)

selinux sudo centos6

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

SSH:su root 还是 sudo?

什么是更好的选择:使用 su 切换到 root 或启用 sudo?如果不使用 sudo,入侵者将需要知道允许 ssh 的用户的密码(或密钥)以及 root 密码。使用 sudo 非特权用户的密码就足够了。

我设置了一个新的网络服务器 (Debian 8.2),想知道通过 SSH 安全连接到它的最佳实践是什么,并且我仍然可以轻松使用它。

到目前为止,我已经在 SSH 上禁用了 PermitRootLogin 并切换了端口。iptables 也可以阻止我不需要的一切。现在我必须使用非特权用户登录,然后切换

su root
Run Code Online (Sandbox Code Playgroud)

但是作为 root 工作并不是我听说过的最好的事情......所以我想只授予我的非特权用户 sudo 权限。

然后再次入侵者只需要知道一个密码,因为 sudo 要求提供当前用户密码而不是 root 密码。因此,我通过禁用 SSH 中的 PermitRootLogin 使攻击者更难的计划不再起作用。

所以:su root 还是 sudo?

linux su debian ssh sudo

5
推荐指数
2
解决办法
3132
查看次数

限制切换到root帐户的并发用户数?

这适用于 Ubuntu 14.04 和 Centos 7。

我需要限制以 root 身份主动运行的用户数量。即在 CLI 上以 root 身份登录。

基本上,我一次只希望一个用户能够以 root 身份运行命令。这里的目的是审计。

我研究了在 /etc/security/limits.conf 中设置限制,但 pam_limits.so 模块似乎只影响登录。或者登录shell。没有把握。但无论具体情况如何,它确实会阻止用户多次通过 SSH 连接到一个盒子,但不会阻止多个用户通过“sudo su”成为 root 用户。因此,设置limits.conf 仍然可以允许多个用户同时以root 身份登录。

这是我尝试过的limits.conf行来限制这个:

root            hard    maxlogins            1
Run Code Online (Sandbox Code Playgroud)

接下来我尝试限制@admins 组中的用户。我认为这些用户是唯一允许 sudo su 到 root 的用户(基于我们现有的自定义 sudo 规则)。

@admins            hard    maxlogins            1
Run Code Online (Sandbox Code Playgroud)

这似乎做我想做的事,但似乎笨拙/错误。称之为直觉——我不太清楚我认为这个错误的地方。

最后,“为什么?”。为什么我有这个要求?

我们正在尝试实施控制以满足 PCI-DSS 3.1 要求 8.5“不要使用组、共享或通用 ID、密码或其他身份验证方法”——强调“共享”。在 Windows 环境中,您只需授予用户执行任何操作的权限,并且没有人共享主管理员帐户。Linux 环境的设计使得在某些情况下,您确实希望以 root 身份登录。在 Linux 环境中必须有一种符合 PCI 标准的方法来解决这个问题。

linux sudo pci-dss limits ubuntu-14.04

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

为什么我不能在 sudo pam 堆栈中使用 pam_echo.so?

我有一台 CentOS 7 机器,我想在 sudo 期间身份验证失败时显示一条消息。pam_echo我尝试通过在 中添加一行来做到这一点/etc/pam.d/sudo

为了进行测试,我创建了一个文件 ,/etc/security/foo其中包含字符串“bar”。

这是我的 sudo pam 堆栈/etc/pam.d/sudo

auth       include      system-auth
auth       optional     pam_echo.so file=/etc/security/foo
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so revoke
session    required     pam_limits.so
Run Code Online (Sandbox Code Playgroud)

由于某种原因,当我无法进行身份验证时,我看不到 pam_echo 的输出。

$ sudo ls
[sudo] password for steve: 
Sorry, try again.
[sudo] password for steve: 
Sorry, try again.
[sudo] password for steve: 
sudo: 3 incorrect password attempts
Run Code Online (Sandbox Code Playgroud)

我用 pamtester 测试了 sudo pam 堆栈,输入错误密码后得到了预期的结果。

$ pamtester sudo steve …
Run Code Online (Sandbox Code Playgroud)

linux centos sudo pam centos7

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

使用 Ansible 检查 sudoers.d 文件

我有一个 Ansible playbook,用于在我们的环境中管理我们的 sudoers 文件。我们喜欢在 /etc/sudoers 中保留一个最小的 sudoers 文件,然后我们想要添加的任何内容都会放入 /etc/sudoers.d 下的单独文件中。

我的 Ansible playbook 包含以下推送这些文件的任务:

- name: copy sudoers files
  copy:
    src: "{{ item }}"
    dest: "/etc/sudoers.d/{{ item }}"
    backup: yes
    owner: root
    group: root
    mode: 0440
    validate: /usr/sbin/visudo -cf %s
  with_items:
    - admins
    - apache
    - monitor
Run Code Online (Sandbox Code Playgroud)

该任务包含一个validate 子句,用于在提交文件之前确保文件有效,这通常运行良好。但是,今天我遇到了更新破坏 sudo 的问题。该文件通过了验证步骤,但包含一个与主 /etc/sudoers 文件中的 User_Alias 同名的 User_Alias。之后任何尝试运行 sudo 都会导致解析错误。

我的问题是 - 如何从 Ansible 测试我的 sudoers 文件的更新,以捕获这样的错误?一旦文件就位,就可以通过运行来捕获错误visudo -c,但将其放入验证步骤不起作用。Ansible 需要%s占位符,即使没有,也会在将文件复制到位之前完成验证,visudo -c以免捕获它。

linux sudo ansible

5
推荐指数
2
解决办法
9887
查看次数