一、ls命令
1、文件类型:文件类型是“-”表示这是一个普通文件;
d 表示这是一个目录 c 表示这是一个字符设备 s 表示 套接字 p 表示 管道 b 表示 快设备 l 表示 连接
2、文件权限:文件权限是rw-r--r-- ,表示文件属主可读、可写、不可执行;文件所归属的用户组不可写,可读,不可执行;其它用户不可写,可读,不可执行。
r-- 表示所有组的权限
r-- 表示其他的权限
(1)rwx对于文件代表的意思:
r=read 可读取文件的实际内容 ;
w=write 可以编辑、新增或者是修改该文件的内容 ;
x=execute 该文件具有可以被系统执行的权限;
(2)rwx对于目录代表的意思
r :能读文件清单内容,能读到目录下有那些文件;
w :能修改目录内容,简单的讲能删除、新建目录或文件;
x :指能切换至该目录成为工作环境。但此时能不能做什么事情要看你的w权限是否有。
3、“ 1 ”
对文件:文件内容被系统记录的次数
对目录:目录中文件属性的字节数
4、文件属主:也就是这个文件归哪于哪个用户 ,它归于root,也就是第一个root;
5、文件属组:也就是说,对于这个文件,它归属于哪个用户组,在这里是root用户组;
6、“2005 Apr 3 04:07 ”:这里的时间是最后访问的时间,最后访问和文件被修改或创建的时间,有时并不是一致的;
7、file:文件名称
当然文档的属性不仅仅包括这些,这些是我们最常用的一些属性。
二、文件、目录的所有人、所有组修
1、chown username filename|directory
![](https://i-blog.csdnimg.cn/blog_migrate/65327107fd6a0248b115391ab85ad500.png)
2、chown username.groupname filename
![](https://i-blog.csdnimg.cn/blog_migrate/85d3f7627a42f44aaeb59d5d919d59da.png)
3、chown -R username filename
更改目录本身及里面所有内容的所有人
4、chgrp -R groupname dir
更改目录本身及里面所有内容的所有组
三、对文件或目录权限的修改
1、字符的方式修改文件或目录的权限
chown [-R] <u|g|o><+|-|=><r|w|x> filename |directory
(1)chmod u-x file1
file拥有者去掉x权限
(2)chmod g+w file1
file拥有组添加w权限
(3)chmod u-x,g+w o-r file
file拥有者去掉x权限,file拥有组添加w权限,file其他去掉o权限
(4)chmod ug-r file
file的用户组去掉r权限
(5)chmod ugo+r file
file用户、组、其他人增加r权限
2、数字方式修改该文件权限
(1)在linux中
r=4; w=2; x=1;
(2)文件权限数字表示方式
rw-|r--|r--
u g o
u=rw-=4+2+0=6
g=r--=4+0+0=4
o=r--=4+0+0=4
所以文件系统初始默认权限表示为:644
chmod 修改后权限值 file
chmod 777 file
使用 chnod 777 file 让文件file为最高权限
修改为777后:
三、系统默认权限的设定
从系统存在的角度来讲,开放的权利越大,系统的存在意义越高,但是从系统的安全角度来讲,开放的权利越少,系统的安全性越高,所以系统在设定新建文件或目录会去掉一些权限。
系统权限的满值为777。umask 是系统在新建文件或目录时保留的权利大小(即系统给文件的权限则为777-umask,umask的值越大,系统创建的文件的权限越小)。
1、查看系统保留权限默认值
umask #查看系统保留权限的默认值(未经过改动一般为022)
2、暂时设置文件权限
umask 077 #将系统的保留权限值设置为077,但是此种方法只是临时设置,只在当前shell中有效
3、永久更改系统保留权限默认值
vim /etc/bashrc
70 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
71 umask 002 ##普通用户umask
72 else
73 umask 077 ##超级用户umask
74 fi
vim /etc/profile ##系统
59 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
60 umask 002 ##普通用户umask
61 else
62 umask 077 ##超级用户umask
63 fi
以上两个文件umask设定值必须保持一致
source /etc/bashrc
source /etc/profile
让设定立即生效(执行以上两条命令设置才会生效,本作者因没有执行命令耽误了很多时间,此处红字也是在提醒自己)
但是我们在建立新的文件时会发现我们依旧没有可执行权力,这是因为系统为了安全会,无论在任何时候新建文件,都会默认的将文件的可执行权限去掉。
四、文件的访问控制(acl列表)
1、acl定义
acl = access control 它用来指定特殊用户对特殊文件有特殊权限。
当我们使用 ls -l directory命令的时候 我们就会获取directoy文件夹的所有属性列表和所有者、所有组等
等信息 ,"drwxrwx ---+",中的“+”就代表权限列表已经被激活,
这里的“.”不代表权限,它代表权限列表未被激活。当“+”存在时,我们使用getfacl命令 来获取文件的访问控制列表(权限列表)
使用方法 : getfacl [参数] filename|directory
-a 显示访问控制列表
-d 仅显示默认的访问控制列表
-c 不显示注释表头
-e 显示所有有效权限
-E 显示无效权限
-R 递归显示子目录
如果我们看到 test权限列表已经别激活(+),使用 getfacl -a filename|directory 查看权限列表,
注意:当文件上有权限列表时,ls -l 能看到的权限是假的
# file: test #文件名称
# owner: root #文件所有人
# group: root #文件所有组
# user::rwx #拥有者权限
# user:student:rwx #特殊用户权限
# group::r-x #组权限
# mask::rwx #权限掩码
# other::r-x #其他人权限
2设定acl列表
setfacl -m <u|g>:<username|groupname>:权限 文件|目录
-m #设定
u #用户
g #组
我们使用下面的命令删除列表中的特殊用户或特殊组的权限
setfacl -x <u|g>:<username|groupname> 文件|目录
setfacl -b 文件|目录 #关闭列表
3、acl mask值
mask 权限掩码,一般用来对特组权限和殊权限进行限制的,用来表示能够赋予用户最大权限,当时用chmod改变文件普通权限时可能会被破坏,我们使用下面的命令行修复
setfacl -m m:rwx filename|directory #对文件的读写权限进行限制。
4、acl 默认权限
当我们需求某个目录对于student可写,并且目录中新建的子目录对student也可写。
注意:就要设定默认默认权限认权限只对目录中新建立的文件或者目录生效,对已经建立的文件无效,对于目录本身也无效。
setfacl -m d:u:student:rwx directory
五、特殊权限
1、suid
chmod u+s file
chmod 4xxx file
SUID 的值是 4
下面我又对“g”“o”进行测试
2、sgid
(2)对目录:
当目录有sgid权限后,目录中新建的所有文件的所有组都自动归属到目录的所有组
之中,和文件建立者所在的组无关
(3)设定方式:
chmod g+s file|dir
chmod 2xxx file|dir
理论上locate命令普通用户不可以执行,但是因为,locate拥有SGID权限,所以locate生成进程时候,这个进程会得到locae命令的用户组权限,相当于student用户被临时加入了slocate这个组,因此student对这个文件拥有了r权限。
对于目录,当目录有sgid权限后,目录中新建的所有文件的所有组都自动归属到目录的所有组之中,和文件建立者所在的组无关。
例如:当我们在团队在某个目录下共同工作来做一个项目时,那么团队成员都得对这个目录下的所有文件具有rwx权限,当我们有A、B、C、三个用户属于不同组时,但都在同一个目录下工作,我。当用户A创建了一个权限为770的文件后,B、C用户的无法访问这个文件,这个时候我们可以对该工作目录加入SGID权限,那么目录中的所有新建文件的归属组就属于目录的所有组之中,由于其他用户和目录属于同一个组,其他用户也可以对该文件进行读写执行操作。
3、SBIT
只针对目录有效,当用户对目录拥有wx权限时,用户在该目录创建的文件或目录只有自己与root用户才可以删除 ,SBIT = 1,SBIT在其他用户权限本应该是x的地方显示位t
设定方式
chmod o+t directory
chmod 1777 directory