目录
一、Linux3A安全模型
- Authentication:认证,验证用户身份。eg:用户名+密码、生物特征(指纹、人脸识别)、验证码等
- Authorization:授权
- Accouting:审计。事后,处理分析日志等
二、用户和组
- 用户:User Id(UID)是唯一标识。not 用户名!!!
用户类型 | 用户名 | UID(唯一标识) | 作用 |
---|---|---|---|
管理员 | root(可改) | 0 | 超级管理员(权限限制不了) |
普通用户–系统用户 | 自定义 | 1-999(CentOS7及以后),老版1-499 | 给后台程序使用,eg:nginx、mysql等 |
普通用户–登录用户 | 自定义 | 1000+(CentOS7及以后),老版500+ | 给用户进行交互式登录 |
- 用户组:0个或者多个用户的集合。Group Id(GID)是唯一标识。
组类型 | 组名 | GID(唯一标识) | 作用 |
---|---|---|---|
管理员组 | root | 0 | 超级管理员 |
普通用户组–系统组 | 自定义 | 1-999(CentOS7及以后),老版1-499 | 给后台用户使用 |
普通用户组–普通组 | 自定义 | 1000+(CentOS7及以后),老版500+ | 给登录用户使用 |
- 用户和组的关系
- 一个组有0到多个用户
- 一个用户有1到多个组
- 主要组(私有组、主组):有且只有一个主组。创建用户时,默认创建与其同名的组作为主组
- 附加组(辅助组):可以有0至多个附加组
三、Context 安全上下文
Linux安全上下文:
- 在Linux中,运行中的程序(进程process),是以进程发起者身份运行的;
- 进程能访问的资源权限取决于发起者的身份,而不是程序本身!!!
四、用户和组的配置文件
- /etc/passwd:用户及其属性信息
- /etc/shadow:用户密码及其相关属性
- /etc/group:组及其属性信息
- /etc/gshadow::组密码及其相关属性
(一)一个新文件的处理方式
-
查看文件类型,以确定用什么命令打开文件
-
查看文件,cat只能看ASCII文件,看二进制文件和设备文件会乱码
-
看不懂,需求man帮助。先查看该文件在man的哪一章
-
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 创建用户
- 格式
useradd [options] LOGIN
useradd -D #查看创建用户时的默认配置,配置文件:/etc/default/useradd
useradd -D [options] #修改创建用户时的默认信息
- 常用选项
-u UID #指定UID
-g groupname #指定用户组
-s SHELL #指定shell。可用shell查看:/etc/shells
-M #不创建家目录。一般用于不用登录的用户
-m #创建家目录。一般用于登录用户
-d HOME_DIR #指定家目录
-r #创建系统用户
-G GROUP1[,GROUP2,...] #指定附加组。组须事先存在
- 创建系统用户
groupadd -g 306 mysql #创建用户前先建组,确保组ID已知
useradd -u 306 -g mysql -s /sbin/nologin -d /data/mysql -M -r mysql #指定了家目录,但不创建?
- 默认创建用户
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
- 用途:切换用户或以其他用户的身份执行命令
- 格式
su [options…] [-] [user [args…]] - 切换用户的方式
su username #不完全切换。不读取目标用户的配置文件,不改变工作目录
su - username #完全切换
注意:切换用户再退至旧用户时,用exit,而不用su去切。否则,生成很多bash子程序,环境混乱
- 以其他用户的身份执行命令(不切换)
su - username -c "CMD" #等于下面三步
su - username
CMD
exit
- 因shell不能切换的用户
使用shell:/sbin/nologin、/bin/false(ubuntu)的用户不能切换
su - mysql -s /bin/bash #可指定可切换的shell?
- 常见选项 (3.5)
(六)passwd 设置密码
- 非交互式修改用户密码
echo PW | passwd --stdin username #Rocky才有--stdin选项。该方法不通用
echo -e '123456\n123456' | passwd username #通用性方法!!
- 常见选项(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的权限体系
- 对文件来说,用户分为三类:
属主 | 所有者 | u |
属组 | 属于哪个组 | g |
其他用户 | 不是所有者,也不在其属组 | o |
-
对用户来说,文件的权限分为三种:
读权限:r
写权限:w
执行权限:x -
对用户来说,对目录的权限有:
a) 读取目录中的文件名:r
b) 在目录中创建和删除文件:w
c) 查看文件的元数据:x
d) 查看文件的内容:x
七、chown 修改文件的属主和属组
- 格式
chown [OPTION]... [OWNER][:[GROUP]] FILE... #修改属主或属组
chown [OPTION]... --reference=RFILE FILE... #根据RFILE信息修改FILE
- 用法
OWNER #只修改属主
OWNER:GROUP #同时修改属主和属组。:可替换为.
OWNER: #同时修改属主和属组。省略写法。:可替换为.
:GROUP #只修改属组、:可替换为.
- 常见选项
-v #显示过程
-c #只显示成功的信息
-R #递归
-L #更改软链接指向的目录
-P #不更改软链接指向的目录
八、chgrp 只修改文件的属组
chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… --reference=RFILE FILE…
用法与chown类似(4.2.2)
九、chmod 修改文件权限
- 格式
chmod [OPTION]... MODE[,MODE]... FILE... #模式法
chmod [OPTION]... OCTAL-MODE FILE... #数字法
chmod [OPTION]... --reference=RFILE FILE... #以RFILE的权限修改FILE
- 模式法
who opt permission #MODE
who #u | g | o | a
opt #+ | - | =
permission #r | w | x | -
十、umask 新建文件和目录的默认权限
- 新建文件:666 - umask,按位对应减,若所得结果某位存在奇数,则该位+1
- 新建目录:777 - umask,按位对应减
- 显示和设定umask
umask [-p] [-s] [mode]
-p #数字显示
-S #字符显示
十一、Linux的三种特殊权限
(一)SUID
- 作用对象:程序、可执行文件(属主一般为root)
- 作用效果:用户执行该程序时,临时继承其属主权限
- 权限设置
chmod u+s FILE...
chmod 4xxx FILE...
chmod u-s FILE...
(二)SGID
-
作用对象及效果
a) 程序、可执行文件:用户执行该程序时,临时继承其属组权限
b) 目录:在该目录下,新建文件的组默认为此目录的属组 -
权限设定
chmod g+s FILE...
chmod 2xxx FILE...
chmod g-s FILE...
(三)Sticky
- 作用对象:目录
- 作用效果:在该目录下,只有文件的属主或root可删除文件
- 设置权限
chmod o+t DIR...
chmod 1xxx DIR...
chmod o-t DIR...
十二、chattr 设定文件的特殊属性
chattr [-pRVf] [-+=aAcCdDeijPsStTuF] [-v version] files…
- 常见选项
-R #递归
-v #显示过程
-f #不输出错误信息
- 常见属性
i #对文件:不可重命名、修改、移动和删除。对目录:可查看修改文件rx,不可新建删除文件w
a #对文件:不可重命名、覆盖、移动和删除;可追加。对目录:可新建、修改,但不可删除
- 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