用户,组和权限管理

概述:在Linux中由于可以实现多用户和多任务的管理,所以在Linux中用户和组与文件的权限关系显得格外重要。如果出现混乱,那么在用户使用时会给系统造成很多不稳定性的因素。这也是linux系统相对于其它操作系统更安全的原因之一。

linux系统中用户分为:

 系统用户:
	centos6上的UID(1-499)
	centos7上的UID(1-999)
	注:系统用户无法登陆到系统之中
登录用户
	centos6上的UID(500+)
	centos7上的UID(1000+)待
	(通过交互式方式进行登录)
	注:只有管理员有创建用户的权限,普通用户无法创建用户

配置文件:
	/etc/passwd中存放着用户的账号信息,配置文件中用:号隔开了七个字段,其中的每一
	个
	字段都代表不同的含义
	如:root:x:0:0:root:/root:/bin/bash
		1:root:标识用户名
		2:x:用户密码的占位符
		3:0:用户的UID
		4:0:用户的GID
		5:root:用户的注释信息
		6:/root:用户的家目录所在的位置
		7:/bin/bash:用户所使用的shell
	/etc/shadow中存放着用户的账号密码的信息,配置文件也用:号分割成了好几段,
	每个字段同样有不同的含义
	如:root:$6$WPjpqSwxMbi2LSA//5M2Q0:17900:0:99999:7:::
		1:存放着用户的用户名
		2:存放着用户用来加密的密码,默认是用sum512算法进行加密
		3:最近更动密码的日期,默认是从1970年到现在的天数
		4:密码最短使用时间,代表在这个时间之内,不允许更改用户密码。默认是0,代指随时
		可以更改用户密码
		5:密码需要重新变更的天数,即密码的最长使用时间
		6:密码到期前的警告时间
		7:密码已经过期了之后,用户可以登录的时间,如果这个时候还不改密码,那么过了时
		间之后,该用户就无法登陆系统
		8:记录用户密码的实效时间
	注:用户密码的加密使用的是单向加密的算法,单向机密的特点是无论多长的密码串通过
	加密之后都会生成固定长度的密文,而且即使相同的密码生成的密文也会有细微的差别。
	为了提高机密性,单向加密的密码,即使是简单的改变其中的一个字符,加密之后的密
	文也会千差万别,这个称之为雪崩效应。单向加密的算法分别包括:
		1:md5
		2:sha128
		3:sha224
		4:sha256
		5:sha384
		6:sha512
		

相关命令:
	1,useradd(添加用户)
	2,userdel(删除用户)
	3,usermod(改用户的相关属性)
	4,su(切换用户)
		注:用su切换用户时中间要加上-号,将切换的用户初始化。当管理员切换到普通用户时
		不需要密码,普通用户之间切换时需要用户密码
	5,getent(看用户的/etc/passwd的相关属性)
	6,id(查看用户的用户组)

linux系统中用户组分为:

系统组:
	centos6上的GID(1-499)
	centos7上的GID(1-999)
普通组:
	centos6上的GID(500+)
	centos7上的GID(1000+)

作用:每个用户必须有一个主组,在创建用户时如果不指定,那么系统会默认创建一个和
用户名相同的组,做为这个用户的主组
在创建用户时还可以指定用户的附加组,附加组可以是一个或者多个。

配置文件:
	/etc/group中存放着用户组的相关信息,其中每个用户组也分为若干段,每段代表着不同
	的含义
	如:user9:x:511:user10
		1:组的名称
		2:组密码的占位符
		3:组的GID号
		4:以该组为附加组的用户
	/etc/gshadow中存放着用户的组密码,格式和用户密码的属性差不多
	如:gentoo:$6$bAR22/OrVWl/om$t2JQeQkuOSncUr2uqrLu3IrU***3loryJI9626d8C4ijz.Z.ZkQjZg0::

相关命令:
	1,groupadd(添加用户的用户组)
	2,groupdel(删除用户系统中的用户组)
	3,groupmod(修改组的相关属性)
	4,gpasswd(给组添加密码)
	5,groupmems(更改和查看组成员)

linux中文件的基本权限:

在linux中可以通过ll命令看到文件以及目录的权限信息,其中第一个字段就包含着这个文
件或目录的权限,第二个字段是此文件的属主以及属组
权限的分类:
	r:读权限,对应的二进制是4,标识用户可以读取文件中的内容
	w:写权限,对应的二进制是2,标识用户可以在文件中增添查改内容
	x:执行权限,对应的二进制是1,标识该文件可以执行。如果是目录,则标识该目录可
	以进入其中。
注:这三个权限结合成一组,每三组标识着文件以及目录的基本权限,其中第一组代表着
文件的属主,第二组代表文件的属组,第三组其他人的权限

文件或目录的属主和属组:
	在linux系统中每个文件或目录都会有属主和属组,这是基本权限的一个重要组成部分

目录和文件权限的异同点:
	1,执行权限:
		文件:可执行此文件
		目录:可进入此目录之中,但是如果没有读权限,则看不到目录中的文件
	2,写权限:
		文件:可以在文件中增删查改,如果只有写权限,那么则无法看到文件中的内容
		目录:可以删除该目录中的文件,如果只有写权限,那么需要事先知道目录中有
		什么内容,才可以进行增删查改等进一步操作
	3,读权限
		文件:可以阅读此文件的内容
		目录:可以看到目录中有多少文件
	4,删除目录内的文件
		即使对目录内的文件没有任何权限,只要对目录有写权限,就可以删除目录内的文件

如:-rw-r--r--. 1 root root 986 1月  22 14:59 /etc/fstab
	1;文件的权限是644
	2:文件的属主是root,可以读写此文件
	3:文件的属组是root,可以读此文件
	4:其他人权限,仅可读取此文件

相关命令:
	1,chmod(该文件的权限)
		(1)赋权表示法
		(2)八进制表示法
		(3)引用权限表示法
	2,chown(改文件的属主和属组)
	3,chgrp(该文件的属组,由于上一条命令的存在,这条命令已经赶不上时代的存在)

默认权限:在系统中有普通用户和管理员都有默认的权限掩码(遮照码),在创建文件或目录是会默认与系统中的权限掩码相减

管理员的umask:022
普通用户的umask:002

文件:默认的是666,如果减的权限中有执行,那么会在减的结果中加1
目录:默认的是777

配置文件:
	在/etc/profile中定义的有umask的配置文件
	if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
		umask 002
	else
		umask 022
	fi

Linux文件系统上的特殊权限:

作用:在使用linux中基础权限有时会不满足系统中的使用,要加入一些特殊权限进行补足,即SUID, SGID, Sticky

SUID/SGID:该权限的权限标识位是s,当用户在执行此文件时,将使自己的身份临时切
换成文件的属主或属组。前提当给用户赋予SUID/SGID权限时,该文件的属主和属组必
须要有执行权限,否则权限标识位会显示成S

赋权方法:
	1,chmod u+s file , chmod 4700 file
	2,chmod g+s file , chmod 2700 file

Sticky:该权限的权限标识位是t,具有写权限的目录通常用户可以删除该目录中的任何
文件,在目录中加入Sticky权限,可使对该目录的中的内容删改权限仅有root可使用

赋权方法:
	1,chmod o+t directory , chmod o-t directory

linux中文件的特殊属性即不可改变位权限:

作用:
	目录:
		a:只允许在目录中建立和修改文件,但是不允许删除
		i:只能修改目录下文件的数据,却不能执行删除和新建文件
	文件:
		a:可对文件进行添加,不可删除
		i:不可对文件进行任何操作

赋权方法:
	chatter +i file/directory
	chatter +a file/directory
查看方法:
	lsatter file/directory

ACL权限:

作用:可以对目录或文件进行灵活的权限管理,让除了文件的属主,属组和其它人,可以
对更多的用户设置权限。

ACL权限的生效顺序:所有者,自定义用户,自定义组,其他人 

查看磁盘的ACL权限:
	tune2fs -l /dev/sda1
设置磁盘的ACL权限
	tune2fs -o acl /dev/sda1
	mount -o remount,acl /dev/sda1
注:在centos7中,无论是xfs还是ext4的系统都会默认加入ACL权限,之前的版本需要
手动添加ACL权限

赋权方法:
	1,给单个文件和目录设置:setfacl -m u:admin:rwx file/directory
	2,给目录进行递归设置:setfacl -Rm u:admin:rwx file/directory
	3,给目录设置默认的ACL权限:setfacl -m d:u:rwx file/directory
	4,删除ACL权限的方法 setfacl -x admin file/directory
注:
	1,给文件重新赋予ACL权限的,要用选项--set
	2,ACL中的mask是限制这个文件和目录能设置的最高的ACL权限,在设置的过程中,如果
	出现超过mask的权限,系统会将mask权限和设置的权限相与,得到的最终结果才是这个
	用户对此目录或文件的最终权限
查看方法:getfacl file/dirctory

备份和恢复ACL权限:文件中cp和mv命令都默认支持保留ACL权限,但是tar命令在打包
的同时,并不会保留文件中的ACL权限
	1,getfacl -R /tmp/dir1 > acl.txt(把ACL权限保存到文件中)
	2,setfacl -R -b /tmp/dir1(递归删除目录中的ACL权限)
	3,setfacl -R  --set-file=acl.txt /tmp/dir1 (重新给递归给目录赋予ACL权限) 
	4,setfacl --restore acl.txt(给文件恢复备份的acl权限)