在Linux
中,root
权限是最高
,也被称为超级权限
拥有者。普通用户无法执行
,root用户都能完成,所以也被称之为超级管理用户。
在
中,每个
、目录和进程,都归属于某一个用户,没有用户许可其它普通用户是无法
,但对root除外。root用户
特权性还表现在root可以超越任何用户和用户组来对
或目录进行读取、修改或删除(在
正常
许可范围内);对可执行程序
执行、终止;对硬件设备
添加、创建和移除等;也可以对
和目录进行属主和权限进行修改,以适合
管理
需要(因为root是
中权限最高
特权用户);
一、对超级用户和普通用户
理解
1、什么是超级用户;
在所有Linux
中,
都是通过UID来区分用户权限级别
,而UID为0
用户被
约定为是具有超级权限。超级用户具有在
约定
最高权限满园内
,所以说超级用户可以完成
管理
所有工具;我们可以通过/etc/passwd 来查得UID为0
用户是root,而且只有root对应
UID为0,从这一点来看,root用户在
中是无可替代
至高地位和无限制权限。root用户在
中就是超级用户;
2、理解 UID 和用户
对应关系
当
默认安装时,
用户和UID 是一对一
对关系,也就是说一个UID 对应一个用户。我们知道用户身份是通过UID 来确认
,我们在 《用户(user)和用户组(group)配置
详解》中
UID
解说中有谈到“UID 是确认用户权限
标识,用户登录
所处
角色是通过UID 来实现
,而非用户名;把几个用户共用一个UID 是危险
,比如我们把普通用户
UID 改为0,和root共用一个UID ,这事实上就造成了
管理权限
混乱。如果我们想用root权限,可以通过su或sudo来实现;切不可随意让一个用户和root分享同一个UID ;”
在
中,能不能让UID 和用户是一对多
关系?是可以
,比如我们可以把一个UID为0这个值分配给几个用户共同使用,这就是UID 和用户
一对多
关系。但这样做
确有点危险;相同UID
用户具有相同
身份和权限。比如我们在
中把beinan这个普通用户
UID改为0后,事实上这个普通用户就具有了超级权限,他
能力和权限和root用户一样;用户beinan所有
都将被标识为root
,因为beinan
UID为0,而UID为0
用户是root ,是不是有点扰口?也可以理解为UID为0
用户就是root ,root用户
UID就是0;
UID和用户
一对一
对应关系 ,只是要求管理员进行
管理时,所要坚守
准则,因为
安全还是第一位
。所以我们还是把超级权限保留给root这唯一
用户是最好
选择;
如果我们不把UID
0值
分享给其它用户使用,只有root用户是唯一拥有UID=0
话,root用户就是唯一
超级权限用户;
3、普通用户和伪装用户
与超级用户相对
就是普通用户和虚拟(也被称为伪装用户),普通和伪装用户都是受限用户;但为了完成特定
任务,普通用户和伪装用户也是必须
;Linux是一个多用户、多任务
,多用户主要体现在用户
角色
多样性,不同
用户所分配
权限也不同;这也是Linux
比Windows
更为安全
本质所在,即使是现在最新版本
Windows 2003 ,也无法抹去其单用户
烙印;
二. 超级用户(权限)在
管理中
作用
超级权限用户(UID为0
用户)到底在
管理中起什么作用呢?主要表现在以下两点;
1、对任何
、目录或进程进行
;
但值得注意
是这种
是在
最高许可范围内
;有些
就是具有超级权限
root也无法完成;
比如/proc 目录,/proc 是用来反应
运行
实时状态信息
,因此即便是root也无能为力;它
权限如下
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /
[root@localhost /]# ls -ld /proc/
dr-xr-xr-x 134 root root 0 2005-10-27 /proc/
就是这个目录,只能是读和执行权限,但绝对没有写权限
;就是我们把/proc 目录
写权限打开给root,root用户也是不能进行写
;
[root@localhost ~]# chmod 755 /proc
[root@localhost /]# ls -ld /proc/
drwxr-xr-x 134 root root 0 2005-10-27 /proc/
[root@localhost /]# cd /proc/
[root@localhost proc]# mkdir testdir
mkdir: 无法创建目录‘testdir’: 没有那个
或目录
2、对于涉及
全局
管理;
硬件管理、
理解、用户管理以及涉及到
全局配置等等......如果您执行某个命令或工具时,提示您无权限,大多是需要超级权限来完成;
比如用adduser来添加用户,这个只能用通过超级权限
用户来完成;
3、超级权限
不可替代性;
由于超级权限在
管理中
不可缺少
重要作用,为了完成
管理任务,我们必须用到超级权限;在一般情况下,为了
安全,对于一般常规级别
应用,不需要root用户来
完成,root用户只是被用来管理和维护
之用;比如
日志
查看、清理,用户
添加和删除......
在不涉及
管理
工作
环境下,普通用户足可以完成,比如编写一个
,听听音乐;用gimp 处理一个图片等...... 基于普通应用程序
调用,大多普通用户就可以完成;
当我们以普通权限
用户登录
时,有些
配置及
管理必须通过超级权限用户完成,比如对
日志
管理,添加和删除用户。而如何才能不直接以root登录,却能从普通用户切换到root用户下才能进行
管理需要
工作,这就涉及到超级权限管理
问题;
获取超级权限
过程,就是切换普通用户身份到超级用户身份
过程;这个过程主要是通过su和sudo 来解决;
三、使用 su 命令临时切换用户身份;
1、su
适用条件和威力
su命令就是切换用户
工具,怎么理解呢?比如我们以普通用户beinan登录
,但要添加用户任务,执行useradd ,beinan用户没有这个权限,而这个权限恰恰由root所拥有。解决办法无法有两个,一是退出beinan用户,重新以root用户登录,但这种办法并不是最好
;二是我们没有必要退出beinan用户,可以用su来切换到root下进行添加用户
工作,等任务完成后再退出root。我们可以看到当然通过su 切换是一种比较好
办法;
通过su可以在用户之间切换,如果超级权限用户root向普通或虚拟用户切换不需要密码,什么是权力?这就是!而普通用户切换到其它任何用户都需要密码验证;
2、su
用法:
su [OPTION选项参数] [用户]
-, -l, --login 登录并改变到所切换
用户环境;
-c, --commmand=COMMAND 执行一个命令,然后退出所切换到
用户环境;
至于更详细
,请参看man su ;
3、su
范例:
su 在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就是说这时虽然是切换为root用户了,但并没有改变root登录环境;用户默认
登录环境,可以在/etc/passwd 中查得到,包括家目录,SHELL定义等;
[beinan@localhost ~]$ su
Password:
[root@localhost beinan]# pwd
/home/beinan
su 加参数 - ,表示默认切换到root用户,并且改变到root用户
环境;
[beinan@localhost ~]$ pwd
/home/beinan
[beinan@localhost ~]$ su -
Password:
[root@localhost ~]# pwd
/root
su 参数 - 用户名
[beinan@localhost ~]$ su - root 注:这个和su - 是一样
功能;
Password:
[root@localhost ~]# pwd
/root
[beinan@localhost ~]$ su - linuxsir 注:这是切换到 linuxsir用户
Password: 注:在这里输入密码;
[linuxsir@localhost ~]$ pwd 注:查看用户当前所处
位置;
/home/linuxsir
[linuxsir@localhost ~]$ id 注:查看用户
UID和GID信息,主要是看是否切换过来了;
uid=505(linuxsir) gid=502(linuxsir) groups=0(root),500(beinan),502(linuxsir)
[linuxsir@localhost ~]$
[beinan@localhost ~]$ su - -c ls 注:这是su
参数组合,表示切换到root用户,并且改变到root环境,然后列出root家目录
,然后退出root用户;
Password: 注:在这里输入root
密码;
anaconda-ks.cfg Desktop install.log install.log.syslog testgroup testgroupbeinan testgrouproot
[beinan@localhost ~]$ pwd 注:查看当前用户所处
位置;
/home/beinan
[beinan@localhost ~]$ id 注:查看当前用户信息;
uid=500(beinan) gid=500(beinan) groups=500(beinan)
4、su
优缺点;
su
确为管理带来方便,通过切换到root下,能完成所有