我正在使用的 PHP 程序 ( LConf ) 使用sudo.
我已允许用户apache运行脚本并使用sudo -u apache /usr/local/LConf/lconf_deploy.sh.
我在lconf_deploy.sh拨打时被提示输入密码/usr/bin/sudo -u icinga /usr/local/LConf/LConfExport.pl -o /etc/icinga/lconf -v,但在此线路之前或之后拨打线路没有问题。
在阅读了很多(在 stackexchange 和互联网上的其他地方)关于在这种情况下该怎么做之后,我已经禁用requiretty并使用NOPASSWD了所有我能想到的会影响这种情况的东西。
# cat /etc/sudoers | grep -v "#"
Defaults always_set_home
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC …Run Code Online (Sandbox Code Playgroud) 我在亚马逊的 linux 上运行亚马逊 ec2 实例。
每当我运行任何东西时,sudo yum它都会给我这个:
sudo: yum: command not found
ec2-user$ rpm -qf /usr/bin/yum
yum-3.2.29-30.24.amzn1.noarch
ec2-user$ which yum
/usr/bin/yum
Run Code Online (Sandbox Code Playgroud)
which yum 而在 root 中给出:
root$ which yum
/usr/bin/which: no yum in (/sbin:/bin:/usr/sbin:/usr/bn:/usr/local/bin:/opt/aws/bin)
Run Code Online (Sandbox Code Playgroud)
这是两天前的新 ec2 实例。当我第一次登录时,我跑了sudo yum update,但一切都不太顺利。发生了什么变化?
我的sudoers.d/nginx文件中有以下内容:
deployer ALL=NOPASSWD: /etc/init.d/nginx reload
Run Code Online (Sandbox Code Playgroud)
如果我以 sudo 身份运行命令,这会起作用:
$ sudo /etc/init.d/nginx start
[sudo] password for deployer:
Sorry, user deployer is not allowed to execute '/etc/init.d/nginx start' as root on graduation.
Run Code Online (Sandbox Code Playgroud)
但是,当我以非 sudo运行命令时,似乎 sudoers 被通过了。该命令仍然不起作用,但这是因为其他所有权错误,而不是 sudoers 中的限制:
$ /etc/init.d/nginx start
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2012/12/30 20:59:49 [warn] 30054#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:12
2012/12/30 20:59:49 …Run Code Online (Sandbox Code Playgroud) 是否可以?
我用 PHP 编写了一个命令行工具,用于为我们公司创建新环境。它创建系统用户、目录、数据库、VHosts 并重新启动 apache 等。这些命令需要sudo特权。我认为为它提供一个 Web 界面可能是个好主意,以便其他非开发人员更容易使用。Web 应用程序将落后于身份验证。
从命令行运行时sudo tool.php,我只是运行,显然我无法从网络应用程序执行此操作。
我怎么能安全地做到这一点?授予 apache 用户 sudo 访问权限似乎很愚蠢,因为这意味着主机上托管的所有站点(例如我们所有的环境)都将具有 sudo 访问权限。是否可以让这个工具在不同的用户下运行?这个用户可以只对我需要的命令有 sudo 权限吗?
plesk 和 cPanel 之类的东西是如何做到这一点的?
有什么想法吗?
我们有一个 linux 系统 ferguson。
关于弗格森:sudo su进入用户 ID admin。sudo su进入用户 ID 管理员。sudo su。我的笔记本电脑的 linux vm 如何使用 userid a123 以管理员身份执行 sshfs mount ferguson,使用 sudo 访问?
我正在尝试将 iptables 规则文件保存到 /etc/sysconfig/iptables。我想在不登录 root 的情况下执行此操作。我尝试使用
须藤 iptables-save > /etc/sysconfig/iptables
但它抛出权限被拒绝错误。
如何在不登录 root 的情况下保存文件?我在我的应用程序中使用它,所以我不想通过应用程序登录到 root。
谢谢
我正在为我们的一线支持团队设置专门的 sudo。我想授权他们删除/var/log/. 但是,下面的命令仅适用于直接位于/var/log/其子目录中的文件。如果他们试图从中删除,/var/log/directory/file_name则不允许他们删除该文件。我尝试了一些阅读,但无法弄清楚如何更改此命令以使权限递归。任何意见,将不胜感激。
%front_line ALL=(ALL) NOPASSWD: /bin/rm /var/log/*
Run Code Online (Sandbox Code Playgroud) 几周以来,我们使用 SaltStack 进行配置管理。
如何处理分布的具体位置systemctl?
/bin/systemctl/usr/bin/systemctl目前我在 sudoers 文件中添加了两行:
etc_sudoers:
file.blockreplace:
- name: /etc/sudoers
- marker_start: "# START managed etc_sudoers -DO-NOT-EDIT-"
- marker_end: "# END managed zone etc_sudoers --"
- content: |
some_user ALL = NOPASSWD: /bin/systemctl restart apache2
some_user ALL = NOPASSWD: /usr/bin/systemctl restart apache2
{% endfor %}
- append_if_not_found: True
- backup: '.bak'
- show_changes: True
Run Code Online (Sandbox Code Playgroud)
....有没有更简单的解决方案?
我在我的 Debian/Apache2.4 服务器上有一个用 Python 编写的 webhook 脚本,以便它在推送 GitHub 时运行部署 .sh 脚本。因此,该脚本由标准 Apache 用户“www-data”执行。我的脚本需要重新启动或加载了Apache,但输出表示用户不必这样做的许可:Reloading apache2 configuration (via systemctl): apache2.serviceFailed to reload apache2.service: Access denied。手动执行时的行为与 www-data ( sudo -u www-data /etc/init.d/apache2 reload) 相同。
因此,我尝试通过将以下行添加到我的 visudo 中来使“www-data”具有重新加载或重新启动 Apache 的权限:(www-data ALL = NOPASSWD: /etc/init.d/apache2根据此文档)。
但它不会改变任何东西。为什么?是不是因为Apache无法重新加载自己?如何更改权限以执行此操作?或者我是否需要由另一个用户执行脚本,以及如何执行?
将 FreeIPA 用于 sudoers 规则,我正在尝试创建与以下标准 sudoers 行相同的内容:
user ALL=(ALL) NOPASSWD:ALL
group ALL=(ALL) NOPASSWD:ALL
Run Code Online (Sandbox Code Playgroud)
允许特定用户或组在不提示输入密码的情况下执行任何/所有命令。
这不是下面提到的重复,因为我的目标是绕过密码提示(使用 NOPASSWD)。我已经知道如何设置所有命令。
添加 '!authenticate' 选项似乎也不起作用(见下文):
tester@server:~$ ipa sudorule-find ANY
-------------------
1 Sudo Rule matched
-------------------
Rule name: ANY
Enabled: TRUE
Host category: all
Command category: all
RunAs User category: all
RunAs Group category: all
Users: tester
External User: user
Sudo Option: !authenticate
----------------------------
Number of entries returned 1
----------------------------
tester@server:~$
tester@nvamgtwiki01:~$ sudo cat /etc/sudoers
[sudo] password for tester:
Run Code Online (Sandbox Code Playgroud) sudo ×10
linux ×3
bash ×2
permissions ×2
php ×2
root ×2
amazon-ec2 ×1
apache-2.2 ×1
apache-2.4 ×1
fedora-22 ×1
freeipa ×1
httpd ×1
iptables ×1
perl ×1
rules ×1
saltstack ×1
security ×1
sshfs ×1
yum ×1