7月28日总结
(附带本日总结以及相关知识点练习题和本人联系练习实况 见尾部)
一.基本正则表达式元字符:
分四类:1.字符匹配:.: 匹配任意单个字符
[]: 匹配指定范围内的任意单个字符
[^]: 匹配指定范围外的任意单个字符(脱字符)
[:digit:]: 数字
[[:digit:]]: 匹配[所有数字]
[[:alpha:]]:匹配[所有字母]
2.匹配次数: *:匹配其前面的字符任意次数
.*: 匹配任意长度的任意字符
\?:匹配其前面的字符0次或1次
\*:匹配其前面的字符1次或多次
3.位置锚定:^:行首锚定(用于模式的最左侧)
$:行尾锚定(用于模式的最右侧)
^$:空白行
^[[:space:]]$: 空行或包含空白字符的行
\< \b: 词首锚定
4.分组和引用:\(\): 将一个或多个字符捆绑在一起,当作一个整体
\(xy\)*ab: 命令行中括号有特殊意义所以用转义符
eg:做一个经典的例子: vi loves.txt
He loves his lover.
He likes his lover.
She likes her liker.
She loves her liker.
二.Linux用户,组管理
1.用户和组:(1)系统上的每一个进程都是由一个特定的用户发起
(2)系统上的文件都是由特定的用户所拥有
(3)用户对系统上的文件访问时收到权限控制
(4)与运行中的进程相关联的用户确定该进程可访问的文件与目录
2.用户:用户标识符,密码,用户的分类(管理员 普通用户等)
3.组:用户组、用户容器
4.用户标识符:属主UID: 0-65535
管理员用户:root:0
普通用户:1-65535
系统用户:1-499(Centos6),1-999(Centos7)
登录用户:500-60000(Centos6),1000-60000(Centos7) 名称解析:名称转换
Username<----->UID
根据名称解析库 /etc/passwd
属组GID:
组类别:用户的基本组
用户的附加组
/etc/group
认证信息:密码 /etc/shadow /etc/gshadow
应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类;
使用随机密码;
最短长度不要低于8位;
定期更换
5.用户组管理:
(*)安全上下文:进程以其发起者的身份运行;进程对文件的访问权限 取决于发起此进程的用户的权限
(1)groupadd: 添加组
groupadd [option] group
-g : 指定GID;默认是上一个组的GID+1
groupmod: 修改组属性
-g :修改GID
-n :修改组名
groupdel: 删除组
(2)useradd:创建用户
useradd [option] 登录名
-u: 指定UID
-g:指定基本组ID
-G:指定用户附加组,附加组要事先存在
-c:修改注释信息
-d:修改用户的家目录;用户原有的文件不会被转移至新位置
-r:创建系统用户
-D:显示创建用户的默认配置
userdel:删除用户
userdel 登录名
-r:删除用户时一并删除家目录
usermod:修改用户属性
-u: 修改用户ID
-g: 修改用户的基本组
-G: 修改用户的附加组
-c: 修改注释信息
-d: 修改用户的家目录
-m: 只能与-d选项一同使用,用于将原来的家目录移动为新的家目录
-a: 与-G一同使用,用于为用户追加新的附加组
-l: 修改用户名
-L: 锁定用户密码
-U: 解锁用户的密码
(3)/etc/passwd:
root❌0:0:root:/root:/bin/bash
(*)用户名:密码(x占位符):用户标识符:组标识符:注释信息:家目录:登录shell
passwd:直接修改自己的密码
passwd username:修改指定用户的密码,仅root用户有此权限
-l: 锁定用户
-d:清除用户密码串
-e DATE: 过期期限,日期
-n DAYS:密码的最短使用期限
-x DAYS:密码的最长使用期限
-w DAYS:警告期限
–stdin:非交互式创建密码 echo “PASSWORD” | passwd --stdin username
chage: 更改用户密码过期信息
-d: 指定密码最后修改日期
-E:密码到期的日期
-W:密码过期前收到警告信息的天数
(4)/etc/shadow:
root:2189e0y2981ye9we902e921:17859:0:99999:7:::
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动 时间:失效时间:标志
(最后一次修改时间表示的是从某个时刻起,到用户最后一次修改口令时的天数这个 时间起点是1970年1月1日)
(5)id: 显示用户的有效ID
-u: 显示有效的UID
-g: 显示用户的基本组ID
-G:仅显示用户所属的所有组的ID
Linux文件系统权限:
一.权限对象:文件拥有者(属主)
群组(属组)
其他人
二.权限类型:-rw-r- r- . 1 root root 0 Dec 1 06:15 a_c
r:4 w:2 x:1
eg: r–r--r-- 444
rw-rwx-r 700
三.rwx权限说明:
1.对于文件而言:r:可以获取文件数据
w:可以修改文件数据
x:可以将此文件运行为进程
2.对于目录而言:r:可以使用ls名利不过获取文件列表
w: 可以修改文件列表(创建和删除)
x: 表示可以cd此目录,并可以用ls -l获取文件详细信息
四.权限判断逻辑:
文件:前提条件为用户可以进入到文件所在目录
删除文件:看用户户是否具备对目录的w权限
1.判断用户是以什么身份,按照owner->group->other匹配
2.若是文件的属主,文件权限的左三位有w权限,修改成功,无则失败
3.若不是文件属主,但在文件的属组中,如果文件权限的中三位有w权限,修改成 功,无则失败
4.若不是文件属主,也不在文件的属组中,如果文件权限的右三位有w权限,则修 改成功,无则失败
(创建文件和删除文件逻辑相同)
目录:前提条件为用户可以进入到目录所在目录
五.权限管理命令:
chmod命令:
chmod [OPTION]… MODE[,MODE]… FILE…
chmod [OPTION]… OCTAL-MODE FILE…
chmod [OPTION]… --reference=RFILE FILE…
三类用户:u g o a(所有)
chmod [OPTION]... MODE[,MODE]... FILE...
MODE表示法:
赋权表示法,后跟rwx
u= u=r
g=
o=
a=
授权表示法,后跟rwx
u+ u-r
g+ g-
o+ o-
a+ a-
从属关系:chown chgrp -R:递归修改
chown username:groupname name
chown :groupname name
chgrp groupname name
(注意:只有管理员可以修改)
六.进程安全上下文:
进程对文件的访问权限应用模型:
进程的属主与文件的属主是否相同;如果相同,则应用属主权限;
否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组权限;
否则,就应用other的权限
七.基本权限ACL:
1.可以针对单个用户设置权限
2.可以针对用户组设置权限
3.子文件/目录继承父目录的权限
查看系统是否支持ACL:
[root@nebulalinux03 /]# tune2fs -l /dev/sda2 |grep “Default mount options:”
Default mount options: user_xattr acl
设置ACL:setfacl [-bkRd] [{-m|-x} acl参数] 文件/目录名
-m:配置acl权限
-x:删除acl配置
-b:移除所有的ACL配置
-R: 递归配置acl
-d:配置默认acl
八.权限掩码umask:
九.特殊权限SUID、SGID、SBIT:
Set UID:当在文件所有者的x权限上出现s时,表示当前这个文件具有SUID权限
1.SUID权限仅对二进制程序有效;
2.执行者对于该程序需要具有x的可执行权限;
3.本权限仅在执行该程序的过程中有效;
4.执行者具有该程序拥有者(owner)的权限;
如果当前这个文件属主位没有x权限,显示大写S
Set GID:当s这个标志出现在文件所有者的x权限上时,表示具有SGID权限
1.SGID权限仅对二进制程序有效;
2.执行者对于该程序来说,需具备x的权限;
3.SGID主要用在目录上;
SBIT: 针对others来设置的
1.主要针对other位
2.作用于目录
3.对文件无效
4.在该目录下创建新的额文件或者目录,只有自己和root可以删除
SUID SGID SBIT
字符表示法: s s t
数字表示法: 4 2 1
十.隐藏属性chattr,lsattr:
chattr:修改文件隐藏属性
a:append 只能够向文件添加数据,不能删除数据
i: 文件不能被删除,改名,链接同时不能写入内容
(*)附:个人针对知识练习 (核心过程如下):
1.新建用户gentoo,要求其家目录为/users/gentoo:
[root@node1 ~]# useradd gentoo
[root@node1 ~]# usermod -d /users/gentoo
2.新建用户fedora,其家目录为/users/fedora:
[root@node1 ~]# useradd fedora
[root@node1 ~]# usermod -d /users/fedora
3.为用户gentoo和fedora新增附加组nebulaedu:
[root@node1 ~]# usermod -G nebulaedu(fedora) gentoo
4.复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件的属组为nebulaedu,并让属组对 目录本身拥有写权限:
[root@node1 ~]# cp var/log/ /tmp/
[root@node1 ~]# chown -G nebulaedu /tmp/log/
[root@node1 ~]# chmod g=w nebulaedu