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分钟之内搞破坏。

 

posted @ 2019-02-15 10:55  在路上的LQ  阅读(1066)  评论(0编辑  收藏  举报