目录
权限查看及读取
权限查看
ls -l file #查看文件权限
ls -l dir #查看目录权限
权限的读取
文件的属性被叫做文件的元数据(meta data),元数据也称作是数据的数据。
一种元数据用1个byte来记录内容。
- | rw-r--r-- | . | 1 | root | root | 0 | JUN 21 20:30 | file1 #文件的权限
d | rw-r--r-- | . | 2 | root | root | 0 | JUN 21 20:30 | dir #目录的权限查看
[1] [2] [3] [4] [5] [6] [7] [8] [9
1 | 文件类型 - 普通文件 d 目录 l 软连接 b 快设备 c 字符设备 s socket套接字(应用对内和对外实现通信的接口文件,该文件也是需要使用代码实现的) p 管道 | |
---|---|
2 | 用户权限 rw- | r-- | r-- u(用户) g(主组) o(其他) |
3 | 系统的seLinux(安全上下文)开启 |
4 | 对于文件:文件内容被系统记录的次数(硬链接的个数) 对于目录:目录中子目录的个数 |
5 | 文件拥有者 |
6 | 文件拥有组 |
7 | 对于文件:文件内容大小 对于目录:目录中子文件的元数据大小 |
8 | 文件内容被修改的时间 |
9 | 文件名称 |
补充:硬链接和软链接
1、什么是硬链接
硬链接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index) 。为防止误删重要文件,linux系统采用使用多个文件名指向同一索引节点的方式来保证文件能够更有保障。只删除一个链接并不影响索引节点本身和其它的链接,只有当最后一个连接被删除后(硬链接数归0),文件的数据块及目录的链接才会被释放。文件真正删除的条件是与之相关的所有硬链接文件均被删除。
ln 源文件 硬链接文件
2、什么是软链接
软链接类似Windows系统中的快捷方式,软链接后的文件中保存着指向的源文件的链接,即保存着源文件的位置信息,与指针类似。
3、两者的区别
硬链接与源文件内容、id、创建时间、权限等等都相同
软链接的文件内容与源文件相同,其他都不同。
4、硬链接和文件复制的区别
硬链接是节点的复制,一个文件对应一个节点,一个硬链接就是一个节点
文件复制相当于新建文件的内容与源文件相同,是另外一个文件
普通权限的类型和作用
用户对文件的身份
u: user文件的拥有者,ls -l 看到的第五列信息
g: group,文件的拥有组ls -l看到的第六列信息
o: other,既不是拥有者也不是拥有组成员的其他用户的通常
权限位
rwx | r-- |r--
u g o
用户身份匹配
用户身份优先级:user > group >other
权限类型
权限符号 | 权限名称 | 具体含义 |
- | 权限未开启 | 什么权限都没有 |
r | 可读 | 对于文件:可以读取文件内容 对于目录:可以ls列出目录中的文件 |
w | 可写 | 对于文件:可以更改文件内容 对于目录:可以在目录中新建或者删除文件 |
x | 可执行 | 对于文件:可以用文件名调用文件内记录的程序 对于目录:可以进入目录中 |
设定普通权限的方法
chmod --reference=/tmp /mnt/westosfdir
#复制/tmp目录的权限到/mnt/westosdir
chmod -R --reference=/tmp /mnt/westosfdir
#复制/tmp目录的权限到/mnt/westosdir,复制中的子文件 -R 代表递归操作
字符形式来修改文件的权限:
chmod u/g/o +/- rwx #给不同身份添加/去掉某种权限
chmod u/g/o = rwx --表示空即什么权限都没有 #使得不同身份的权限为...
chmod a +/-/= ... #a代表所有身份的权限
可用watch -n 5 ls -Rl /mnt/file来将权限的变化观察的更直观
chmod u-rw /mnt/westos1 #去掉文件所有人权限的读和写
chmod u-rw,g+x,o+wx /mnt/westosfile2
#去掉文件所有人的读写权限,添加文件所有组的执行权限,添加取他用户的写和执行权限
chmod a-rwx /mnt/westosfile3 #所有人、所有组和其他用户都去掉读写执行的权限
chmod u=rwx,g=rx,o=--- /mnt/westosfile4
#设定文件所有人的权限读写执行,所有组的权限为读和执行,其他用户没有权限
chmod -R u=rwx,g=rx,o=--- /mnt/westosdir/
#设定该目录和目录下的所有文件的权限为:所有人的权限读写执行,所有组的权限为读和执行,其他用户没有权限
chmod 数字方式设定权限
权限波尔指表示方式
rwx= 111
--- = 000
三位二进制可以表示的最大范围为8进制数
权限波尔指表示方式
rwx = 111 = 7
rw- = 110 = 6
r-x = 101 = 5
r-- = 100 = 4
-wx = 011 = 3
-w- = 010 = 2
--x = 001 = 1
--- = 000 = 0
系统默认权限设定
系统本身存在的意义是共享资源。
从安全角度讲系统共享的资源越少,开放的权利越小系统安全性越高。既要保证系统安全,又要系统创造价值,于是把应该开放的权力默认开放,把不安全的权力默认保留。
如何保留权力
umask表示系统保留权力
umask #查看保留权力
umask 权限值 #临时设定系统预留权力
文件默认权限 = 777 - umask - 111
目录默认权限 = 777 - umask
umask值越大系统安全性越高
umask临时更改:
umask 077
umask永久更改 :
/etc/bashrc #shell系统配置文件
vim /etc/bashrc
74 if xxxxxxxxxxxxxxx
75 umask 002 #普通用户的umask
76 else
77 umask 022 -- 077 #root用户的umask
78 fi
文件用户、用户组管理
chown username file #更改文件拥有者
chgrp groupname file #更改文件拥有组(更改的拥有组必须已经存在)
chown username:groupname file
#同时更改文件的拥有者和拥有组(更改的拥有者和拥有组必须都存在)
chown|chgrp -R user|group dir
#更改目录本身及目录中内容的拥有者或者拥有组(更改的拥有者和拥有组必须都存在)
特殊权限
stickyid 粘制位
针对目录:如果一个目录stickyid开启,那么这个目录中的文件只能被文件所有人删除
chmod 1原始权限 dir
chmod o+t dir
chmod 1777 /pub
chmod o+t /pub
#以上两条命令都可以开启目录的t权限
1、将该目录权限全部打开
2、分别切换到两个用户,都可以在目录中创建和删除文件
且可以任意删除其他用户创建的文件,这样系统安全性得不到保障,应当设置为只有文件所有人才能删除文件
3、设置粘制位,需要切换到超级用户才能设置
4、测试,发现westos用户不能删除hhh用户创建的文件
sgid 强制位
强制位的本质:程序运行时以程序本身所有组的身份运行,与当时系统的用户身份无关
针对目录:目录中新建的文件自动归属到目录的所属组中
chmod 2源文件权限 dir
chmod g+s dir
1、创建一个新的组并设置给/mnt/pub这个目录 (目录的权限全开777)
2、使用普通用户在该目录下创建文件,发现该文件的所有组为该普通用户
3、添加用户组的权限为粘制位
4、切换普通用户创建文件,发现该文件的用户所有组为root用户
针对二进制可执行文件的影响:
1、 切换普通用户执行可执行文件,发现进程的所有组为该普通用户
2、添加/bin/cat可执行文件的权限并查看
3、再次切换普通用户执行可执行文件,发现进程的所有组为root
suid 冒险位
冒险位的本质:程序以程序文件所有人的身份运行,与系统现时的用户身份无关。
只针对二进制的可执行文件(c程序),当运行二进制可执行文件时都是文件拥有者身份,和执行文件无关。
程序 | 由代码组成 |
进程 | 代码运行的状况 |
chmod 4原属性 file
chmod u+s file
1、普通用户没有/etc/passwd文件的读的权限
2、修改cat命令的所有人权限
查看cat命令对于所有用户来说都是以root身份执行的
3、使用普通用户发现可以cat查看到/etc/shadow文件内容
企业中使用sgid,suid对程序本身进行权力调整
acl权限列表
acl权限:Aiccess Control Lists 访问控制列表
功能:在列表中可以设定特殊用户对于特殊文件有特殊权限
acl列表权限读取
getfacl westosfile
显示内容分析:
# file : westosfile #文件名称
# owner : root #文件拥有者
# group : root #文件拥有组
user : : rw- #文件拥有者权限
user : lee : re- #特殊指定用户权限
group : : r-- #文件拥有者权限
group : Donnie : --- #特殊指定用户组的权限
mask : : rw- #能够赋予特殊用户和特殊用户组的做大权限阈值
other : : r-- #其他人的权限
注意:当文件权限列表开启后,不要用 ls -l 命令来读取文件的权限
acl列表的控制
setfacl -m u:Jobbin:rw file #设定各个身份下的file文件的权限
setfacl -m g:Donnie:rw file
setfacl -m u:Jobbin:rw file
setfacl -m u::rwx file
setfacl -x u:Jobbin file #删除列表中的Jobbin
setfacl -b file #关闭file的权限列表
acl 权限的优先级
拥有者 > 特殊指定用户 > 权限多的组 > 权限少的组 > 其他
1、打开westos用户对于/mnt/pub目录的权限列表,权限为0
+代表权限列表已经打开 。文件的权限将由权限列表接管,不要再使用ls -l 对文件权限进行查看
2、查看权限列表内容:
3、删除列表权限并查看修改后的权限列表
权限列表的优先级匹配:
文件所有人>特殊指定用户>权限多的组>权限少的组>其他人
acl 列表的默认权限 (针对目录)
功能:在列表中可以设定特殊用户对于特殊文件有特殊权限
setfacl -m u:Jobbin:rwx /mnt/westosdir #只对/mnt/westosdir目录本身生效
setfacl -Rm u:Jobbin:rwx /mnt/westosdir
#对/mnt/westosdir目录和目录中已有的内容生效
setfacl -m d : u : Jobbin :rwx /mnt/westosdir
#针对/mnt/westosdir之后新建的文件生效
1、只对于目录本身生效
2、对已经存在的文件的权限列表生效
3、对之后新建的文件的权限列表生效
acl mask控制
mask是能够赋予指定用户权限的最大阈值
当设定完毕文件的acl列表之后用chmod缩小了文件拥有组的权力,mask会发生变化
setfacl -m : m :权限 file #设置文件的mask权限值
注意:在开启acl权力列表后,ls -l 查看的group的权限是mask的权限
1、设置两个特殊用户的权限为满,mask权限也满
2、设置mask权限为r--,发现两个特殊用户的权限也被减少至r--。可知mask权限为特殊用户的权限阈值
attr权限
attr权限会限制所有用户,因此只有超级用户才能使用该命令
lsattr #查看lsattr权限
chattr + a / i - a / i file/dir #添加或删除attr权限
a权限 #只能添加不能删除
i权限 #不能做任何更改,但可以查看
1、默认atrr权限没有打开,超级用户可以在目录下建立和删除文件
2、添加a权限,只能创建不能删除目录下的文件
3、添加i权限,即不能创建也不能删除文件