标签: 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
查看次数

使用 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
查看次数

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
查看次数

对另一个域用户执行 sudo 时的特权

假设我有一个mydomain使用 MS Active Directory的公司域。在域中,我有用户myuseryouruser. 现在,在一台特定的 Ubuntu 机器上mymachine, myuser 具有 sudo 权限,并且执行sudo su youruser(或sudo -u youruser sh)。由于 myuser 具有必要的 sudoers 配置,因此他不需要输入您用户的密码,并且将有效地成为机器上的您的用户。

  1. 此时会有什么样的youruser特权myuser?显然,如果机器上youruser也有一个主目录,myuser现在可以访问它并读取他的私有本地文件。但是如果尝试使用 kerberos、samba 等访问网络域资源会发生什么?我猜因为他从来没有输入过youruser密码,所以他没有作为域用户进行身份验证,没有 kerberos 票等。所以如果有一个网络服务来检查他的用户 ID 的组成员身份,那也会失败吗?这是如何运作的?他是否被视为不同的用户,例如,mymachine\\yourusermydomain\\youruser?

  2. 假设有一个 web 服务作为机器上的守护程序运行,使用专用域用户myserviceuser。如果此 Web 服务需要访问网络资源,即使用 Kerberos 进行身份验证,那么应该如何设置守护程序,例如从新贵脚本中设置?通常您使用类似的东西启动它sudo -u myserviceuser <cmd>,但鉴于上述假设,这是否会授予 Web 服务访问网络资源的任何权限?该用户的密码不应该在某处输入吗?

linux kerberos authentication sudo upstart

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

Ansible become_user 没有正确选择路径

这是显示我认为有问题的代码:

# Debugging path problems with sudo
---
- hosts: webservers
  remote_user: root
  tasks:
  - name: echo path
    command: echo $PATH
    register: output
    changed_when: False

  - name: display root path output
    debug: "msg={{ output.stdout }}"

  # Now try as apache
  - name: echo path
    command: echo $PATH
    become: true
    become_user: apache
    become_method: sudo
    register: output
    changed_when: False

  - name: display wrong output
    debug: "msg={{ output.stdout }}"

  # This is the fix
  - name: echo path
    command: echo $PATH
    environment:
      PATH: …
Run Code Online (Sandbox Code Playgroud)

sudo path ansible

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

限制切换到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
查看次数

Centos 7 - 将用户添加到 sudoers 组 - 仍然不在 sudoers 文件中 - 为什么?

[user@localhost ~]$ su -
Password: 
Last login: ...
[root@localhost ~]# usermod -aG wheel user
[root@localhost ~]# exit
logout
[user@localhost ~]$ sudo echo 123
[sudo] password for user: 
user is not in the sudoers file.  This incident will be reported.
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

linux redhat user-management centos sudo

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

使用 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
查看次数