每天进步一点点:(12)su与sudo的学习

 

  账户切换:susudo
 
1.       当普通用户通过su切换到root是,其shell环境还是切换前普通用户的shell
[ila@www /]$ echo $PATH    
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/ila/bin #切换前用户的shell
[ila@www /]$ su
Password:
[root@www /]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/ila/bin #切换后
[root@www /]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin     #这个是直接root登录的shell
不难看出切换后root并没有得到真正的root的shell环境,最重要的/sbin和/root/bin没有得到。因此切换后有许多系统关键命令无法执行就不难理解了。
2.          如果想要切换后使用的是root的shell环境,那么加 -参数即可(或者- root)。同理,如果root账户想要切换到其他用户的shell环境,使用-参数加上对应账户的名字,不用输入密码。
3.          注意切换后提示符的变化,#是root拥有的提示符,$是普通用户拥有的提示符。
4.          如果只是想利用root的权限执行一个命令,切换成root后再执行比较麻烦,可以使用su - -c “cmdxxx”即可。
5.          关于sudo
因为使用su命令时总是要输入root密码,这样不安全。sudo命令不用输入root密码,但为了安全起见,需要输入自己的密码,这样就可以使用root的身份或其他身份去执行自己不能执行的命令。也就是说,这个命令不一定非要是root才可以执行的。例如,如果我们普通用户可以sudo vi这个命令,那么普通用户就可以编辑任何文件,因为它是以root的身份去执行vi的。
命令为sudo –u xxx cmdxxx。
6.          能否执行sudo命令取决于/etc/sudoers这个文件的配置。默认系统只允许root可以使用。添加用户方式很简单。安全起见,编辑这个文件使用visudo命令。文件主要格式如下:
1.       test ALL=(ALL) ALL
这是完全不做限制,默认情况下root就是这种设置。如果有多个用户的话可以通过对群组进行设置,然后用户加入群组就可以相应的拥有sudo权限。
2.       %TEST ALL=(root) ALL 也就是只要加入TEST群组就可以sudo到root,执行所有root的命令。当然这种设置是很危险的,还可以修改root的密码。
3.       一般情况下只会给出一个或者几个命令,不会使用ALL的方式,给出的命令必须使用绝对路径。另外需要注意的是,给出的命令可以是很精确的,也就是附上可以使用的选项,例如
testuser localhost=/sbin/shutdown –h now #那么用户只能使用这个命令,别的参数都不行
testuser localhost=/bin/vi /etc/sysconfig/network #那么sudu的使用只能用vi编辑network这个文件

本文出自 “海阔天空” 博客,谢绝转载!

你可能感兴趣的:(职场,sudo,休闲,su)