大家都知道 ,Linux 权限 管理 非常重要, 特别是一些 sudo 这样的一些权限。
Ubuntu默认为一次时长15分钟。
su : 切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制。
没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。
其实,还有几个类似的用法:
sudo /bin/bash : 这个命令也会切换到root的bash下,但不能完全拥有root的所有环境变量,比如PATH,可以拥有root用户的权限。这个命令和 sudo -s 是等同的。
sudo -s : 如上
sudo su : 这个命令,也是登录到了root,但是并没有切换root的环境变量,比如PATH。
sudo su - : 这个命令,纯粹的切换到root环境下,可以这样理解,先是切换到了root身份,然后又以root身份执行了 su - ,这个时候跟使用root登录没有什么区别。这个结果貌似跟sudo -i 的效果是一样的,但是也有不同,sudo 只是临时拥有了root的权限,而su则是使用root账号登录了linux系统。
所以,我们再来总结一下:
sudo su - 约等于 sudo -i
sudo -s 完全等于 sudo /bin/bash 约等于 sudo su
sudo 终究被一个"临时权限的帽子"扣住,不能等价于纯粹的登录到系统里。
举个例子看看
可以在root 用户下面 使用 visudo 打开配置文件,加入以下几行,(如果没有这个命令 yum install visudo )
biaoge
ALL=(ALL)
ALL
这里简单解释一下, 这个配置文件有三列 ,
第一列 用户名,
第二列 ALL=(ALL) 代表 ALL代表host ,即 biaoge 这个用户从哪台机器登录的, (ALL) 就是临时拥有的身份,这里ALL 就是 所有的用户 (当然 这里也可以配置成root),
第三列,代表拥有 biaoge 这个用户可以使用的命令,ALL 就代表所有的命令。 这biaoge 这个用户就可以(以root 身份)执行一些命令了。
这样 就可以 以 临时root的身份 去访问root 的家目录了。 当然这样每次都要输入密码。第一次要输入之后 就不用输入密码了。
把配置文件 改一下, 这样就不用输入密码 了,可以直接使用 命令了。
biaoge ALL=(root) NOPASSWD:ALL
但是这样 有时候 也不是特别好, 因为这样 一些普通用户通过一些命令 就可以 切换到 root 用户下面, 比如通过
sudo /bin/bash , sudo -i , sudo -s , sudo su
看下面截图:
这样相对是比较
危险的,所以 要想法限制 这些特殊的命令,这些命令 可以 提升 普通用户的权限
通过 修改 配置文件,也是可以做到的,
biaoge ALL=(root) NOPASSWD:ALL,
!/bin/su ,!/bin/bash
这里限制 su ,和/bin/bash 就可以了。
看看效果 ,此时 普通用户想要切换到root 用户,就不可能了。