Linux 笔记分享八:文件权限的设定
一、文件权限的设定
-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-x |
---|---|---|
7 | 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 协议》,转载必须注明作者和本文链接
推荐文章: