如何在 CentOS 服务器上列出所有 sudo 用户?
服务器上有许多组(root、wheel、adm 等),并且其中有用户。我正在寻找一种简单的方法/命令来查找所有组中具有 sudo 访问权限的用户。
注意:我的用户也有 sudo 访问权限。我使用的是 64 位 CentOS 5.2 版(最终版)。
该CKAN安装文档展示了如何列出已安装PostgreSQL数据库。
该命令如下所示:
sudo -u postgres psql -l
Run Code Online (Sandbox Code Playgroud)
当我在我的 shell 中尝试时,我收到一个错误:
$ sudo -u postgres psql -l
sudo: psql: command not found
Run Code Online (Sandbox Code Playgroud)
CentOS 论坛上的 Daniel2d2art通过完全限定 psql 的路径解决了这个问题。
我的 psql 位于目录中/usr/pgsql-9.2/bin,所以我的解决方法现在看起来像这样:
sudo -u postgres /usr/pgsql-9.2/bin/psql -l
Run Code Online (Sandbox Code Playgroud)
当我在我的 shell 中尝试时,它可以工作:
$ sudo -u postgres /usr/pgsql-9.2/bin/psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
--------------+----------+----------+-------------+-------------+-----------------------
postgis_test | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | …Run Code Online (Sandbox Code Playgroud) 我已经安装了 su 以允许安全分析师登录到 VPS 以进行一些需要 root 权限的更改-我创建了一个用户,他们可以在他们的帐户下正常登录,但是一旦我键入su,su -或者su- root然后输入用户密码我得到:
su: incorrect password
Run Code Online (Sandbox Code Playgroud)
以 root 身份重新登录,用户已被添加到 sudoers 并且对 su 的权限是:
-rwsr-xr-x 1 root root 35K May 23 11:00 /bin/su
Run Code Online (Sandbox Code Playgroud)
还有什么可能导致问题?VPS运行的是Centos 6.4
在 EC2 中运行的 Ubuntu 13.04 上,sudo除了ls. 以下是一些示例命令来说明问题:
ubuntu at host in ~
$ sudo ls
sudo: command: command not found
ubuntu at host in ~
1 $ sudo which ls
/bin/ls
ubuntu at host in ~
$ sudo /bin/ls
bin dotfiles init npm tmp
ubuntu at host in ~
$ sudo pwd
/home/ubuntu
ubuntu at host in ~
$ sudo which pwd
/bin/pwd
ubuntu at host in ~
$ echo wtf
wtf
Run Code Online (Sandbox Code Playgroud)
我通过以下方式添加了以下 sudo 配置条目sudo visudo:
mark ALL = NOPASSWD: /usr/bin/lxc-ls*
Run Code Online (Sandbox Code Playgroud)
我可以lxc-ls和我的用户一起运行,但我不能附加任何参数,除非它要求我在命令前加上sudo.
$ whoami
mark
$ lxc-ls
test-container
$ lxc-ls --fancy
lxc-ls: error: You must be root to access advanced container properties. Try running: sudo /usr/bin/lxc-ls
Run Code Online (Sandbox Code Playgroud)
知道如何编辑 viasudo visudo以允许在命令后使用任何参数吗?
我不想在命令前加上 sudo 前缀,因为我正在使用 python 库来执行命令,而且 sudo 前缀很有趣。
更新:
我试过删除*但这也不起作用:
$ sudo grep '\-ls' /etc/sudoers
mark ALL = NOPASSWD: /usr/bin/lxc-ls
$ lxc-ls
test-container
$ lxc-ls --fancy
...
lxc-ls: error: You must be root to …Run Code Online (Sandbox Code Playgroud) 在红帽 linux 中。来自我的用户,如果我发出命令 sudo su -> 更改为 root su tomcat --> 更改为 tomcat 用户
为什么在单行中拖尾命令不起作用?须藤苏; su tomcat --> 仍然在 root 中。不切换到tomcat
我有一个用于 Zabbix 的自定义用户参数,它调用硬件 RAID CLI 工具(arcconf / megacli)并检查是否有任何阵列降级。由于这些工具都是root权限的,我配置了sudoers允许zabbix用户无需密码即可访问:
Defaults:zabbix !requiretty
Cmnd_Alias ZABBIX_MEGACLI_CMDS = /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL
zabbix ALL = (ALL) NOPASSWD: ZABBIX_MEGACLI_CMDS
Run Code Online (Sandbox Code Playgroud)
在 CentOS 5 上,zabbix_agentd 不受限制地运行,一切正常。在 CentOS 6 上,代理现在在单独的 zabbix_agent_t 域中运行。这引起了问题。最初无法执行 sudo 二进制文件本身,但我添加了此策略:
sudo_exec(zabbix_agent_t)
Run Code Online (Sandbox Code Playgroud)
现在它以不同的方式消亡:
type=AVC msg=audit(1407137597.193:157): avc: denied { create } for pid=3145 comm="sudo" scontext=unconfined_u:system_r:zabbix_agent_t:s0 tcontext=unconfined_u:system_r:zabbix_agent_t:s0 tclass=unix_dgram_socket
type=SYSCALL msg=audit(1407137597.193:157): arch=c000003e syscall=41 success=no exit=-13 a0=1 a1=80002 a2=0 a3=1 items=0 ppid=3121 pid=3145 auid=0 uid=496 gid=495 euid=0 suid=0 fsuid=0 egid=495 sgid=495 fsgid=495 tty=(none) ses=3 comm="sudo" exe="/usr/bin/sudo" subj=unconfined_u:system_r:zabbix_agent_t:s0 key=(null)
type=AVC msg=audit(1407137597.193:158): …Run Code Online (Sandbox Code Playgroud) 我想授予特定(常规)用户grep访问我的邮件日志 ( /var/log/maillog*) 的权限。
我不准备更改日志权限,因为它们应该保留为root-only,所以我认为首选的解决方案是通过sudoers.
另外:我想授予尽可能少的其他权限,理想情况下,用户只能访问邮件日志(和旋转的文件)。
例如:
username ALL= NOPASSWD: /bin/grep
Run Code Online (Sandbox Code Playgroud)
允许该用户基本上grep访问系统上的任何文件,这是我想避免的。
这里最好的解决方案是什么?
仅供参考:它本身不需要grep:用户只需要对邮件日志的读取访问权限,并且可能仅用于grep访问它们。
我需要进入在虚拟机上远程运行的 redhat box 的恢复模式。
我使用的是 RedHat 5 64 位企业版。
我使用 SSH 登录到该框。我可以使用 restart 命令重新启动,但我需要知道我是否能够通过 SSH 连接到它,因为我是远程使用它并且无法通过 UI 登录。
真正的问题是,我chown -R $USER /在根目录上做了一个。
我正在尝试将此作为试验,但没有意识到后果,以使某些事情起作用,即使使用 sudo 也不知何故不起作用。
我中途杀了它。但是,由于这种愚蠢,我不能使用 sudo。
我已经读到我可以在救援模式下做一些事情,但我不明白如何远程进入救援模式。我无法重新安装 linux,这不是一个可能的选择。
无论如何我可以找回我的 sudo 权限吗?
这样做目前不起作用:
chown root:root /usr/bin/sudo
chown: changing ownership of `/usr/bin/sudo': Operation not permitted
sudo chown root:root /usr/bin/sudo
sudo: must be setuid root
Run Code Online (Sandbox Code Playgroud) 我有一个调用 bash 脚本的 php 脚本,如下所示:
<?php
$result = exec('sudo /bin/bash /var/www/my_bash_script.sh /var/www/vhosts/testsite/htdocs/');
var_dump($result);
?>
Run Code Online (Sandbox Code Playgroud)
这是内容my_bash_script.sh:
#!/bin/bash
svn export --force --no-auth-cache --username myusername --password mypassword http://1.2.3.4/repos/path/to/repo/ $1 2>&1
find $1 -print0 -type d | xargs -0 -n 1 -0 chown -R -v root:root 2>&1
find $1'storage' -print0 -type d | xargs -0 -n 1 chown -R -v apache 2>&1
find $1'shared' -print0 -type d | xargs -0 -n 1 chown -R -v apache 2>&1
Run Code Online (Sandbox Code Playgroud)
该脚本的目的是从我的 svn repo 导出并正确设置用户权限。
PHP …