linux 超级权限 超级权限root
大家好,感谢邀请,今天来为大家分享一下linux 超级权限的问题,以及和超级权限root的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
详解Linux系统中的root权限控制
在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处理一个图片等……基于普通应用程序的调用,大多普通用户就可以完成;
linux中的超级用户
1、超级用户概念与重要性
在所有Linux系统中,系统都是通过UID来区分用户权限级别的,而UID为0的用户被系统约定为是具有超级权限。超级用户具有在系统约定的最高权限范围内操作,所以说超级用户可以完成系统管理的所有工作。我们可以通过/etc/passwd来查得UID为0的用户是root,而且只有root对应的UID为0,从这一点来看,root用户在系统中是无可替代的至高地位和无限制权限。root用户在系统中就是超级用户。
在系统中,每个文件、目录和进程,都归属于某一个用户,没有用户许可其它普通用户是无法操作的,但对root除外。root用户的特权性还表现在root可以超越任何用户和用户组来对文件或目录进行读取、修改或删除(在系统正常的许可范围内);对可执行程序的执行、终止;对硬件设备的添加、创建和移除等;也可以对文件和目录进行属主和权限进行修改,以适合系统管理的需要(因为root是系统中权限最高的特权用户)。
与超级用户相对的就是普通用户和虚拟(也被称为伪装用户),普通和伪装用户都是受限用户,但为了完成特定的任务,普通用户和伪装用户也是必须的。Linux是一个多用户、多任务的操作系统,多用户主要体现在用户的角色的多样性,不同的用户所分配的权限也不同,这也是Linux系统比Windows系统更为安全的本质所在。
由于超级权限在系统管理中的不可缺少的重要作用,为了完成系统管理任务,我们必须用到超级权限;在一般情况下,为了系统安全,对于一般常规级别的应用,不需要root用户来操作完成,root用户只是被用来管理和维护系统之用;比如系统日志的查看、清理,用户的添加和删除。
在不涉及系统管理的工作的环境下,普通用户足可以完成,比如编写一个文件,听听音乐;用gimp处理一个图片等......基于普通应用程序的调用,大多普通用户就可以完成。
当我们以普通权限的用户登录系统时,有些系统配置及系统管理必须通过超级权限用户完成,比如对系统日志的管理,添加和删除用户。而如何才能不直接以root登录,却能从普通用户切换到root用户下才能进行操作系统管理需要的工作,这就涉及到超级权限管理的问题。
获取超级权限的过程,就是切换普通用户身份到超级用户身份的过程;这个过程主要是通过su和sudo来解决。
2、超级用户在系统管理中的作用
(1)对任何文件、目录或进程进行操作
但这种操作是在系统最高许可范围内的操作,有些操作就是具有超级权限的root也无法完成。比如/proc目录,/proc是用来反应系统运行的实时状态信息的,因此即便是root也无法对其进行写操作。
(2)对于涉及系统全局的系统管理
硬件管理、文件系统管理、用户管理以及涉及到的系统全局配置等等......如果执行某个命令或工具时,提示无权限,大多是需要超级权限来完成,比如用adduser来添加用户,这个只能用通过超级权限的用户来完成。
3、超级用户的授权
(1)su命令
su命令就是切换用户的工具。比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd,beinan用户没有这个权限,而这个权限恰恰由root所拥有。解决办法无法有两个,一是退出beinan用户,重新以root用户登录,但这种办法并不是最好的;二是我们没有必要退出beinan用户,可以用su来切换到root下进行添加用户的工作,等任务完成后再退出root。我们可以看到当然通过su切换是一种比较好的办法。通过su可以在用户之间切换,如果超级权限用户root向普通或虚拟用户切换不需要密码;而普通用户切换到其它任何用户都需要密码验证。
su在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就是说这时虽然是切换为root用户了,但并没有改变root登录环境;用户默认的登录环境,可以在/etc/passwd中查得到,包括家目录,SHELL定义等。
(2)sudo命令
su的确为管理带来方便,通过切换到root下,能完成所有系统管理工具,只要把root的密码交给任何一个普通用户,他都能切换到root来完成所有的系统管理工作,但通过su切换到root后,也有不安全因素;比如系统有10个用户,而且都参与管理。如果这10个用户都涉及到超级权限的运用,做为管理员如果想让其它用户通过su来切换到超级权限的root,必须把root权限密码都告诉这10个用户;如果这10个用户都有root权限,通过root权限可以做任何事,这在一定程度上就对系统的安全造成了威协,我们绝对不能保证这10个用户都能按正常操作流程来管理系统,其中任何一人对系统操作的重大失误,都可能导致系统崩溃或数据损失,所以su工具在多人参与的系统管理中,并不是最好的选择,su只适用于一两个人参与管理的系统,毕竟su并不能让普通用户受限的使用,这时最好是针对每个管理员的技术特长和管理范围,并且有针对性的下放给权限,并且约定其使用哪些工具来完成与其相关的工作,这时我们就有必要用到 sudo。
通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo相对于权限无限制性的su来说,还是比较安全的,所以sudo也能被称为受限制的su,另外sudo是需要授权许可的,所以也被称为授权许可的su。
sudo执行命令的流程是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。
(3)编写/etc/sudoers文件
sudo的配置文件是/etc/sudoers,我们可以用他的专用编辑工具visodu,此工具的好处是在添加规则不太准确时,保存退出时会提示给我们错误信息。配置好后,可以用切换到授权的用户下,通过sudo-l来查看哪些命令是可以执行或禁止的。
/etc/sudoers文件中每行算一个规则,前面带有#号可以当作是说明的内容,并不执行;如果规则很长,一行列不下时,可以用\号来续行,这样看来一个规则也可以拥有多个行。
/etc/sudoers的规则可分为两类;一类是别名定义,另一类是授权规则;别名定义并不是必须的,但授权规则是必须的。
具体使用可以查看man sudoers。
Linux系统中的超级权限控制怎么弄
linux设置用户权限:解读Linux文件权限的设置方法
Windows系统其实和Linux系统有相似地方。Windows系统文件、目录属性有只读、隐藏而Linux也一样。
Linux中每一个文件都具有特定属性,主要包括文件类型和文件权限两个方面。可以分为5种不同类型:普通文件、目录文件、链接文件、设备文件和管道文件。
所谓文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。Linux是一个多用户操作系统,它允许多个用户同时登录和工作。因此 Linux将一个文件或目录与一个用户或组联系起来。访问控制列表(ACL:Access Control List)为计算机提供更好访问控制。它的作用是限制包括root用户在内所有用户对文件、资源或者套接字的访问。下面就来教大家简单设置方法。
步骤1,检查系统核心
首先检查你Linux系统核心是否有支持ACL功能。Linux系统并不是每个版本核心都有支持ACL的功能,而最简单方法就是检查系统目前核心能否支持:
[root@mail/]# cat/boot/config-kernel-version| grep-i ext3
CONFIG_EXT3_FS=m
CONFIG_EXT3_IDEX=y
CONFIG_EXT3_FS_XATTR_SHARING=y
CONFIG_EXT3_FS_XATTR_USER=y
CONFIG_EXT3_FS_XATTR_TRUSTED=y
CONFIG_EXT3_FS_ACL=y
此时如果能看到上面几项,则表示已经编译到核心中,ext3文件系统已支持ACL功能。这些功能在编译核心选项中都可以找到。如果编译时找不到可以到ACL官方网站来安装Kernel(acl.bestbits.at/)
步骤2挂载分区
你可以用下列方式挂载分区并启用ACL:
#mount-t ext3-o acl/dev/sda1/fs1
你也可以直接写在/etc/fstab文件中,这样就可以在开机后支持ACL功能:
#vi/etc/fstab
步骤3设置ACL权限
ACL常常针对个别用户来进行设置下面是多个不同例子:
例如需要创建test1、test2、test3三个用户。可以先用root身份登录系统,然后执行以下命令分别创建三个用户名和密码:
[root@mail root]#adduser test1
[root@mail root]#adduser test2
[root@mail root]#adduser test3
[root@mail root]#passwd test1
[root@mail root]#passwd test2
[root@mail root]#passwd test3
然后mount个ext3文件到目录/fs1:
[root@mail root]#mount-t ext3-o acl/dev/sda1/fs1
再将test1建立文件设置读写权限给test2:
[root@mail root]#chmod-R 777/fs1
让所有用户都能增加文件到目录权限:
先用test1登录系统执行命令:
[test1@mail test1]# cd/fs1
[test1@mail fs1]# echo"Create by test1"> test1.txt
[test1@mail fs1]# chmod go-r test1.txt
[test1@mail fs1]# ll test1.txt
-rw------- 1 test1 test1 17 Jul 14 22:11 test1.txt
而如下操作则可以让除了test1有读写权限外其他人没有读写test1.txt权限(root除外)先用test2登录系统后执行以下命令:
[test2@mail test2]# cd/fs1
[test2@mail fs1]# cat test1.txt
cat: test1.txt Permission denied
接着用test1登录系统执行如下命令:
[test1@mail fs1]# facl-m u:test2:rw test1.txt
这样就修改权限允许test2有这个文件读写权限再看下它文件属性变化:
[test1@mail fs1]# ll
-rw-rw-r--+ 1 test1 test1 10 Feb 16 13:52 test1.txt
会看到后面多了个“+”表示这个文件使用ACL属性设置再用命令getfacl来看ACL文件属性设置:
[test1@mail fs1]# getfacl test1.txt
# file: test1.txt
# owner: test1
# group: test1
user::rw-
user:test2:rw-
group::rw-
mask::rw-
other::r--
可以看到 test2有权限读写这个文件
我们再用test2登录系统执行以下命令看看发生了什么?
[test2@mail test2]# cd/fs1
[test2@mail fs1]# cat test1.txt
Create by test1
原来test2可以读取test1.txt文件了
[test2@mail fs1]# echo"Mody by test2">> test1.txt
[test2@mail fs1]# cat test1.txt
Create by test1
Mody by test2
现在test2也可以修改test1.txt文件了
接着用test3登录系统:
[test3@mail test3]# cd/fs1
[test3@mail fs1]# cat test1.txt
cat: test1.txt Permission denied嘿嘿除了test1、test2外没有其他用户有读写test1.txt权限(root除外)
看着虽然有点晕其实命令就是这么两条主要是把各种情况给大家讲清楚这样大家在使用Linux中才会发现比起脆弱Windows权限防护Linux实在是做得相当不错!