RHCE高级权限和文件系统

一:高级用户组和用户权限

1:密码策略

1:含义

密码策略就是设置密码的一些属性,如什么时候密码过期等

修改的就是这个配置文件/etc/shadow这里面的参数

user2:!!:19768:0:99999:7:::

第一个字段:用户名

第二个字段:密码占位符,!!表示没有密码,!表示密码被锁定了,*有密码

第三个字段:1970年1月1日到现在最近修改密码过的天数

第四个字段:至少过了多少天,才能修改密码;0表示没有期限

第五个字段:使用多久后,才能修改密码 ;99999表示没有没有期限

第六个字段:密码过期前的警告天数

第七个字段:密码失效天数,就是密码过期后,还能使用多久

第八个字段:密码禁用日期

2:操作

chage 用户

选项:

-d 将最近一次修改密码的时间设为日期
-E 密码过期日期
-W 密码过期前警告天数(-M天数之后的)
-m 至少过了多少天,才能修改密码
-M 过了多少天后,必须要修改密码
-I 过期多少天后,密码失效
-l 展示用户的信息

chage -d 0 用户名 这样操作后,密码就必须要修改

2:文件特殊权限和掩码

1:掩码

1)简介

作用:控制用户创建文件和目录的默认权限,

默认掩码的是0022,默认创建目录的最大权限为777,默认创建文件的最大权限为666,

文件的默认权限=666-022=644

目录的默认权限=777-022=755

0022:第一个为特殊权限,后面依次是用户,拥有组,其他用户

2)案例

1、创建文件,拥有人有读写的权限,拥有组有写的权限,其他人有写的权限;目录,拥有人有读写的权限

#计算知
666-622=044
777-733=044
掩码为044,通过修改用户的变量文件即可
[root@server ~]# vim .bashrc 
umask 044
[root@server opt]# ll
total 0
drwx-wx-wx. 2 root root 6 Feb 28 20:28 dir
-rw--w--w-. 1 root root 0 Feb 28 20:28 file
[root@server opt]# 

2、umask值为033

设置umask值为033,然后切换用户
创建文件和文件夹
[root@server opt]# umask 
0033
[root@server opt]# ll
total 0
drwxr--r--. 2 root root 6 Feb 28 20:35 111
-rw-r--r--. 1 root root 0 Feb 28 20:35 file
[root@server opt]# 

创建文件本来是633的,结果变成了644,然后通过计算的话,会不一样,所以以目录的权限为主  

3)总结

1:如果umask的值有冲突的话,以目录的权限为主,因为默认情况下,创建的文件如果有x的权限的话,会自动的加上1,或者减去1

2:9版本之前的话,会有root和普通用户的掩码不一样,su 用户 触发的是/etc/bashrc su - 用户触发的是/etc/login.defs

 

2:特殊权限

特殊权限一共有3个suid和sgid和sbit

1)suid(s或者4)

suid只对文件有意义,对于目录而言没有意义,

作用:当一个文件有suid的权限时,执行这个文件的时候以文件的拥有人的身份去执行,suid只能设置到二进制的文件上面,对于脚本文件没有用

例如:/usr/bin/passwd就是设置了suid的权限

设置的方法是:chmod u+s 文件或者chmod 4000(建议不使用数字)

如果是大S的话,代表着没有这个文件没有x的权限,如果是小写的s的话,那就是原文件有x的权限

2)sgid(s或者2)

作用:

  对于文件:如果二进制文件有sgid的权限,执行的时候,以文件的拥有组执行

  对于目录:如果目录有sigd的权限,那么此目录下创建的文件和子目录都会继承父目录的权限(文件和目录继承组的拥有组,子目录也继承sgid的权限)

设置的方法:chmod g+s 文件或者 chmod 2000

如果拥有组是大S的话,代表着没有这个文件没有x的权限,如果是小写的s的话,那就是原文件有x的权限

3)sbit(t或者1)

作用:对于目录有用

  目录有sbit的权限的话,目录下创建的文件和目录只能由自己来修改,也不能修改别人在此目录下创建的文件和目录,(root除外)

设置的方法:

  chmod o+t 目录 或者 chmod o+1 目录

如果拥有组是大T的话,代表着没有这个文件没有x的权限,如果是小写的t的话,那就是原文件有x的权限

可以做一个贡献目录出去

3:acl权限

1:简介

作用:满足了普通设置权限的问题,精确的设置某个用户的权限

1)选项

-m 修改权限
-b 删除所有的acl的权限
-x 删除某个用户的权限
-R 递归设置权限
-k 删除所有的默认权限
-d 设置默认的权限
-x d:g:拥有组 文件 删除指定用户的默认权限
-m m::rw 设置acl掩码的权限

 

2)案例

1、设置q7用户对file文件有rw的权限,其余用户没有

[root@server opt]# ll
total 0
-rw-r-----. 1 root root 0 Feb 28 21:23 file
[root@server opt]# setfacl -m u:q7:rw file 
[root@server opt]# getfacl file 
# file: file
# owner: root
# group: root
user::rw-
user:q7:rw-
group::r--
mask::rw-
other::---

[root@server opt]# 

2、删除q7用户的权限

[root@server opt]# setfacl -b file 

3、有效权限

[root@server opt]# setfacl -m m::r file 
[root@server opt]# getfacl file 
# file: file
# owner: root
# group: root
user::rw-
user:q7:rw-			#effective:r--
group::r--
mask::r--
other::---

[root@server opt]# setfacl -m m::rwx file 
[root@server opt]# getfacl file 
# file: file
# owner: root
# group: root
user::rw-
user:q7:rw-
group::r--
mask::rwx
other::---

[root@server opt]# 

按照有效权限为主,设置了掩码为rwx,但是用户的权限为rw,因为默认的情况下,不能创建带有x的文件  

3)acl的继承

创建的文件和目录的时候就会自动的继承目录acl默认权限,设置默认权限

[root@server opt]# setfacl -m d:u:q7:rwx dir/
[root@server opt]# getfacl dir/
# file: dir/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:q7:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

[root@server opt]# cd dir/
[root@server dir]# touch file1
[root@server dir]# mkdir dir1
[root@server dir]# getfacl *
# file: dir1
# owner: root
# group: root
user::rwx
user:q7:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:q7:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

# file: file1
# owner: root
# group: root
user::rw-
user:q7:rwx			#effective:rw-
group::r-x			#effective:r--
mask::rw-
other::r--

[root@server dir]# 

目录会自动的继承,但是文件的话会去掉x的权限

  

3)总结

1:在设置acl权限的时候,拥有组的权限不在是原来的权限,而是掩码的权限(有效权限),如果使用chmod来设置的拥有组的权限的话,就是在设置掩码的权限,按照有效权限来设定

2:acl的继承,目录的掩码最小为rx(这样才有意义),文件的最大掩码为rw(不能带有x的权限),永远不可能继承出一个带有x的权限的文件

3:文件的优先级

  文件的拥有人;文件的acl用户;文件的拥有组;文件acl的拥有组;文件的其他人

4:acl的掩码,就是第一次设置acl的权限,当然,改变了掩码后,acl的有效权限也会被改变

当你设置的acl权限大于你想要设置掩码的权限时,以掩码的权限为主
acl=rwx m=r 最后还是r
当你设置的acl权限小于你想要设置掩码的权限时,以acl的权限为主,acl=r m=rwx 最后还是r

4:监控登陆

就是可以查看谁登陆了自己的系统

 w:可以谁登陆了系统,登陆了几个用户

 last:登陆和重启的记录

 lastb:尝试登录失败

lastlog:最近登录日志

踢出用户的操作:

1)首先查看自己的终端

ps -a

2)使用w查看登录的用户

3)然后使用 pkill -9 -t 终端 就可以踢掉了

5:sudo提权

 作用:就是使普通用户通过sudo提权到指定用户

1:选项

-u 以这个用户执行命令
-l 查看当前用户sudo的情况
-i 切换到root用户
-k 下次使用sudo,强制输入密码,默认5分钟内不用输入密码了
   

 2:用法

配置文件在/etc/sudoers和/etc/sudoers.d目录,2个里面都可以编写

1)提权用户的格式:

root    ALL=(ALL)       ALL
q7 ALL=(root) /usr/sbin/useradd

用户名 主机名=(提权到的用户) 命令

注意:

多个用户,主机名,提权用户,命令都可以使用逗号隔开

使用的方法:

[q7@server ~]$ sudo useradd q1111
[q7@server ~]$ id q1111 
uid=1004(q1111) gid=1004(q1111) groups=1004(q1111)
[q7@server ~]$ 

2)提权用户组的格式:  

在组上面加上百分号即可

%q7 ALL=(root)  /usr/sbin/userdel

然后让提权的用户加入到这个组里面去即可,实现了提权

3)免密提权

q7 ALL=(root) NOPASSWD:/usr/sbin/useradd

在命令的前面输入大写的NOPASSWD即可

4)检查提权配置文件

  使用sudo -l 可以检查

  使用sudoedit  配置文件

  使用visudo  配置文件

5)sudo别名的设置

用于要设置很多的用户,或者用户组,很多的命令,方便简化操作,管理等

主机别名:Host_Alias

用户别名:User_Alias

提权到别的用户别名:Runas_Alias

命令的别名:Cmnd_Alias

User_Alias USERS=user1,user2
USERS ALL=(root) ALL

别名必须是大写的

3:缺点

sudo是一个瞬时性的,不能进入到目录里面去

[root@server tmp]# su - q7
[q7@server ~]$ sudo cd /root
[sudo] password for q7: 
[q7@server ~]$ pwd
/home/q7
[q7@server ~]$ cd /root
-bash: cd: /root: Permission denied
[q7@server ~]$ sudo cd /root
[q7@server ~]$ pwd
/home/q7
[q7@server ~]$ sudo cd /mnt/
[q7@server ~]$ pwd
/home/q7
[q7@server ~]$ 

可以直接使用cd来进入目录  

4:总结

1)在配置文件按照格式配置好用户的权限即可

2)别名一定要使用大写即可

二:文件系统

 1:设备的命名

非常的重要

块设备的形式:u盘,机械硬盘,移动硬盘,这些设备都是专门存储文件的存储介质,块设备无法直接使用,需要格式化才能使用

1)IDE设备

/dev/hda 

2)SCISC SATA  SSD设备

/dev/sda

3)virt10

/dev/vda

4)xen

/dev/xcda1

5)nvme固态卡

/dev/nvmen01

6)光驱

/dev/sr0

7)逻辑卷设备

/dev/mapper/root

这些设备要熟知

2:文件系统

1:基础知识

概念:一个块设备想要保存文件,则这个设备必须要有文件系统才行,文件实际上是存放到文件系统上面的,文件系统是块设备上的,存放形式和结构

格式化:创建文件系统,存储数据的

文件系统的类型:

  1:本地文件系统:windows中的NTFS文件系统。u盘的FAT系列;exfat专门做移动介质存储的文件系统

  linux中:ext系列,xfs系列,日志文件系统,主流(rhel7开始,默认)

  2:网络文件系统:通过网络实现目录的共享

    NFS:能实现linux和linux之间的共享

    cifs:windows和windows之间,linux和window之间目录的共享ip地址

  3:集群网络系统:多个主机做一个分配池

    ceph:分布式存储

    GFSFS:google集群文件系统

    VIMS:华为的集群文件系统

  4:光盘文件系统

    iso9600光盘独有的文件系统

2:inode和block

1:基础

文件有2个部分组成:元数据+数据

元数据(inode):描述数据的数据,一个文件系统的属性信息,文件的权限,大小,时间戳等

数据:指的是文件系统中的块,存放的就是实际数据的内容

文件=inode+block

:就是多个连续的扇区的组合,直接将文件存储在这个块里面就可以了,

关于块的大小:太大了,存储一个小的文件,比较浪费;太小了的话,占用多个block,,所以要适合的block

inode:就是一个指针,通过inode表,查找block,系统识别的就是这个inode号,

2:文件和目录的关系

系统是通过目录的数据来查找的文件名和inode编号的映射关系

文件=元数据+数据

数据:保存的实际数据

目录=元数据+数据

目录数据:保存文件名和inode号

例子:寻找/etc/passwd这个文件

1)首先获取/etc/目录的inode编号,根据目录的数据来查找passwd文件名和inode的映射关系,找passwd文件的inode号

2)读取inode表,找到passwd对应底层的block,判断文件的权限

3)如果有读的权限,则读取block的内容

3:mv,cp,rm与inode关系

1:mv和inode的关系

在同一个文件系统内,移动的时候,inode编号不会发生改变,仅仅移动了inode编号和文件名的映射关系,速度比较的块

在不同的文件系统中,inode编号会发生改变,实际上就是将文件拷贝到目标的文件系统中,然后删除源文件的inode,所以速度比较的慢

2:cp和inode的关系

无论是在同一个文件系统还是不同的文件系统中,inode编号都会发生改变

3:rm和inode的关系

删除的文件的时候,删除的是文件名和inode的映射关系,就无法识别到,所以没有了该文件

但是里面的文件的内容还是存在的,block处于释放的状态的,如果,下一次创建文件的时候,用到了这个inode的话,那么原来的之前的数据就会删除掉

找回误删除的文件:

  首先不要继续写入数据,通过第三方的工具实现文件的恢复

    xfs系列:xfsdump和xfsrestore(先备份在恢复)

    ext系列:extundelete 和dump 和 restore 都是先备份在恢复

3:硬链接和软连接

1:硬链接

多个文件inode指向同一个block

不能跨越文件系统创建,因为inode号不一样

格式:ln 源文件  硬链接文件

图:硬链接和软连接

系统上有几个硬链接文件,相当于系统上有几个同步备份的文件,只有硬链接的数量为0,文件才是真正的被删除掉

2:软连接

类似于快捷方式,就是一个文件指向另外一个文件,然后指向block

格式:ln -s(soft) 源文件  软连接文件

注意:

  1)建立的软连接的文件实际上有源文件的权限为主

  2)源文件没有的话,那么这个链接文件也就没有用了,就会出现链接文件是红色的情况,创建源文件出来即可

  3)在同一个系统中创建的inode不同

  4)尽量写绝对路径 

4:文件归档和压缩

 1:基础

linux的压缩包=打包+压缩

注意只能对文件进行压缩,不能对目录进行压缩,可以先对目录进行打包的操作变成文件再来进行压缩,压缩只对于文件而言

打包和解包的权限不变,属性也不会改变

打包的操作:更加推荐使用相对路径

tar 选项 打包后的文件名  源文件

选项:

-c 打包的操作
-f 包名
-x 解压
-v 显示详细的信息
-C 解压缩的路径
-z 使用zip进行压缩

实例:

root@server tmp]# tar -czf etc.gz /etc/
tar: Removing leading `/' from member names
[root@server tmp]# ll
total 5648
-rw-r--r--. 1 root root 5780681 Feb 29 21:40 etc.gz
[root@server tmp]# tar -xzf etc.gz
[root@server tmp]# ls
etc  etc.gz

 

2:压缩工具:

gzip|gunzip,bzip2|bunzip2,xz|xunz  压缩后文件的大小不一样了

czf       cjf      cJf

保留原来的包 加上 -k 包名

[root@server tmp]# tar -cf etc.tar /etc
tar: Removing leading `/' from member names
[root@server tmp]# ll
total 24640
-rw-r--r--. 1 root root 25231360 Feb 29 21:45 etc.tar
[root@server tmp]# gzip -k etc.tar 
[root@server tmp]# ll
total 30288
-rw-r--r--. 1 root root 25231360 Feb 29 21:45 etc.tar
-rw-r--r--. 1 root root  5780689 Feb 29 21:45 etc.tar.gz

 

注意后缀名,不能一样,一样话不能进行压缩  

 

注意:

1)打包和压缩可以在一起,tar -czf 包名 原路径

 

5:文件挂载

 1:基础

可以使用baobab查看图形化

df:查看文件系统的使用情况

选项

-i 查看inode号
-T 查看文件系统的类型
-h 显示单位

常用的选项:df -hT

sh命令:查看目录的大小

[root@server tmp]# du -sh /etc
27M	/etc

-s:显示目录汇总的大小

-h:显示单位

ll:查看文件的大小

2:mount和umount

当你有了文件系统后,需要挂载才能对文件系统写入东西,挂载点是访问的入口

格式:mount 挂载设备  挂载点------>>>挂载文件系统,才能写入数据,类似于u盘

umount 挂载设备或者挂载点   ---->>>>取消挂载

 

 

 

 

  

 

posted @ 2024-02-28 21:51  q_7  阅读(21)  评论(0)    收藏  举报