大家好,今天我们来说一说Linux下的一些权限知识.
文件的权限:
文件权限对用户分类
u(文件所有者) , g(文件所属组) , o(其他用户)
权限对具体操作的分类
r(可读) , w(可写) , x(可执行)
权限命令:
1. umask 查看/设置文件的创建权限掩码
实际权限 = 给定权限 & (~umask)
例如:
我们在file目录下创建一个bcd文件,ll插看一下详细信息,我们发现它的权限是664,那位什么是664而不是777呢,根据我们上面给的,实际权限 = 777 & (~002) = 775,那为什么又变成664了呢,是因为我们创建的文件的默认权限属性和目录不一样,因为文件一般用于数据的记录,所以它并不具有可执行权限x,所以我们明白了,775减去可执行权限x则就成了664,这就是umask的作用.
2.chmod 改变权限
chmod 777 filename 通过八进制数字修改
chmod u/o/g +- r/w/x filename 增加/删除制定用户的指定权限
chmod a-r/w/x filename 删除所有用户的指定权限
chown username filename 修改文件所有者
chgrp groupname filename 修改文件所属组
chmod +t filename 设置沾滞位(一个目录如果被设置了沾滞位,那么其他用户在目录下进行操作的时候,可以创建文件,删除自己的文件,但是不能删除别人的文件)
知道了这些基本的权限命令,我们再来看一些实际的问题
在目录中执行cd,touch,ls,rm,mv等命令时,需要哪些权限呢
1.cd(进入一个目录)
我们首先创建一个目录bcd,设置他的权限为000,这是我们想要进入它,可以看见,没有权限,接下来我们分别user加上可读可写可执行权限再来看看.
我们分别加上r w x 权限,可以看见加上x权限之后,我们才可以进入bcd目录,所以我们可以知道,进入一个目录需要可执行权限x.
2.touch(在目录中创建一个文件)
我们先让bcd只具有可执行权限,创建一个文件a,发现没有权限,再加上可读权限,创建文件a,发现还是没有权限,然后加上可写权限w,然后创建文件a.发现创建成功了,这样我们得知,要在目录中创建一个文件,需要的是可写权限,当然也需要可执行权限,要不然不能进入目录.
3.ls(列出当前目录文件内容)
我们先将bcd目录的权限设置为仅具有可执行权限,然后ls查看,发现没有权限,然后我们加上可读权限,ls查看,显示了内容,那么说明,想要查看当前目录文件内容,需要r可读权限,同上,需要x可执行权限,才能进入目录.
4.rm(删除普通文件)
同上,先将权限设置为100,删除文件a,没有权限,我们加上r权限,还是不能删除,去掉r权限加上w权限,发现删除成功,由此我们可以看出来,要在目录中删除文件,需要wx权限.
5.mv(修改文件名/移动一个文件)
同样,我们先将bcd的权限设为100,然后mv a b,没有权限,加上可读权限r,还是操作不了,然后加上可写权限w,可以操作了,我们则会得知,在目录中执行mv ,需要wx权限.
总结:
在目录中执行:
1.cd 需要x权限
2.touch 需要wx权限
3.ls 需要rx权限
4.rm 需要wx权限
5.mv 需要wx权限