Linux基础4(正则基础,用户和组,权限管理)

0、正则表达式(未完待续)

基本正则表达式和扩展正则表达式的不同就是使用符号的不同

1.基本正则表达式元字符
字符匹配
  • .:(小数点)匹配任意单个字符

    • [root@localhost dev]# grep s.. /etc/passwd
      
  • []:(方括号)匹配范围内的任意单个字符

    • [root@localhost dev]# grep s[abcd] /etc/passwd
      
  • ^:(脱字符)匹配指定范围外的任意单个字符

    • [root@localhost dev]# grep [^a] /etc/passwd
      
  • [:digit:]:数字

  • [[:digit:]]:匹配任意数字

匹配次数
  • *:匹配前面字符任意次数
  • .*:匹配任意字符任意长度的任意次数
  • \?:匹配前面的字符0次或者1次(有转义符号需要加’‘)
  • \ *:匹配前面的字符1次或者多次
  • \ {m,n \ }:匹配前边字符最少m次,最多n次
    • \ {1, \ }最少一次
位置锚定

^:行首锚定

[root@localhost dev]# grep ^r..t /etc/passwd
[root@localhost dev]# grep ^[a] /etc/passwd

$:行尾锚定

[root@localhost dev]# grep bash$ /etc/passwd

^$:匹配空行

^ [ [:space:] ]$:匹配空格

分组和引用

\ ( \ ):
(xy)(zd)ab\2 引用第二块
\1 引用第一块

一、用户和组的基本概念

-rw-------. 1 root root 1404 Jul 21 11:37 test

文件权限 连接次数 属主 属组 大小 创建时间 名称(注意没有特殊权限文件后边是小数点,有特殊权限后边是加号

连接次数:表示有多少文件名连接到此节点(inode )

属主:文件或目录的所有者

属组:文件或目录的所属用户组

1、用户和组
  1. 每一个进程的发起都是由特定的用户或者组发起的
  2. 系统上的文件都是特定的用户拥有
  3. 用户对系统上文件的访问时,都受到权限的控制
  4. 与运行中的进程相关联的用户确定该进程可访问的目录文件(进程对文件进行操作的权限受限于用户对文件的权限)
  • 用户:

    • 用户标识符,密码
    • 用户分类:
      • 管理员
      • 普通用户
  • 组:

    • 用户组——用户容器
  • 用户和组的标识符:

    • UID 0-65535
      • 管理员用户:
        • root:0
      • 普通用户:1-65535
        • 系统用户:CentOS6:1-499
        • 登陆用户:CentOS6:500-

​ CentOS7:1000-

  • 名称解析:

    • 用户名--------UID

      [root@localhost ~]# cat /etc/passwd
      
      • GID 0-65535
        • 组类别:
          • 用户基本组
          • 用户附加组
[root@localhost ~]# cat /etc/group
  • 认证信息:

    密码

    [root@localhost ~]# cat /etc/shadow  
    
    [root@localhost ~]# cat /etc/gshadow
    
  • 密码策略:

    1. 使用随机密码
    2. 最短长度不低于八位
    3. 应该使用大写字母,小写字母,数字,标点符号四类中的至少三类组成
    4. 定期更换
  • 加密算法:

    • 对称加密:加密和揭秘使用同一个密码

    • 非对称加密:加密和解密使用一对密钥

2、用户组管理:
1、安全上下文:
  • 进程是以其发起者的身份运行,进程对文件的访问权限,取决于此发起进程的用户权限

  • groupadd:创建组 (101宿舍就是一个用户组)

    groupadd [options] group

    ​ -g GID:指定组ID,默认情况下是上一个组ID+1

    ​ -r:创建一个系统组

  • groupmod:修改组属性

    groupmod [options] GROUP

    ​ -g:修改组ID

    ​ -n:修改组名

  • groupdel:删除组

    groupdel [options] GROUP

localhost ~]# groupdel lxw
  • useradd:创建用户

    useradd [options] LOGIN

    ​ -u:指定UID

    ​ -g:指定基本ID(UID GID),保证(UID GID 不能被使用)

    ​ -G:指定用户的附加组,附加组必须要实现存在

    ​ -c:添加注释信息

    ​ -d:指定用户的家目录,通过复制/etc/skel 目录,并改名

    ​ -s:指定用户的默认shell

    ​ -r:创建系统用户

    ​ useradd -D:显示创建用户的默认选项

    ​ 修改结果保存于/etc/default/useradd文件中

  • userdel:用户删除

    ​ userdel+登陆名

    ​ -r:删除用户时一并删除家目录

  • usermod:修改用户属性

    ​ -u:修改用户ID

    ​ -g:修改用户的基本组

    ​ -G:修改用户的附加组

    ​ -c:修改注释信息

    ​ -d:修改家目录

    ​ -m:与-d选项一起使用,用于将原来家目录的文件移动到 进的家目录

    ​ -a:与-G一起使用,追加用户的附加组

    ​ -l:修改用户名

    ​ -s:修改默认shell

    ​ -L:锁定用户密码

    ​ -U:解锁用户密码

root: x :0:0:root:/root:/bin/bash

用户名:密码(x作为占位符):用户标识符:组标识符:注释信息:主目录:登陆shell

  • passwd

    ​ 1.passwd:直接修改自己密码

    ​ 2.passwd username:修改指定用户的密码,仅root用户有 此权限

    ​ -l:锁定用户

    ​ -d:清除密码串

    ​ -e DATE:过期日期(当前密码在指定日期就过期了)

    ​ -i DAYS:非活动期限(就是多长时间不用)

    ​ -n DAYS:密码最短使用期限

    ​ -x DAYS:密码最长使用期限

    ​ -w DAYS:告警期限(还剩多少天的时候告警)

    ​ --stdin–:非交互式创建密码

    ​ echo “PASSWD” | passwd --stdin username

    [root@localhost ~]# echo "123456" | passwd --stdin lxw
    
  • gpasswd命令:

    组密码文件:/etc/gshadow

    ​ -a username:向组内添加用户

    ​ -d username:从组内删除用户

  • newgrp命令:用来做临时切换指定组为基本组

  • chage命令:更改密码过期信息

    ​ -d:指定密码最后修改日期

    ​ -E:密码到期日期

    ​ -w:密码过期前的警告天数

    ​ -m:密码最短使用期限

    ​ -M:密码保持有效的最大天数

  • id:

    ​ -u:显示UID

    ​ -g:显示GID

    ​ -G:显示用户的所有组ID

    ​ -n:显示时间

root: 6 6 Umgn0Vxu$u12xKqBjNGaHGwSsOvIRIv.d3SNL54cRCrpteIzOoNuW.WJZTxS8Hn7HxX/5z7eLNUyTzXF9LJlp96llJpah71:18103:0:99999:7:::

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间修改间隔:警告时间:不活动时间:失效时间:标志位

  • 最后一次修改时间(18103):从1970年1.1到用户最后一次修改的相隔天数

$6:加密算法

U m g n 0 V x u Umgn0Vxu :加密因子(加密串)

u12xKqBjNGaHGwSsOvIRIv.d3SNL54cRCrpteIzOoNuW:真正密码

三、Linux文件系统权限

权限对象:属主、属组、其他人

权限类型:rwx

1、rwx:权限说明

​ 1、对与文件而言

​ r:可以获取文件数据

​ w:可以修改文件数据

​ x:可以将此文件运行为进程

​ 2、对于目录而言

​ r:可以使用ls命令获取文件列表

​ w:可以修改文件列表,即创建和删除和修改

​ x:可以cd到此目录,并且可以使用ls -l获取文件的详细属性

2、权限判断逻辑

​ 1、文件:

​ 前提条件:用户能够进入文件所在目录(目录具有x权限)

​ 删除文件:看用户是否具备对该目录具有w权限

​ 1、判断用户身份,owner-group-other(看是否具有w权限)

​ 创建文件:和删除文件逻辑一样

​ 2、目录:

​ 前提条件:用户能否进入目录所在的目录(对父目录具有x权限)

​ 删除目录:对上一级目录具有w权限

​ 创建目录:同上

3、权限管理命令
  • 赋权命令chmod:

     chmod [OPTION]... MODE[,MODE]... FILE...
     chmod [OPTION]... OCTAL-MODE FILE...
     chmod [OPTION]... --reference=RFILE FILE...
    

​ 三类用户:

​ u:属主 g:属组 o:other a:所有人

​ chmod [OPTION]… MODE[,MODE]… FILE…

​ MODE表示法:

​ 赋权表示法:rwx

​ u= g= o= a=

​ 授权表示法:

​ u+,u- g+,g-

​ 注意:只有用户自己修改自己的文件

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

​ -R:递归修改

​ 注意:只有管理员可以使用

四、进程安全上下文

1、进程对文件访问权限模型:
  • 进程的发起者就是进程的属主
    • 进程的属主与文件的属主是否相同,如果相同,则应用的是属主权限
    • 否则,则检查进程的属主是否属于文件的属组,如果是,则应用属组的权限
    • 否则,使用other权限
[tom@localhost ~]$ cat
^C
[tom@localhost ~]$ cat /etc/passwd

cat 是tom发起的,cat的属主就是tom,文件/etc/passwd的属主是root,则开始判断

2、权限ACL

​ 1、针对单个用户设置

​ 2、针对用户组设置

​ 3、针对子文件/目录继承父目录的权限

[root@localhost ~]# tune2fs -l /dev/sda2 |grep "Default mount options:"
Default mount options:    user_xattr acl--CentOS 6.8
  • 设置ACL:
    • setfacl命令

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

​ -m:配置ACL权限,不能和-x同时使用

​ -x:删除ACL配置

​ -b:移除所有的ACL配置

​ -R:递归设置ACL

​ -d:配置默认的ACL参数,只对目录有效

[root@localhost tmp]# setfacl -m u:nebula:rw /tmp/aclfile--给nebula用户设置ACL权限
[root@localhost tmp]# setfacl -m g:tom:rw /tmp/aclfile--给tom这个组设置ACL权限
[root@localhost tmp]# getfacl /tmp/aclfile--查看文件的ACL权限
[root@localhost home]# setfacl -m d:u:nebula:rwx mydir/--给目录添加ACL权限
  • getfacl命令

​ getfacl + 文件:查看文件的ACL权限

3、权限掩码

​ umask:默认权限(目前用户在新建文件或者目录时的权限默认值)

[root@localhost ~]# umask--查看权限设置分数
[root@localhost ~]# umask -S--以符号类型查看权限
[root@localhost tmp]# umask 002--修改的默认权限只对当前shell有效,

​ 文件权限:

​ 666-umask值=644

​ 目录权限:

​ 777-umask值=755

在文件/里边修改umask值:

如果要永久修改umask值,需要修改/etc/profile文件或是修改/etc/bashrc文件,例如要将默认umask值设置为027,那么可以在文件中增加一行“umask 027”。

/etc/profile和/etc/bashrc都可以用于设置用户登录系统时自动执行某些操作,他们的区别是/etc/profile只在用户第一次登录时被执行,而/etc/bashrc则在用户每次登录加载Bash Shell时都会被执行。

因而,如果是修改/etc/profile文件,将只对新创建的用户生效;而如果是修改/etc/bashrc文件,则对所有用户都生效。

4、特殊权限:
  • SUID:

    当前文件所有者的x权限上出现s时,表示当前这个文件具有SUID权限(例如执行passwd命令执行时,由于该文件具有特殊权限,所以普通用户使用passwd命令时,使用的是root对passwd的权限)

[root@localhost tmp]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Nov 24  2015 /usr/bin/passwd

​ 1、SUID权限仅仅对二进制程序有效 s

​ 2、执行者对于改程序有x权限

​ 3、本权限仅仅在执行程序的过程中有效

​ 4、程序的执行者拥有该程序的拥有者的权限

  • SGID:

    当文件属组的x权限出现s时,表示当前这个文件具有SGID权限 s

​ 1、SGID权限仅仅对二进制程序有效

​ 2、执行者对该程序具有可执行权限

​ 3、主要用于目录之上:继承父目录属组

  • SBID: t

    ​ 1、主要针对与other位

    ​ 2、作用于目录

    ​ 3、在该目录创建的目录或文件,只有自己和root可以删除

    ​ 4、对文件设置无效

    SUID/SGID/SBIT

​ 字符表示法

​ s s t u+s

​ 数字表示法

​ 4 2 1

chmod 0755 1755 4755 filename

chattr:修改隐藏属性

​ a:(append)只能够向文件中添加数据,不能删除数据(包括覆盖)

​ i:文件不能被删除,也不能别改名,不能被连接,不能被写入内容

​ A:atime访问时间不能修改

[root@localhost tmp]# chattr +a test

lsattr:列出文件隐藏属性

[root@localhost tmp]# lsattr passwd
-------------e- passwd
发布了33 篇原创文章 · 获赞 6 · 访问量 669

猜你喜欢

转载自blog.csdn.net/qq_42508901/article/details/97645798