我想检查普通用户是否具有超级用户权限(即 root 权限)。我的操作系统是 RHEL 6,我检查了/etc/passwd
配置文件,但没有用。请告诉我在 Linux 机器中查找用户当前权限的任何方法。
答案1
过去,Unix 世界中的 root 模型很简单。uid 0,您就是 root,拥有所有权限。不过,情况已经发生了一些变化。
自杀位
可以授予文件自杀位因此即使普通用户也可以以 root 身份运行它们。好吧,这可能在原始 Unix 中存在。:-)
群组
如果用户属于组 0,他可能没有完全的 root 权限,但仍可以看到许多不该看到的内容。另外,在某些发行版中,wheel
需要注意的是,su
如果属于该组的用户知道 root 密码,他们就可以成为 root。
须藤
除了传统的 之外su
,该sudo
命令还允许限制某些用户/组只能以 root 身份执行某些命令。使用 来查看visudo
。
ssh 访问
使用 ssh 可以生成一个 ssh 密钥,您可以使用该密钥以 root 身份连接,但只能使用命令 x、y 和 z。这通常用于备份等任务,其中备份过程必须能够访问系统中的每个文件。
能力
Linux 内核已获得能力它可以授予对某些子系统(如网络接口或块设备)的访问权限。请参阅此列表。
SELinux 角色
如果安全框架SELinux在您的系统中启用,SELinux 也具有基于角色的访问权限。请参阅Fedora 的 SELinux 指南。
答案2
超级用户权限由 UID (用户 ID) 0 赋予。从 /etc/password 文件中 grep 用户。用户后面的第一个数字字段是 UID,第二个是 GID (组 ID)。如果用户不是 UID 0,则他们没有 root 权限。这不包括他们可能通过加入适当的组(wheel、nobody 等)而拥有的额外权限,但这些权限不是超级用户。如果您仍然不确定此用户可以做什么和不能做什么,只需 su 到该用户(su - 用户名)并查看您可以做什么。您可以触摸不属于您的目录中的文件吗?如果不能,您就不是超级用户。希望这对您有所帮助。
例如:nobody:x:99:45:Nobody:/:/sbin/nologin
Nobody 是用户名,99 是 uid,45 是 gid。
答案3
用户可以通过名为 的程序授予权利,从而获得间接的“超级用户”权限sudo
。
您sudo
可以指定哪个用户或哪个组可以以超级用户权限执行某些程序。
答案4
用户通常没有超级用户权限。但是我想到有三种方法可以让普通用户(即 UID != 0)获得 root 权限。
- 他以 root 身份使用 s 位执行了一些操作。您可以通过在整个文件系统中搜索此类文件来找到它(使用 find)。
- 他改变了用户 ID(su 命令)——但每个用户都可以这样做,只要他知道 root 密码(因此不要给出你的 root 密码来禁止它)。
- sudo. 只需检查 /etc/sudoers 哪些用户被允许以 root 权限执行什么操作。