su [ -lm ] [ -c 指令 ] [ username ]
- : 使用 - 如 su - 代表使用login-shell 的变量档案得去方式来登入系统
如使用者身份没有加上去,则代表切换为root身份
-l : 与 - 类似,但后面需要跟欲切换的使用者账号.
-m : 与-p是一样的,表示使用目前的环境设定,而不读取下哦那个使用者的配置文件
-c : 劲执行一条指令,后面接指令即可
不彻底切换到root ====>su
svn | grep user
此时虽然UID具有了root的身份,但还有一堆变量是非root的身份,还有很多数据是无法直接利用,是不彻底的而切换
彻底切换到root su -
evn | grep root
finger sshd
====================================
sudo
系统默认只有root可以执行sudo
sudo的执行权限可以在/etc/sudoers中配置
sudo [ -b ] [ -u 新实用者的账号 ]
-b : 将后面的指令放到背景中让那系统自动执行;
-u : 后面接欲切换的使用者的身份,若果没有这个选项则代表切换到root
sudo可以让你切换身份来执行某项任务.要注意的是,我们无法使用su -sshd 去切换系统账号,因为系统账号的shell是nologin ,这个时候就得用sudo了
sudo的执行流程
(1) 当用户执行sudo 时,系统会在/etc/sudoers中搜寻该使用这是否有执行sudo的权限
(2) 如果使用者有sudo执行权限,则让使用者输入自己密码确认
(3) 确认成功后开始执行sudo的后续指令(root执行sudo是不需要密码)
要想让一般使用者也可执行sudo可以用visudo增加一行:
#使用者账号 登入的来源主机=(可切换的身份) 可执行的指令
# Allow root to run any commands anywhere
user_name ALL=(ALL) ALL
上面四个字段的意义
1 使用者账号指定了哪个账号可以使用sudo
2 这个账号可以从哪部主机远程登录到本机来执行sudo
3这个账号可以切换成什么身份来执行sudo
4这个账号使用sudo切换身份后可以执行那些指令
除了可以设置s让某个用户具有udo的可执行权限,还可以设置让某个群组具有sudo的可执行权限
sudo的功能很强大,一定要限制具有sudo执行权限的普通使用者客气饿换的身份和切换身份后可执行的指令.