Linux用户与组及权限管理

一、用户和组基本概念

1、用户分类

	管理员:UID(用户标识)为0,采用16bits二进制数字:0-65535
	普通用户:UID为1-65535
		系统用户:1-499(Centos6),1-999(Centos7)
		登录用户:500-60000(Centos6),1000-60000(Centos7)
	名称转换:
		username<-->UID
		解析库:/etc/passwd

2、组分类

2.1.组类1:

	管理员组:GID(组标识符)为0,也采用16bits二进制数字:0-65535也
	普通用户组:GID为1-65535
				系统用户组:1-499(Centos6),1-999(Centos7)
				登录用户组:500-60000(Centos6),1000-60000(Centos7)
	名称转换:
		groupname<-->GID
		解析库:/etc/group

2.2.组类2:

	用户的基本组
	用户的附加组

2.3.组类3:

	私有组:组名同用户名,且包含一个用户;
	公有组:组内包含多个用户;

3、密码认证

3.1.通过比对事先存储的与登录提供信息是否一致

	passwd:
	/etc/shadow        //用户密码库
	/etc/gshadow       //组密码库

3.2.密码使用策略

	1)使用随机密码;
	2)不低于8位;
	3)大小写、数字、标点符号中至少三种;
	4)定期更换;

3.3.加密算法

	1)对称加密:加密和解密使用同一密码;
	2)非对称加密:加密和解密使用的一对儿密码;
		密码对儿:
			公钥:public key
			私钥:private key
	3)单向加密:只能加密,不能解密,提取数据的特征码
		特点:
			输入一样,输出必然相同;
			雪崩效应,输入的微小改变,将会引起结果的巨大变化;
			定长输出,无论原始数据多大,结果大小都是相同的;
			不可逆,无法根据特征码还原原来的数据;
	算法:采用下面六种:
        md5:message digest,128bits
		Sha1:secure hash algorithm,160bits
		Sha224
		Sha256
		Sha384
		Sha512

上面排序是1-6,可以在/etc/shadow查看采用哪种加密,如下图 6 6 就是用的sha512,及下面采用md5和sha加密示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:避免当两个用户密码设置一样时,在/etc/shadow 看到的加密信息一样,一般会采用随机数避免(称为加salt)

	4)/etc/passwd:用户的信息库
		name:password:UID:GID:GECOS:directory:shell
		name:用户名
		Password:可以是加密的密码,也可以是占位符x;
		UID:用户标识号
		GID	:用户所属的主组的ID号
		GECOS:注释信息
		directory:用户家目录
		Shell:用户默认shell,登录时默认shell程序

如:
在这里插入图片描述

	5)/etc/shadow:用户密码
		结构:用户名:加密密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段

列如:
在这里插入图片描述

	6)/etc/group:组的信息库
		group_name:password:GID:user_list
		user_list:该组的用户成员;以此组为附加组的用户的用户列表。

二、用户和组命令

访问上下文:
	进程以其发起者的身份运行;
	进程对文件进行访问权限,取决于发起者对此进程用户的权限;
	系统用户:为了能够让那后台进程或服务类进程以非管理员的身份运行,需要为此创建多个普通的用户;

1、group相关命令

1)groupadd:添加组

	格式:groupadd  [option]  group_name;
		-g:指定GID;未指定默认在上个GID+1;
	 	-r:创建系统组;

2)groupmod:修改组的属性

	格式:groupmod  [选项]  group;
		-g:修改GID;
		-n:修改组名;

3)groupdel:删除组

	格式:groupdel [选项] group;

2、user相关命令

2.1. useradd:创建用户

	格式:useradd  [选项] 用户名;
		-u:指定UID;
		-g:指定基本组ID,不过此组得先存在;
		-G+GROUP1[,GROUP2,...[,GROUPN]]:指定用户所属的附加组,多个组之间用逗号隔开;
		-c:指明注释时间;
		-d:指定用户主(家)目录,默认/home/username;通过复制/etc/skel此目录的文件重命名实现,若指定的目录存在,则不会为用户复制环境配置文件;
		-s:指定shell,所有可用的shell列表存储在/etc/shells文件中;
		-r:创建system用户;
	注意:创建用户诸多默认设置在配置文件/etc/login.defs

useradd -D:显示创建用户默认配置,也可以后面添加直接想修改的项,如下:
在这里插入图片描述
修改的结果保存于/etc/default/useradd。

2.2. usermod:修改用户属性

	格式:usermod  [选项] 登录
		-u:修改UID;
		-g:修改用户所属的基本组;
		-G+group1[,group2,...[groupn]]修改用户的附加组,原来的被覆盖;
		-a:与-G一起用,追加新的附件组;
		-c:修改注释信息;
		-d:修改用户家目录,用户原有的文件不会转移到新目录;
		-m:与-d一起用,将原来的家目录移动到新的目录;
		-l: 修改用户名;
		-s:修改用户的默认shell;
		-L:--lock,锁定用户密码,即在用户原来的密码字符串之前添加一个“!”;
		-U:--unlock,解锁用户密码;

2.3. userdel:删除用户

	格式:userdel [选项] 登录
		-r:删除用户一并删除其家目录;

2.4. passwd:修改用户密码

	格式:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]  ;
		passwd :修改用户自己的密码;
		passwd+username:修改指定用户的密码,但仅root用户有这个权限;
			-l,-u:锁定和解锁用户;
			-d:清除用户的密码串;
			-e DATE:过期期限,日期;
			-i DAYS:非活动期限;
			-n DAYS:密码的最短使用期限;
			-x DAYS:密码的最长使用期限;
			-w DAYS:警告期限;
		echo “password” | passwd --stdin username

2.5. gpasswd:修改组密码

	组密码文件:/etc/gshadow
	格式:gpasswd [选项] group
		-a username:向组添加用户;
		-d username:从组中移除用户;

2.6. newgrp:临时切换指定的组为基本组;

	格式:newgrp [-] [group]
		‘-’:会模拟用户重新登录以实现重新初始化其工作环境;

2.7. chage:更改密码过期信息

	格式:chage [选项] 登录名
		-d : last_da
		-E : expried
		-W : warn_da
		-m  :min_day
		-M  :max_day

2.8. id:显示用户真的和有效的UID

	格式:Id [option] ... [user]
		-u :仅显示有效的UID;
		-g:仅显示用户基本组ID;
		-G:仅显示用户所属的所属组的ID;
		-n:显示名字而非ID;

2.9. su:switch user

	登录式切换:会通过读取用户的配置文件重新初始化;
		su - username
		su -l username
	非登录式切换:不会读取目标用户配置文件进行初始化;
		su username

su -c command 用户:仅以指定用户身份运行指定的命令,如:
在这里插入图片描述
其它几个命令:chsh, chfn, finger, whoami, pwck, grpck;

三、权限管理

1、基本概念:

1.1. 使用ll(ls -l)查看目录或文件权限

	rwxrwxrwx:(r,w,x:4,2,1)                                                      
		左三位:定义user(owner)的权限                                 
		中三位:定义group的权限;                                     
		右三位:定义other的权限

在这里插入图片描述

1.2. 进程对文件的访问权限应用模型

	进程的属主与文件的属主是否相同;
	如果相同,则应用属主权限;
	否则,则检查进程的属主是否属于文件的属组;
	如果是,则应用属组权;
	否则,就只能应用other的权限;                                                                                           

1.3. 文件:

	r:可获取文件的数据;                                         
	w: 可修改文件的数据;                                         
	x:可将此文件运行为进程;                                                                                             

1.4. 目录:

	r:可使用ls命令获取其下的所有文件列表;                       
	w: 可修改此目录下的文件列表;即创建或删除文件;               
	x: 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;

2、命令

2.1. chmod:修改权限

	格式:
	 	chmod [OPTION]... MODE[,MODE]... FILE...     
	 	chmod [OPTION]... OCTAL-MODE FILE...         
	 	chmod [OPTION]... --reference=RFILE FILE...  
	三类用户:                 
		u:属主                 
		g:属组                 
		o:其它                 
		a: 所有                                               

1)chmod [OPTION]… MODE[,MODE]… FILE…

    MODE表示法:            
     	赋权表示法:
     	u=                  
     	g=                  
     	o=                  
     	a=                  
                                
     	授权表示法:
     	u+, u-              
     	g+, g-              
     	o+, o-              
     	a+, a-              

2)chmod [OPTION]… OCTAL-MODE FILE…

	八进制表示:chomd 777 FILE                                

3) chmod [OPTION]… --reference=RFILE FILE…

与指定文件具有相同权限,如:
在这里插入图片描述
选项:-R, --recursive:递归修改,针对多级目录
注意:用户仅能修改属主为自己的那些文件的权限;

2.2. chown, chgrp :从属关系管理命令

1)chown命令:

	格式:
		chown [OPTION]... [OWNER][:[GROUP]] FILE...                                                            
	    chown [OPTION]... --reference=RFILE FILE...                                                        
	    	选项:-R:递归修改    

在这里插入图片描述

2)chgrp命令:

    格式:
	    chgrp [OPTION]... GROUP FILE...                                                                    
	   	chgrp [OPTION]... --reference=RFILE FILE...                                                        

注意:仅管理员可修改文件的属主和属组;

3)umask:文件的权限反向掩码,遮罩码

	文件:                                                                                               
		666-umask                                                                                          
	目录:                                                                                               
		777-umask                                                                                          
	注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1; 
		umask: 023                                                                                         
			666-023=644                                                                                      
			777-023=754                                                                                      
	umask命令:                                                                                          
		umask:查看当前umask                                                                               
		umask MASK: 设置umask                                                                              
    注意:此类设定仅对当前shell进程有效;                                                                

3)install命令:

	install - copy files and set attributes(属性)                                                                                                                             
	单源复制:                                                                       
	   	install [OPTION]... [-T] SOURCE DEST                                         
	多源复制:                                                                     
	    install [OPTION]... SOURCE... DIRECTORY                                      
	   	install [OPTION]... -t DIRECTORY SOURCE...                                   
	创建目录:                                                                     
	   	install [OPTION]... -d DIRECTORY...                                          
	常用选项:                                                                     
	   	-m, --mode=MODE:设定目标文件权限,默认为755;                               
	   	-o, --owner=OWNER:设定目标文件属主;                                        
	   	-g, --group=GROUP:设定目标文件属组;                                        

4)mktemp命令:

	mktemp - create a temporary file or directory                                    
    格式:mktemp [OPTION]... [TEMPLATE]                                                    
    	常用选项:-d:创建临时目录                                                             

注意:mktemp会将创建的临时文件名直接返回,因此,可直接通过命令引用保存起来,如:
在这里插入图片描述

扫描二维码关注公众号,回复: 5642382 查看本文章

猜你喜欢

转载自blog.csdn.net/JJGY2015/article/details/88771830