对文件权限的查看可以用命令 ls -l file ,也可以用 ll file 查看文件的权限。ll 是 ls -l 的叠名。 (可以用alias 查看命令的叠名)
对目录权限的查看可以用命令 ls -ld dir ,也可以用 ll -d 查看目录的权限。
对于命令叠名的查看可以用alias 命令查看。
文件的属性被叫做文件的元数据(meta data),一种元数据用1个字节来记录。
1)文件权限信息
- | rw-r–r-- | . | 1 | root | root | 0 | Jan 29 09:38 | westos1
[1] [2] [3] [4] [5] [6] [7] [8] [9]
2)目录权限信息
d | rwxr-xr-x | . | 2 | root | root | 51 | Jan 29 09:38 | westosdir
[1] [2] [3] [4] [5] [6] [7] [8] [9]
对于每一位的解释
数字 | 含义 |
---|---|
1 | 文件类型 |
2 | 用户权限 |
3 | 系统的selinux开启 |
4 | 对于文件:文件内容被系统记录的次数; 对于目录:目录中子目录的个数 |
5 | 文件拥有者 |
6 | 文件拥有组 |
7 | 对于文件:文件内容大小; 对于目录:目录中子文件或子目录的元数据大小 |
8 | 文件内容被修改的时间 |
9 | 文件名称 |
对于 [ 1 ] 文件类型,包括以下内容:
1 | 文件类型 |
---|---|
- | 普通文件 |
d | 目录 |
l | 软链接 |
b | 块设备 |
c | 字符设备 |
s | socket套接字 |
p | 管道 |
对于 [ 2 ] 用户权限
2 | 用户权限 | |
---|---|---|
rw - | r - - | r - - |
u 用户 | g 所有组 | o 其他人 |
u: # user 文件的拥有者 ,ls -l 看到的第五列信息
g: # group 文件的拥有组, ls -l 看到的第六列信息
o: # other 既不是文件的拥有者也不是拥有组成员的其他用户的通称
在已经建立了如上所时示的文件和目录时,如果想要修改文件的拥有者。可以输入 chown zxk file1 即可将 file1 文件的拥有者改为 zxk 这个用户。
如果想要修改目录和目录中文件的所有者,输入命令 chown -R kk westosdir 即可将目录和目录中文件的所有者都可修改为 kk 这个用户。
如果需要同时修改文件的所有者和所有组,可以输入命令 chown kk:ll file1 即可将文件 file1 的所有者更改为kk, 所有组更改为 ll。
如果只是想要修改文件的所有组,可以用命令 chgrp 来改变文件的所有组。
如输入chgrp www file1 ,即可将文件 file1 的文件所有组修改为 www。
如输入chgrp -R www westosdir ,即可将目录 westosdir 和目录中的文件的所有组修改为 www 。
2 | 用户权限 | |
---|---|---|
rw - | r - - | r - - |
u 用户 | g 所有组 | o 其他人 |
user>group>other
表示文件所有者的身份大于文件所有组的身份大于其他人的身份。
字符 | 含义 |
---|---|
- | 权限未开启 |
r | 可读 |
对于文件:可以读取文件内容 | |
对于目录:可以用ls 列出目录中的文件 | |
w | 可写 |
对于文件:可以更改文件内容 | |
对于目录:可以在目录中新建或者删除文件 | |
x | 可执行 |
对于文件:可以用文件名称调用文件内记录的程序 | |
对于目录:可以进入目录 |
对于普通权限的设置可以用 chmod 命令来设定,有三种设定的方法。
chmod --reference = /tmp /mnt/westosdir
其中 = 后表示要复制的模板的权限,此命令的意思为将 /tmp 中的权限 复制到 /mnt/westosdir 这个文件上。
chmod -R --reference = /tmp /mnt/westosdir 此命令的意思为将 /tmp 中的权限 复制到 /mnt/westosdir 目录及 目录中的子文件上。
chmod < a | u | g | o > < + | - | = > < r | w | x > file
用字副方式设定文件权限,表示对 file 文件在 u,g.o 中的一位或者几位加上或者减去什么权限。a 表示 ugo 所有。
如可以用到chmod u-rw file1 表示 file1 文件 u 位减去 rw 权限;
用 chmod ugo+wx file1 表示 file 1 文件 ugo 位都加上wx 权限;
用 chmod a-w file1 表示 file1 文件所有位都减去 w 权限;
用 chmod ugo=— file1 表示取掉 file1 文件的所有权限;
用 chmod u+rwx,g+r,o+wx file1 表示分别对 ugo 位设定相应的权限。
用 chmod -R u+w,g+wx,o-r westosdir 表示对目录及目录中的文件同时设定相应的权限。
权限波尔指表示方式
rwx=111=7
rw-=110=6
r-x=101=5
r–=100=4=r
-wx=011=3
-w-=010=2=w
–x=001=1=x
—=000=0
如可以用 chmod 000 file1 表示取消 file1 文件的所有权限。
用 chmod -R 654 westosdir 表示将目录及目录的子文件的权限设置为654。
系统本身存在的意义就是为了共享资源,但是从安全角度讲系统共享的资源越少,开放的权力越小系统安全性越高。那么既要保证系统安全,又要系统创造价值,于是就把应该开放的权力默认开放,把不安全的权力默认保留。
输入命令 umask可以查看系统保留的权力。
也可以用命令 umask 权限值来临时设定系统预留的权力。
在系统中文件默认权限 = 777 - umask - 111
目录默认权限 = 777 - umask
如系统预留权限为 022 ,则目录的权限为 777- 022=755,也就是rwxr-xr-x,则文件的权限为 777-022-111=644,也就会 rw-r–r--.
umask值越大系统安全性越高
如 umask 077 表示设定系统的保留权限为077,在设置之后当前新建的文件和目录的值就是所设定;当退出当前的程序之后,再次建立就会恢复之前的默认值。
如图所示中的077 即为新设定的保留权力。
注: 以上设定完成后是不会立即生效的,需要输入命令 source /etc/bashrc ,source 命令的作用是使我们更改的内容立即被系统识别。
依次对设置的文件进行 source 命令即可。
source 命令后面只能跟一个文件,不能加多个。
命令 | 含义i |
---|---|
chown username file | 更改文件拥有者 |
chgrp groupname file | 更改文件拥有组 |
chown username : groupname file | 同时更改文件的拥有者和拥有组 |
chown ( chgrp) -R user ( group ) dir | 更改目录本身及目录中内容的拥有者或者拥有组 |
在超级用户下执行 chown 命令可以改变文件的所有人。
在已经建立了如上所时示的文件和目录时,如果想要修改文件的拥有者。可以输入 chown zxk file1 即可将 file1 文件的拥有者改为 zxk 这个用户。
如果想要修改目录和目录中文件的所有者,输入命令 chown -R kk westosdir 即可将目录和目录中文件的所有者都可修改为 kk 这个用户。
如果需要同时修改文件的所有者和所有组,可以输入命令 chown kk:ll file1 即可将文件 file1 的所有者更改为kk, 所有组更改为 ll。
如果只是想要修改文件的所有组,可以用命令 chgrp 来改变文件的所有组。
如输入chgrp www file1 ,即可将文件 file1 的文件所有组修改为 www。
如输入chgrp -R www westosdir ,即可将目录 westosdir 和目录中的文件的所有组修改为 www 。
针对目录: 如果一个目录 stickyid 开启之后,那么这个目录中的文件 只能被文件所有人删除。
对于粘滞位的设置也是通过 chmod 命令来设置的。
1) chmod 1 原始权限 dir ### 设置之后最后一位变为t
2) chmod o+t dir
在系统中存在一个/pub 的目录,该目录的权限对每个人都开放,不同的用户在这个目录中可以建立属于自己的文件,也可以删除和更改别人的文件。这种情况在现实中是属于不合理的。这个过程如图所示:
那么解决此类问题就需要用到上面提到的命令 : chmod 1777 /pub 或者 chmod o+t /pub ,给 /pub 这个目录开启 stickyid 。结果就是不能在这个目录中 不能删除别人的文件。操作如下所示:
针对目录: 目录中新建的文件自动归属到目录的所属组中
对于强制位的设定也通过 chmod 命令来实现。
1)chmod 2 源文件权限 dir ###设定后只会对后面新建的文件有所影响,并不会影响之前的文件。
2)chmod g+s dir
在个/mnt /zxk 设置了强制位的权限后,在目录中新建文件的时候,目录中新建的文件自动归属到目录的所属组中。
针对文件时
只针对二进制的可执行文件(c程序),当运行二进制可执行文件时都是用文件拥有组身份运行,和执行用户无关。
只针对二进制的可执行文件(c程序),当运行二进制可执行文件时都是用文件拥有者身份运行,和执行用户无关。
1)chmod 4原属性 file
2) chmod u+s file
Aiccess Control Lists #访问控制列表
功能: 在列表中可以设定特殊用户对于特殊文件的特殊权限
1)acl列表开启标识
-rw-rw---- 1 root caiwu 0 Apr 18 09:03 westosfile
看其在权限位后面是否有 + 出现,如果出现代表 acl 列表开启;如果没有 + 代表 acl 列表功能未开启。
acl列表权限读取 ,当权限位出现 + 时就不能 ls -ld 查看权限了,也不能再用 chmod 去改权限,这时只能用 setfacl 来改,getfacl file 来查看 file 文件的权限。
2)显示内容分析
字符 | 含义 |
---|---|
file: westosfile | 文件名称 |
owner: root | 文件拥有者 |
group: root | 文件拥有组 |
user::rw- | 文件拥有者权限 |
user:lee:rw- | 特殊指定用户权限 |
group::r– | 文件拥有组权限 |
group:westos:— | 特殊指定的用户组的权限 |
mask::rw- | 能够赋予特殊用户和特殊用户组的最大权限阀值 |
other::r– | 其他人的权限 |
注意:
当文件权限列表开启,不要用 ls -l 的方式来读取文件的权限。
3)acl 列表的控制
命令 | 含义 |
---|---|
setfacl -m u:lee:rw westosfile | 给lee 用户对于westosfile设定 rw权限 |
setfacl -m g:westos:rw westosfile | 给westos 组对于westosfile设定 rw权限 |
setfacl -m u::rwx westosfile | 给当前用户对于westosfile设定 rwx 权限 |
setfacl -m g::0 westosfile | 当前组对于westosfile 取消权限 |
setfacl -x u:lee westosfile | 删除列表中的lee 用户对于westosfile的权限 |
setfacl -x g:caiwu westosfile | 删除列表中的caiwu 组对于westosfile的权限 |
setfacl -b westosfile | 关闭对于westosfile的列表功能 |
4)acl 权限优先级
拥有者 > 特殊指定用户 > 权限多的组 >权限少的组 > 其他
5)acl mask 控制
mask是能够赋予指定用户权限的最大阀值
----rwx—+ 1 root caiwu 0 Apr 18 09:03 westosfile
当+出现时,此处为mask 的权限值,而不在代表组的权限值
当设定完毕文件的 acl 列表之后用chmod缩小了文件拥有组的权力
mask会发生变化,如果需要恢复的话需要用 setfacl -m m::权限 文件 ,来增加权限。
6)acl 列表的默认权限
setfacl -m u:lee:rwx /mnt/westosdir ##只对于/mnt/westosdir目录本身生效
setfacl -Rm u:lee:rwx /mnt/westosdir ##对于/mnt/westosdir目录和目录中已经存在的内容生效
以上的命令之针对已经存在的文件生效,新建文件是不会被设定的。如果需要被设定就要做以下操作。
setfacl -m d:u:lee:rwx /mnt/westosdir/ ##针对与/mnt/westosdir目录中新建文件生效
d: 表示只对新建立的起作用
当一个文件的权限全部关闭时,在超级用户的身份下还是可以新建以及删除文件和目录。
如下图所示 zxk 这个目录和目录中的文件的权限全部没有,但是超级用户还是可以删除该目录。
如何才能限制所有用户的权力,就需要用到 attr 命令。
attr 权限会限制所有用户
字符 | 含义 |
---|---|
i | 不能作任何的更改 |
a | 能添加不能删除 |
lsattr file | 查看文件attr权限 |
lsatter -d dir | 查看目录的权力 |
chattr +i /+a /-i/ -a dir /file | 设定attr权限 |
如图在 zxk 这个目录增加和减去 attr 的 i 权限后的一些操作,在增加了 i 权限后,不能删除也不能增加。