一、文件权限的设定
-rw-r--r--
第一个-是文件类型(-代表文件,d代表目录,|代表软链接文件)
关于后9位
rw-
r--
r--u所有者
g所属组
o其他人
r是读权限,w是写权限,x是执行权限
1、chmod
修改文件的权限
chmod [选项] 模式 文件名
选项
-R: 递归操作(赋予目录权限时,目录下所有文件都进行赋予权限)
模式
[ugoa][+-=][mode=421]
[ugo]和[+-]的方式不方便,需要知道文件的权限是什么,才能操作
a是all的意思,指所有人
文件所有者加上执行权限
chmod u+x cangls.av
文件所属组和其他人加上写权限
chmod g+w,o+w cangls.av
把上面给予的权限去掉
chmod u-x,g-w,o-w cangls.av
等于方式赋予权限
chmod u=rwx,g=rw cangls.av
以all和等于的方式赋予权限,即所有人一样的权限,不现实,不常用
chmod a=rw cangls.av
最方便的权限赋予方式
权限的数字表示
r ---- 4
w ---- 2
x ---- 1
例如:
rwx
r-x
r-x7
5
5
原因:
数字权限其实是用3位二进制表示的,其转换为十进制数对应的就是4,2,1
赋予文件最高权限
chmod 777 cangls.av
常用数字权限
777 --- 代表所有人都有最高权限
755 --- 执行文件的常用权限
644 --- 普通文件的常用权限
二、文件权限的作用
1、权限对文件的作用
r: 读取文件内容(cat more head tail)
w: 编辑、新增、修改文件内容(vi echo)
但不包括删除文件
x: 可执行
2、关于为什么有文件的写权限,却不能删除文件的问题解释
对于某个目录或文件拥有的权限,针对的是里面的内容,而不是文件本身
由此,对文件的删除是对文件所在目录的写,故必须有目录的写权限才可以
3、权限对目录的作用
r: 可以查询目录下文件名(ls)
w: 具有修改目录结构的权限。如新建文件和目录,删除此目录下文件和目录,重命名此目录下文件和目录,剪切(touch rm mv cp)
x: 可以进入目录(cd)
4、总结
对文件来讲: 最高权限是 x(执行)
对目录来讲: 最高权限是 w(写)
对文件要少赋执行权限,对目录要少赋写权限
对于目录的权限
对目录仅赋予读权限没有意义
对目录仅赋予执行权限没有意义
有意义的三种权限: 0(没有任何权限)、5(读和执行,基本权限)、7(读、写和执行,最高权限)
5、举个栗子哈(一步一步来看)
root下创建一个用户,并赋予密码
[root@localhost ~]# useradd user1
[root@localhost ~]# passwd user1
另外再登录一个shell,用户是user1
root下进入user1的家目录,并创建测试目录和文件
[root@localhost ~]# cd /home/user1
[root@localhost user1]# mkdir 123
[root@localhost user1]# touch 123/abc
此时目录123的权限是: drwxr-xr-x(755)
root下修改123目录的权限和abc文件的权限,使其他人的权限为0
[root@localhost user1]# chmod 750 123
[root@localhost user1]# chmod 640 123/abc
此时user1下不能进入123目录和查看123目录
root下修改123目录的权限,使其他人的权限为仅读
[root@localhost user1]# chmod 754 123
此时user1下不能进入123目录,但查看123目录乱码,不能用
root下修改123目录的权限,使其他人拥有基本权限
[root@localhost user1]# chmod 755 123
此时user1下能查能进入123目录,但是不能在里面创建、删除文件或目录,并且对abc文件没有读写执行权限
root下修改abc文件,使其他人拥有只读权限
[root@localhost user1]# chmod 644 123/abc
此时user1下可以读abc内容,但不能执行和修改
root下修改abc文件,使其他人拥有读写权限
[root@localhost user1]# chmod 646 123/abc
此时user1下可以读和修改abc内容,但不能执行,且不能删除此文件,因为123目录对于user1没开放写权限
root下修改123目录的权限,使其他人拥有最高权限
[root@localhost user1]# chmod 757 123
此时user1下可以在123目录下,创建和删除文件
6、我的总结
针对目录
755是最常用的权限设定方式,(目录所有者可以删除和创建目录下文件,其他人只能进入看看)
稍微严谨一点是750,其他人进都进不来
极端严谨一点是700,就我自己能进能看能改,其他所有拒之门外
针对普通文件
644是最常用的权限设定方式,(文件所有者能看能改,其他人只能看)
640是其他人不能看不能改
600是其他所有人不能看不能改
针对可执行文件
754是最常用的权限设定方式,(文件所有者可以看改执行,组内可以执行,其他人只能看)
750、740、700都是可以的
还有一点
文件所有者必须为7或者是6,要不就是傻逼
三、其它权限命令
1、chown
修改文件的所有者
chown 用户名 文件名
例如:
chown ds fengj.av
同时改变所属组
chown root:root fengj.av
2、chgrp
修改文件的所属组
chgrp 组名 文件名
例如:
chgrp group1 fengj.av
完全可以用chown改变所属组,因此这个命令作用就不是那么重要了
3、让用户对文件及目录拥有一定的权限
要求
拥有一个av目录
让加藤老师拥有所有的权限(7)
让本课程学员有查看的权限(5)
其他所有人不许查看这个目录(0)
4、总结
分配文件基本权限时,核心原则:
在最小权限情况下能够实现要求即可!
严谨不负责任的赋777这样的二逼权限!
四、文件默认权限
Windows在目录中创建文件是继承的目录权限,Linux则不是
1、umask
查看默认权限
umask
返回:
0022
第一位0: 文件特殊权限
022: 文件默认权限
文件默认权限
文件默认不能建立为执行文件,必须手工赋予执行权限
所以文件默认权限最大为666
默认权限需要换算成字母再相减
建立文件之后的默认权限,为666减去umask值
例如:
文件默认最大权限666,umask值022
-rw-rw-rw- 减去 -----w--w- 等于 -rw-r--r--
再例如:
文件默认最大权限666,umask值033
-rw-rw-rw- 减去 -----wx-wx 等于 -rw-r--r--
目录的默认权限
目录默认权限最大为777
默认权限需要换算成字母再相减
建立文件之后的默认权限,为777减去umask值
例如:
目录默认最大权限为777,umask值022
-rwxrwxrwx 减去 -----w--w- 等于 -rwxr-xr-x
修改默认权限
umask 0033
命令修改只是临时生效,想要永久生效需要修改/etc/profile文件
本作品采用《CC 协议》,转载必须注明作者和本文链接
我们是一群被时空压迫的孩子。 ---- 爱因斯坦