linux 权限控制(centos用户权限设置)
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实在是做得相当不错!
详解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下设置访问控制列表(ACL)来控制用户的权限
Linux下的访问控制列表(ACL)主要用来控制用户的权限,可以做到不同用户对同一文件有不同的权限,那么具体要如何操作呢?下面小编就教你如何在Linux下设置访问控制列表(ACL)来控制用户的权限。
使用拥有权限控制的Liunx,工作是一件轻松的任务。它可以定义任何user,group和other的权限。无论是在桌面电脑或者不会有很多用户的虚拟Linux实例,或者当用户不愿意分享他们之间的文件时,这样的工作是很棒的。然而,如果你是在一个大型组织,你运行了NFS或者Samba服务给不同的用户,然后你将会需要灵活的挑选并设置很多复杂的配置和权限去满足你的组织不同的需求。
Linux(和其他Unix等POSIX兼容的操作系统)有一种被称为访问控制列表(ACL)的权限控制方法,它是一种权限分配之外的普遍范式。例如,默认情况下你需要确认3个权限组:owner、group和other。而使用ACL,你可以增加权限给其他用户或组别,而不单只是简单的“other”或者是拥有者不存在的组别。可以允许指定的用户A、B、C拥有写权限而不再是让他们整个组拥有写权限。
ACL支持多种Linux文件系统,包括ext2, ext3, ext4, XFS, Btfrs,等。如果你不确定你的文件系统是否支持ACL,请参考文档。
在文件系统使ACL生效
首先,我们需要安装工具来管理ACL。
Ubuntu/Debian中:
$ sudo apt-get install acl
CentOS/Fedora/RHEL中:
# yum-y install acl
Archlinux中:
# pacman-S acl
出于演示目的,我将使用ubuntu server版本,其他版本类似。
安装ACL完成后,需要激活我们磁盘分区的ACL功能,这样我们才能使用它。
首先,我们检查ACL功能是否已经开启。
$ mount
你可以注意到,我的root分区中ACL属性已经开启。万一你没有开启,你需要编辑/etc/fstab文件,在你需要开启ACL的分区的选项前增加acl标记。
现在我们需要重新挂载分区(我喜欢完全重启,因为我不想丢失数据),如果你对其它分区开启ACL,你必须也重新挂载它。
$ sudo mount/-o remount
干的不错!现在我们已经在我们的系统中开启ACL,让我们开始和它一起工作。
ACL范例
基础ACL通过两条命令管理:setfacl用于增加或者修改ACL,getfacl用于显示分配完的ACL。让我们来做一些测试。
我创建一个目录/shared给一个假设的用户,名叫freeuser
$ ls-lh/
我想要分享这个目录给其他两个用户test和test2,一个拥有完整权限,另一个只有读权限。
首先,为用户test设置ACL:
$ sudo setfacl-m u:test:rwx/shared
现在用户test可以随意创建文件夹,文件和访问在/shared目录下的任何地方。
现在我们增加只读权限给用户test2:
$ sudo setfacl-m u:test2:rx/shared
注意test2读取目录需要执行(x)权限
让我来解释下setfacl命令格式:
-m表示修改ACL。你可以增加新的,或修改存在的ACLu:表示用户。你可以使用 g来设置组权限test用户名:rwx需要设置的权限。
现在让我向你展示如何读取ACL:
$ ls-lh/shared
你可以注意到,正常权限后多一个+标记。这表示ACL已经设置成功。要具体看一下ACL,我们需要运行:
$ sudo getfacl/shared
最后,如果你需要移除ACL:
$ sudo setfacl-x u:test/shared
如果你想要立即擦除所有ACL条目:
$ sudo setfacl-b/shared
最后,在设置了ACL文件或目录工作时,cp和mv命令会改变这些设置。在cp的情况下,需要添加“p”参数来复制ACL设置。如果这不可行,它将会展示一个警告。mv默认移动ACL设置,如果这也不可行,它也会向您展示一个警告。
总结
使用ACL让在你想要分享的文件上拥有更多的能力和控制,特别是在NFS/Samba服务。此外,如果你的主管共享主机,这个工具是必备的。
上面就是Linux下设置访问控制列表来控制用户权限的方法介绍了,因为ACL的配置和使用较为复杂,初学者在使用的时候容易出现错误,希望本文介绍的方法能够帮助到你。