内容介绍:
我们要使用操作系统进行工作,就需要人机交互操作,这时候计算机就需要创建用户,通过用户来实现操作,而且随着用户的增加需要给用户分组,这时候就需要对文件进行权限管理。
需要使用的工具:
用户相关工具:useradd; userdel; usermod;id;su等;
组相关工具:groupadd; groupdel; groupmod等;
权限管理工具:chmod; chown; chgrp;umask等;
一、用户类别:
管理员:root,管理员用户标识UID:0
普通用户:(系统用户和登录用户)用户标识UID:1-65535
系统用户:用户标识UID:1-999
登录用户:用户标识UID:1000-60000
二、组类别:
1、组类别1:管理员组;普通用户组(系统组,登录组)
组标识GID与用户标识UID的数据一致,这里多介绍;
2、组类别2:用户的基本组;用户的附加组;
3、组类别3:
私有组:组名同用户名,且只包含一个用户;
公共组:组内包含了多个用户;
三、密码认证信息:通过比对事先存储的与登录时提供的信息是否一致;
密码:password; /etc/shadow存放用户密码信息;/etc/gshadow存放组密码;
(一)密码使用策略:
1、使用随机密码;2、最短长度不低于8位;3、建议使用大写字母、小写字母、数字和标点符号四类中的至少三类;4、定期更换;
(二)加密算法:
1、对称加密:加密和解密使用同一个密码;
2、非对称加密:加密和解密使用的是一对秘钥;(公钥 — public key; 私钥-- private key)
3、单向加密:只能加密,不能解密,提取数据特征码;
4、算法 : md5; sha1; sha224; sha256; sha384; sha512
四、用户信息库及用户密码信息库详解;
(一)、用户信息库:/etc/passwd;
name:password:UID:GID:GECOS:directory:shell
name: 用户名;
password: 可以是加密的密码,也可以是占位符;
UID:用户标识;root为0;系统用户为1-999;普通用户为1000-60000
GID:用户所属的主组的ID号;
GECOS:注释信息;
Directory:用户的家目录;
Shell: 用户的默认shell,登录时默认的shell程序;
(二)、用户密码信息:
第一字段:登录名,必须是有效的账户名,且已经存在于系统中;
第二字段:加密了的密码;
密码分三部分,由$分隔;例如:$6$Z48cQG6P$RMmzMjp63eSz3vA8
$6$:6代表加密算法--sha512(1代表md5;2代表sha1等)
$Z48cQG6P$: Z48cQG6P代表添加的随机数
第三个$后的内容:就是加密后秘串
第三字段:最后一次更改密码的日期;
第四字段:密码的最短使用时间;
第五字段:密码的最长使用期限;
第六字段:密码警告时间段;
第七字段:密码禁用期;
第八字段:账户过期日期;
第九字段:保留字段;
五、linux用户和组管理的常用工具的使用方法;
(一)组管理相关工具;
1、groupadd命令:创建组;
使用方法:groupadd [选项] group
选项:-g GID :指定GID;
-r: 创建系统组;
2、groupmod命令:修改组属性;
用法:groupmod [选项] GTOUP
选项:-g GID: 修改GID;
-n new_name: 修改组名;
示例:修改lufei3组的id号为1001
3、groupdel命令:删除组;
(二)、用户相关工具;
1、useradd命令:创建一个新用户或更新默认新用户信息
用法:useradd [选项] 登录
选项:-u: 指定UID
-g: 指定基本组ID,此组要事先存在;
-c: 指明注释信息,注释信息要用””括起来;
-G GROUP1 [,GROUP2,]]: 指明用户所属的附加组,多个组之间用,分隔;
-d: 指定路径为用户的家目录;
-s: 指定用户的默认shell;
-r: 创建一个系统用户;
-m: 如果用户的家目录不存在,则创建家目录;
-M: 不创建用户家目录;
-f: 密码过期后,账户被彻底禁用之前的天数;
示例1:创建一个用户名为lufei1,UID为1005,GID为1000,注释信息“useris”,登录shell: 、/bin/shell;
示例2:创建一个用户名为lufei2,主组默认,附加组为lufei和gdm ,家目录为:/tmp/home/
示例3:创建一个系统用户lufei3,无需家目录,无需登录shell;
2、usermod命令:修改一个用户的账户;
用法:usermod [选项] 登录
选项:-u: 修改用户的ID为此处指定的新UID;
-g: 修改用户所属的基本组;
-G: 修改用户所属的附加组;
-a: 将用户追加到新的附加组,只能和-G一起使用;
-c: 修改注释信息;
-d: 修改用户的家目录,用户原来的文件不会转移至新的位置;
-m: 用于将原来家目录内容移动到新的位置,只能和-d一起使用;
-l: 修改用户名;
-s: 修改用户的默认shell;
-L , -U: 锁定和解锁用户密码;在用户原来的密码字符串之前添加一个“!”;
示例1:修改用户lufei2 的UID为1002(原先为1006),组ID为1000(原先为1006),追加附加组为1001;添加注释信息为:my name is;修改其家目录为/home/lufei3;
3、userdel命令:删除用户账户和相关文件;
用法:userdel [选项] 登录名
选项:-r: 删除用户一并删除其家目录;
(三)、密码相关工具详解;
1、passwd命令:
用法:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-iinactivedays] [-S] [--stdin] [username]
(1)、passwd: 修改用户自己的密码;
(2)、passwd username: 修改指定用户的密码;
选项:-l, -u: 加密和解密用户密码;
-d: 清除用户密码串;
-d: 清除用户密码串;
-e DATE: 过期期限,日期;
-i DAYS: 非活动期限;
-n DAYS: 密码的最短使用期限;
-x days: 密码的最长使用期限;
-w days: 警告期限;
--stdin: 用法:echo “password”|passwd --stdin username;直接修改密码无需交互;
示例:给用户添加密码的两种方式:交互式和非交互式
2、gpasswd命令:给组添加密码;用法:gpasswd [选项] group;
选项:-a username: 向组中添加用户;
-d username: 从组中移除用户;
3、newgro命令:临时切换指定组为基本组;
用法:newgrp [-] [group]
-: 会模拟用户重新登录以实现重新初始化其工作环境;
4、chage命令:更改用户密码过期信息;用法:chage [选项] 登录名
选项:-l:列出用户的以及密码的有效期限
-m:修改密码的最小天数
-M:修改密码的最大天数
-I:密码过期后,锁定帐号的天数
-d:指定密码最后修改的日期
-E:账户过期时间,0表示立即过期,-1表示永不过期
-W:密码过期前,开始警告天数
示例:
5、id命令:显示用户的真实和有效的ID
用法:id [option]…[username]
选项:-u: 仅显示有效的UID;
-g: 仅显示用户的基本组ID;
-G: 仅显示用户所属的所有组的ID;
-n: 显示名字而非ID;
6、su 命令:切换用户
登录式切换:会通过读取目标用户的配置文件来重新初始化;
su - username 或 su -l username
非登录式切换:不会读取目标用的配置文件进程初始化;
su username
注意:管理员可无密码切换至其他任何用户;
六、权限管理:
使用ls –l 查看一个文件的长格式时;在最左侧有一串字符,
例如:rwxrwxrwx:
左三位:定义user(owner)的权限;
中三位:定义group的权限;
右三位:定义other的权限;
(一),三位权限位对应文件和目录的意义;
1、文件:
r: read: 可获取文件的数据;
w: write: 可修改文件的数据;
x: excute: 可将此文件运行为进程;
2、目录:
r: 可使用ls命令获取其下的所有文件列表;
w: 可修改此目录下的文件列表;即创建或删除文件;
-x: 可cd至此目录中,且可使用ls –l来获取所有文件的详细属性信息;
3、进程对文件的访问权限应用模型:进程的属主与文件的属主是否相同;如果相同,则应用属主权限;否则,则检查进程的属主是否属于文件属组,如果是,则应用属组权限;否则,就只能应用other的权限;
4、权限的组合机制:
字符标识方法: --- --x -w- -wx r-- r-x rw- rwx
二进制标识方法: 000 001 010 011 100 101 110 111
八进制标识方法: 0 1 2 3 4 5 6 7
可以简单认为 r=4; w=2; x=1; 所以在修改权限时就可以使用数字修改,更直观;
例如:rwxr-xr-x = 755;说明:左三位rwx权限相加4+2+1=7;
中三位r-x权限相加4+0+1=5;
右三位r-x权限相加4+0+1=5;
(二)、权限管理命令:
1、命令说明:chmod命令:权限管理;
使用语法:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
选项:
-R:递归修改,一般只和授权表示法一起使用;
三类用户:
u: 属主; g: 属组;o: 其他人; a: 所有
(1),第一种语法使用方法:
chmod [OPTION]...MODE[,MODE]... FILE...
赋权表示法:u= ; g= ; o = ; a= ;
权限相同可以一起写
权限不相同,只能分开写,要用,分隔开;
示例:
授权表示法:直接操作一类用户的一个权限位r, w, x;
u+, u-; g+, g-; o+, o-; a+, a-;
示例:
(2)、第二种语法使用方法:
chmod [OPTION]... OCTAL-MODEFILE...
八进制权限位法:
示例:
(3)、第三种语法使用方法:
chmod [OPTION]...--reference=RFILE FILE...
参考一个文件来修改另一个文件,应用型修改;
示例:
2、chown命令:修改文件的属主和属组;
语法格式:
chown [OPTION]...[OWNER][:[GROUP]] FILE... 常用方法
chown [OPTION]... --reference=RFILE FILE...
示例:
3、chgrp命令:和chown用法相同,这里不再多解释;
4、umask命令:文件的权限反向掩码,这掩码:默认是022;
文件:666-umask
目录:777-umask
注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减的结果又执行权限,则需要将其加1;
umask:023
666-023=644
777-023=754
umask: 查看当前umask;
umask MASK: 设置umask;
注意:此类设定仅对当前shell进程有效;
七、linux系统上的特殊权限:SUID, SGID ,STICKY
安全上下文:
(1)、进程以某用户的身份运行,进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作;
(2)、权限匹配模型:
a、判断进程的属主,是否为被访问文件的属主,如果是,则应用属主的权限;否则进入第二步;
b、判断进程的属主,是否属于被访问文件的属组;如果是,则应用属组的权限;否则进入第三步;
c、应用other权限
SUID:
默认情况下,用户发起的进程,进程的属主是其发起者;因此,其以发起者的身份运行;(注意:这时的文件的属主和进程的属主是两回事,不是相同的)
SUID的功用:用户运行某程序时,如果此程序拥有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件自己属主;
管理文件的SUID 权限:chmod u+ | -s file...
展示位置:属主的执行权限位
如果属主原本有执行权限,显示为小写s; 否则,显示为大写S;
SGID:
功用:当目录属组有写权限,且有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,新文件的属组不是用户的基本组而是此目录的属组
管理文件的SGID权限:chmod g+| -s file...
展示位置:属组的执行权限位
如果属组原本有执行权限,显示为小写s; 否则,显示为S;
Sticky:
功用:对于属组或全局可写的目录,组内的所有用户或系统上的所有用户对在此目录中都能创建新文件或删除所有的已有文件,如果为此类用户设置的sticky权限,则每个用户可以创建文件,无法删除或修改其他用户创建的文件,只能删除或修改自己创建的文件;
管理文件sticky权限:chmod o+ | -t file...
展示位置:其他用户的执行权限位
如果其他用户原本有执行权限,显示为小写t; 否则,显示为大写T;
系统上的/tmp和/var/tmp目录默认均有sticky权限;