4-用户和权限管理

一、Linux3A安全模型

  • Authentication:认证,验证用户身份。eg:用户名+密码、生物特征(指纹、人脸识别)、验证码等
  • Authorization:授权
  • Accouting:审计。事后,处理分析日志等

二、用户和组

  1. 用户:User Id(UID)是唯一标识。not 用户名!!!
用户类型用户名UID(唯一标识)作用
管理员root(可改)0超级管理员(权限限制不了)
普通用户–系统用户自定义1-999(CentOS7及以后),老版1-499给后台程序使用,eg:nginx、mysql等
普通用户–登录用户自定义1000+(CentOS7及以后),老版500+给用户进行交互式登录
  1. 用户组:0个或者多个用户的集合。Group Id(GID)是唯一标识。
组类型组名GID(唯一标识)作用
管理员组root0超级管理员
普通用户组–系统组自定义1-999(CentOS7及以后),老版1-499给后台用户使用
普通用户组–普通组自定义1000+(CentOS7及以后),老版500+给登录用户使用
  1. 用户和组的关系
  • 一个组有0到多个用户
  • 一个用户有1到多个组
    • 主要组(私有组、主组):有且只有一个主组。创建用户时,默认创建与其同名的组作为主组
    • 附加组(辅助组):可以有0至多个附加组

三、Context 安全上下文

Linux安全上下文:

  • 在Linux中,运行中的程序(进程process),是以进程发起者身份运行的;
  • 进程能访问的资源权限取决于发起者的身份,而不是程序本身!!!

四、用户和组的配置文件

  • /etc/passwd:用户及其属性信息
  • /etc/shadow:用户密码及其相关属性
  • /etc/group:组及其属性信息
  • /etc/gshadow::组密码及其相关属性

(一)一个新文件的处理方式

  1. 查看文件类型,以确定用什么命令打开文件
    在这里插入图片描述

  2. 查看文件,cat只能看ASCII文件,看二进制文件和设备文件会乱码
    在这里插入图片描述

  3. 看不懂,需求man帮助。先查看该文件在man的哪一章
    在这里插入图片描述

  4. man帮助
    在这里插入图片描述

(二)passwd

文件格式

login name:passwd:UID:GID:GECOS:directory:shell

login name #用户名
passwd 	   #加密后的密码。x:占位符,可为空
UID
GID
GECOS 	   #用户全名或注释,可为空
directory  #用户家目录。创建用户时,默认创建在/home下
shell 	   #用户默认shell。/sbin/nologin:不能登录的shell,一般给系统用户,安全

(三)shadow

储存用户密码信息,任何用户无权限(文件权限为000)

login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiratioin date:reserved field

login name 					 #用户名
encrypted password 			 #加密后的密码,可为空;!:用户被锁定,无法登录
date of last password change #上次修改密码的时间。计算方法:距离1970年的天数。0:下次登录之后就要改密码。为空:密码时效功能无效
minimum password age 		 #最小时间间隔,还有几天能改密码。0:随时可改
maximum password age 		 #最大时间间隔,密码有效时间。99999:一直有效
password warning period 	 #警告时间,密码过期前几天开始提醒用户,默认7
password inactivity period   #不活动时间,密码过期几天后账号锁定,在此期间,用户可以登录。为空:不使用此规则
account expiratioin date 	 #失效时间。计算方法:距离1970.1.1的时间。为空:永不失效
reserved field 				 #保留字段

(四)group

文件格式

group name:password:GID:user list

group name #组名
password   #组密码
GID 	   #组ID
user list  #用户列表

(五)gshadow

文件格式

group name:encrypted password:administrators:members

group name 		   #组名
encrypted password #组密码。!:未设密码
administrators 	   #组管理员
members 		   #用户列表

(六)getent 查看配置文件

getent passwd | shadow | group | gshadow [UNAME]

五、用户和组的管理命令

(一)useradd 创建用户

  1. 格式
useradd [options] LOGIN
useradd -D 		  	 #查看创建用户时的默认配置,配置文件:/etc/default/useradd
useradd -D [options] #修改创建用户时的默认信息
  1. 常用选项
-u UID 		 		   #指定UID
-g groupname 		   #指定用户组
-s SHELL	 		   #指定shell。可用shell查看:/etc/shells
-M 			 		   #不创建家目录。一般用于不用登录的用户
-m 			 		   #创建家目录。一般用于登录用户
-d HOME_DIR  		   #指定家目录
-r 					   #创建系统用户
-G GROUP1[,GROUP2,...] #指定附加组。组须事先存在
  1. 创建系统用户
groupadd -g 306 mysql 												#创建用户前先建组,确保组ID已知
useradd -u 306 -g mysql -s /sbin/nologin -d /data/mysql -M -r mysql #指定了家目录,但不创建?
  1. 默认创建用户
useradd USERNAME

useradd默认值配置文件:/etc/default/useradd

useradd -D 			  #查看配置信息
useradd -D -s SHELL   #更改默认配置
useradd -D -g GROUP
useradd -D -b BASE_DIR

GROUP=100 			  #/etc/login.defs
HOME=/home 			  #默认家目录的父目录
INACTIVE=-1 		  #对应/etc/shadow的第7列。-1:不锁定
EXPIRE= 			  #对应/etc/shadow的第8列,为空:永不失效
SHELL=/bin/bash 	  #默认bash
SKEL=/etc/skel 		  #生成新建用户家目录的模板文件
CREATE_MAIL_SPOOL=yes #默认创建收件箱

(二)usermod 修改用户属性

usermod [options] LOGIN

常见选项

-L 			#锁定用户账号,/etc/shadow密码栏增加!
-U 			#解锁用户账号

-l NEWLOGIN #修改用户名
-u UID 		#修改UID

-d HOME_DIR #修改家目录
-m 			#将家目录内容移至新位置,与-d一起用

-g GROUP 	#修改主要组
-G GROUPS 	#添加新附加组,原来的附加组会被覆盖
-a GROUP 	#和-G一起用,使原来的附加组不被覆盖

-s SHELL 	#修改shell

(三)userdel 删除用户

userdel [options] LOGIN

-f #强制删除,在登录状态也可以
-r #删除家目录和mail

(四)id 查看用户和组的信息

id [OPTION]… [USER]

-a #默认选项,显示详细信息

-u #仅输出UID
-g #仅输出GID
-G #输出所有组ID,空格分隔

-n #显示相关name,组合使用-nu | -ng | -nG

(五)su - switch user

  1. 用途:切换用户或以其他用户的身份执行命令
  2. 格式
    su [options…] [-] [user [args…]]
  3. 切换用户的方式
su username   #不完全切换。不读取目标用户的配置文件,不改变工作目录
su - username #完全切换

注意:切换用户再退至旧用户时,用exit,而不用su去切。否则,生成很多bash子程序,环境混乱

  1. 以其他用户的身份执行命令(不切换)
su - username -c "CMD" #等于下面三步

su - username
CMD
exit
  1. 因shell不能切换的用户
    使用shell:/sbin/nologin、/bin/false(ubuntu)的用户不能切换
su - mysql -s /bin/bash #可指定可切换的shell?
  1. 常见选项 (3.5)

(六)passwd 设置密码

  1. 非交互式修改用户密码
echo PW | passwd --stdin username #Rocky才有--stdin选项。该方法不通用

echo -e '123456\n123456' | passwd username #通用性方法!!
  1. 常见选项(3.6)

(七)chage 修改用户密码策略

chage [options] LOGIN

-l #显示密码策略

-d LAST_DAY    #修改shadow第三列
-m MIN_DAYS    #修改shadow第四列
-M MAX_DAYS    #修改shadow第五列
-W WARN_DAYS   #修改shadow第六列
-I INACTIVE    #修改shadow第七列
-E EXPIRE_DATE #修改shadow第八列

(八)groupadd 创建组

groupadd [options] GROUP

常见选项(3.8)

-g GID #新建组时,指定GID
-r 	   #创建系统组

(九)groupmod 修改组

groupmod [options] GROUP

-g GID #改GID
-n NEW_GROUP #改组名

(十)groupdel 删除组

groupdel [options] GROUP

-f #强制删除。默认有用户的主要组删除不了

(十一)gpasswd

groupdel [options] GROUP

-a USER #添加用户
-d USER #删除用户
-M USER,... #批量加组

-r #删除组密码

(十二)groupmems 查看和更改附加组成员

groupmems [options] [action]

[options]
-g groupname #指定要修改的组
-R 

[action]
-l 			 #显示组成员
-a username  #添加用户
-d username  #删除用户
-p 			 #清除组中所有成员

六、Linux的权限体系

  1. 对文件来说,用户分为三类:
属主所有者u
属组属于哪个组g
其他用户不是所有者,也不在其属组o
  1. 对用户来说,文件的权限分为三种:
    读权限:r
    写权限:w
    执行权限:x

  2. 对用户来说,对目录的权限有:
    a) 读取目录中的文件名:r
    b) 在目录中创建和删除文件:w
    c) 查看文件的元数据:x
    d) 查看文件的内容:x

七、chown 修改文件的属主和属组

  1. 格式
chown [OPTION]... [OWNER][:[GROUP]] FILE... #修改属主或属组
chown [OPTION]... --reference=RFILE FILE... #根据RFILE信息修改FILE
  1. 用法
OWNER 		#只修改属主
OWNER:GROUP #同时修改属主和属组。:可替换为.
OWNER: 		#同时修改属主和属组。省略写法。:可替换为.
:GROUP 		#只修改属组、:可替换为.
  1. 常见选项
-v #显示过程
-c #只显示成功的信息

-R #递归
-L #更改软链接指向的目录
-P #不更改软链接指向的目录

八、chgrp 只修改文件的属组

chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… --reference=RFILE FILE…
用法与chown类似(4.2.2)


九、chmod 修改文件权限

  1. 格式
chmod [OPTION]... MODE[,MODE]... FILE... 	 #模式法
 chmod [OPTION]... OCTAL-MODE FILE... 		 #数字法
 chmod [OPTION]... --reference=RFILE FILE... #以RFILE的权限修改FILE
  1. 模式法
who opt permission #MODE

who 	   #u | g | o | a
opt 	   #+ | - | =
permission #r | w | x | -

十、umask 新建文件和目录的默认权限

  1. 新建文件:666 - umask,按位对应减,若所得结果某位存在奇数,则该位+1
  2. 新建目录:777 - umask,按位对应减
  3. 显示和设定umask
umask [-p] [-s] [mode]

-p #数字显示
-S #字符显示

十一、Linux的三种特殊权限

(一)SUID

  1. 作用对象:程序、可执行文件(属主一般为root)
  2. 作用效果:用户执行该程序时,临时继承其属主权限
  3. 权限设置
chmod u+s FILE...
chmod 4xxx FILE...
chmod u-s FILE...

(二)SGID

  1. 作用对象及效果
    a) 程序、可执行文件:用户执行该程序时,临时继承其属组权限
    b) 目录:在该目录下,新建文件的组默认为此目录的属组

  2. 权限设定

chmod g+s FILE...
chmod 2xxx FILE...
chmod g-s FILE...

(三)Sticky

  1. 作用对象:目录
  2. 作用效果:在该目录下,只有文件的属主或root可删除文件
  3. 设置权限
chmod o+t DIR...
chmod 1xxx DIR...
chmod o-t DIR...

十二、chattr 设定文件的特殊属性

chattr [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files…

  1. 常见选项
-R #递归
-v #显示过程
-f #不输出错误信息
  1. 常见属性
i #对文件:不可重命名、修改、移动和删除。对目录:可查看修改文件rx,不可新建删除文件w
a #对文件:不可重命名、覆盖、移动和删除;可追加。对目录:可新建、修改,但不可删除
  1. lsattr 查看文件特殊属性

十三、ACL 访问控制列表

ACL生效顺序:属主,自定义用户,属组,自定义组,其他人

(一)getfacl 查看ACL权限

(二)setfacl 设置ACL权限

setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file …

-m who:name:permission #修改ACL权限
-x who:name:permission #删除ACL权限
-b #删除所有ACL权限

-R #递归
-L #将ACL应用在软链接指向的目标文件上,与-R一起使用
-P #不将ACL应用在软链接指向的目标文件上,与-R一起使用

(三)ACL使用案例

chmod -x `which chmod` #chmod无执行权限后,用户无法使用chmod命令
chmod +x /usr/bin/chmod #执行失败,自己加自己加不了

setfacl -m u:root:rwx /usr/bin/chmod
chmod +x /usr/bin/chmod
setfacl -b /usr/bin/chmod

tips

修改用户shell

chsh -s SHELL USERNAME

文件操作(了解,一般不用编辑工具修改)

一般使用文件和组的管理命令,配置文件自动修改。
一般不直接使用编辑工具修改

vipw
vigr
pwck
grpck

查看运行的程序

ps aux 

查看postfix用户的创建过程

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值