[ linux ] su su - 和 sudo 的区别

#前言
##名词解释
###shell

  shell是用户与作业系统之间的交互层,用户修改其环境,设置或 取消shell的环境变量,迎合用户的需要和爱好。 shell本身就是一个电脑程序,用C语言编写,为协助用户与作业系统之间通讯而设计,管理用户与核心(Dernel)之间对话,并 把作业系统指令换成机器代码,其实PC用户常用的DOS,本身就是一个shell。

#,$

  $表示普通用户#表示超级用户,也就是root用户 ### service 可能经常会用到service XXX restart来启动某个程序,而其实service的绝对路径为/sbin/service ,打开这个文件cat /sbin/service,我们会发现其实它就是一个很普通的shell脚本:

#su

是switch user的缩写
1.切换用户
当在linux中有多个用户的时候,可以用 su username 命令来切换用户
2.切换root
su root 命令只切换root身份,但Shell环境仍然是普通用户的Shell,工作目录仍然是普通用户的工作目录,而且不可以使用service命令
3root切换为其他用户的时候不用输入密码,但是其他用户切换为root用户时需要输入密码
#su -

su - root 命令后
su -连用户和Shell环境一起切换成root身份了,工作目录变成root的工作目录,可以使用service命令

su和su - ![这里写图片描述](https://img-blog.csdn.net/20171217161949213?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWmhhbmdfMDUwNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

#sudo

因为su和su -切换为root用户时都需要输入root密码,但是如果用的人比较多的时候,这个root密码就不安全了,所以sudo可以避免这种情况,sudo只需要自己的密码
[ linux ] su su - 和 sudo 的区别_第1张图片

切换到root身份通过vi编辑器来修改sudoers文件,输入vi /etc/sudoers 命令,第一列root不用多说,是用户账号,第二列的ALL意思是登陆者的来源主机名,第三列等号右边小括号里的ALL是代表能够切换的身份,第四列ALL是可运行的命令。

1).将用户提升到管理员权限
  假设我要我当前这个用户能运行root的全部操作,那么我仅仅要加一行Jamie ALL=(ALL) ALL。那么假设有非常多人须要运行sudo。那不是要写编写非常多行啊,这样不是非常麻烦,这样就要用到用户组了。
2).利用用户组处理visudo:
  看看第二个红色方框那行代码。%wheel代表wheel用户组。假设我们将须要运行root全部操作的用户都加入到wheel用户组,或者我们自己定义的用户组。然后加入一行代码。那么就不用一个用户一个用户的加入进来了
3).限制用户sudo的权限:
  我们可能不需要用户有那么多的权限。所以只让他们管理某一块的东西就可以了,比如让某些人只帮root用户来管理passwd,那就只给他管理passwd的权利,
假设我让我当前用户来管理password。也就是jamie这个用户能使用passwd这个命令来帮root改动用户password。仅仅要加这行jamie ALL=(root) /usr/bin/passwd,那么jamie这个用户就能够使用passwd这个命令了。
#后记
其他的功能还在研究中,感觉linux中的神奇之处还有很多,等待我去发掘的功能也还有很多!

你可能感兴趣的:(运维)