我得到了一个需要sudo的脚本,但是脚本必须按照原用户设置参数,比如:
chown "${USER}:${USER}" dir
Run Code Online (Sandbox Code Playgroud)
如果我将它设置在 sudo 下,我只会得到chmod root:root,这无济于事。
那么如何在 sudo 之前获取用户名呢?
如果您尝试附加到没有写权限的文件(例如,由 root 拥有并具有 0440 权限的 /etc/sudoers 文件),如果您是实际的 root 用户,这将起作用。但是,如果您是另一个使用 sudo 的用户,则会收到权限被拒绝错误。
为什么是这样?这不是因为文件的所有权 - 它也不适用于普通用户拥有的文件。真正的 root 用户似乎拥有比 sudo 授予的更多权限。这样做的理由是什么?有没有办法向使用 sudo 的用户授予此权限?
在 sudoers 文件中添加此命令是否安全?
mike ALL= NOPASSWD:/bin/chown -R www-data\:www-data /var/www
Run Code Online (Sandbox Code Playgroud)
这是我想运行的唯一命令
$mike@ubuntu: sudo chown -R www-data:www-data /var/www
Run Code Online (Sandbox Code Playgroud)
谢谢你。
是否可以编辑 sudoers 文件,以便用户可以将 sudo 用于除指定命令之外的任何命令?我倒是真的,我相信,可以设置 sudoers 文件,以便用户只能执行给定的命令列表。
编辑:我真正想要取消的命令是暂停和重启......这让我认为有特殊的系统调用暂停和重启。你能从用户那里接听系统调用吗?如果不是,是不是因为unix权限系统对系统调用进行了抽象而忽略了这一点?
我们有多个 Linux 服务器对 Active Directory 域进行身份验证。对于 AD 中的一个组,我想添加一个允许使用 sudo 以 root 身份运行的命令列表。我显然可以 ssh-in 到每台计算机并更新 sudoers 文件 - 但这需要一些时间。此外,不允许 root 登录。因此,无密码登录仅适用于非 root 用户。
有没有一种快速的方法可以一次性更新每台 Linux 计算机的 sudoers 文件?我在这里考虑使用具有一些系统管理能力的 Perl 或 Python 脚本。
更新:感谢 veroteq7 和 Shane Madden。我曾经想过部署 cfengine - 但我们目前没有运行它。我们已经决定使用 LDAP 将是最好的解决方案。我在为 sudo 导入 LDIF 架构 schema.ActiveDirectory 时出错。第 144 行的错误是“参数不正确”。
这是从第 144 行开始的内容:
dn: CN=sudoRole,CN=Schema,CN=Configuration,DC=X
changetype: add
objectClass: top
objectClass: classSchema
cn: sudoRole
distinguishedName: CN=sudoRole,CN=Schema,CN=Configuration,DC=X
instanceType: 4
possSuperiors: container
possSuperiors: top
subClassOf: top
governsID: 1.3.6.1.4.1.15953.9.2.1
mayContain: sudoCommand
mayContain: sudoHost
mayContain: sudoOption …Run Code Online (Sandbox Code Playgroud) 当我加入时,我们所有的 SA 都必须记住系统的 root 密码。我觉得这很麻烦(当有人从公司离职时,我们必须接触每台服务器并更改密码)且不安全。
终于有足够的拉力来推送具有sudo访问权限的个人帐户。我想平稳过渡,所以这是我的初步计划:
sudo. 如果认为有必要,我将审核此命令并将它们定义为“已批准”,或者如果它们构成安全风险,则阻止它们被执行。我们的用户规范如下所示:
%sysadmins ALL = PASSWD: ALL, NOPASSWD: SERVICES, FILE_READING, !/bin/su
Run Code Online (Sandbox Code Playgroud)
问题:sudo当执行配置PASSWD为的命令时,我如何进行审计(最好通过电子邮件,但日志可以)?
我正在使用 drupal 和 Aegir。Aegir 自动化了许多站点创建任务。Aegir 控制了 Apache,我以 root 身份登录,我想重新启动 Apache 服务器,但我想代表 Aegirs 执行此操作。不幸的是,我不知道 Aegir 密码,所以基本上我想知道如何以其他用户身份执行某些操作。
我想在我的 suoders 中添加一个条目,以允许一个用户仅使用一个非选项参数来运行命令。
# tail -1 /etc/sudoers
ALL ALL = (:tool) NOPASSWD: /bin/echo [a-z]*
$ sudo -g tool /bin/echo abc def
abc def
$ sudo -g tool /bin/echo -abc def
[sudo] password for user:
Run Code Online (Sandbox Code Playgroud)
我可以使用 sudoers sytnax 来做到这一点吗?还是我需要创建一个帮助脚本?
我必须管理大量主机,其中只有一个用户可以从 SSH 访问(我们称他为 foo),然后必须以 root 身份登录才能执行特权命令。
Foo 用户没有任何类型的 sudo 权限,因此我被迫以 root 身份登录以执行特权命令。我实际上正在使用一个期望脚本来完成这项工作(ssh 以 foo 身份登录,通过 su 以 root 身份登录)并且我想切换到 Ansible。我知道我可以创建一个新用户并授予他 sudo 权限或基本上授予 foo sudo 权限,但是是否可以使用 Ansible 做与 expect 相同的事情?
我想以 foo 身份进行 ssh 连接,然后以 root 身份执行剧本或任何类型的临时命令。我在 Ansible 文档中没有找到任何关于此的信息,所以我在这里询问是否有人已经接受过这种审讯。
无法将用户切换到 postgres。
postgres 用户的 Ulimit 设置设置了合理的限制。我们没有达到最大值。
/var/log/messages 中没有错误。
错误:
BETA -bash-4.2# sudo su - postgres
su: /bin/bash: Resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)
设置:
BETA -bash-4.2# ps -auxww | grep -i postgr | wc -l
503
BETA -bash-4.2# lsof | grep -i postgr | wc -l
35225
BETA -bash-4.2#
Run Code Online (Sandbox Code Playgroud)
postgres 进程的 Ulimit。
BETA -bash-4.2# cat /proc/26230/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size …Run Code Online (Sandbox Code Playgroud)