su和sudo的基本用法
su(相当于自己身份切换为皇帝)
su 后面的格式一定是
su - 用户名,左右都有空格,否则环境变量切换不过去
su - 用户名 -c 命令 ,仅仅用用户名身份执行某一个命令之后又自动切换回来
-c一般用于开机以某个用户身份启动服务
sudo(皇帝给了你令牌,你还是你自己)
例如非root用户luoqi无法用useradd命令创建用户,当然用suid也可以实现在luoqi用户下创建用户,suid权限太广,相当于每个大臣都给了令牌。
利用sudo命令,可以实现仅仅针对某一个用户执行某一个命令的时候,获取root权限。
在luoqi01下尝试useradd
[luoqi01@localhost ~]$ useradd luoqi
-bash: /usr/sbin/useradd: 权限不够
此时在root用户下visudo,visudo约等于vim /etc/sudoers ,但是visudo自带语法检测功能
添加此行,ALL代表在哪个主机上,(ALL)代表可以切换什么角色,最后是授权的命令
说明:
第一个字段:root为能使用sudo命令的用户;
第二个字段:第一个ALL为允许使用sudo的主机,第二个括号里的ALL为使用sudo后以什么身份(目的用户身份)来执行命令;
第三个字:ALL为以sudo命令允许执行的命令;
上列解释: test ALL=(root) /usr/sbin/useradd
表示允许luoqi01用户从任何主机登录,以root的身份执行/usr/sbin/useradd命令
如果: 那么此用户再次su切换到root不需要密码
以上操作完成之后 visudo -c 检查语法
此时切换到授权sudo用户上 sudo -l 查询一下此用户被授权的命令
在用户上执行被授权命令格式 sudo 命令 前面一定加sudo才可以正确执行被授权的命令
5分钟之内需要此用户密码才能执行sudo ,输入密码5分钟之内不再需要密码。 时间戳路径 /var/sudo/luoqi01
注意!
如果授权sed,那么普通用户可以用sed -i ‘99a luoqi01 ALL=(ALL) NOPASSWD:ALL’ 直接修改/etc/sudoers 内容,很危险!这条命令代表可以不用密码切换到root用户。
下面是sudo的几个参数
-k 的效果是,下次执行sudo命令必须再次输入此用户密码。防止你处理完别人在5分钟之内搞破坏。