一、文件为什么需要权限?
- 保证系统安全。防止阿猫阿狗都可以使用root权限重启、删除用户和文件等操作。
- 团队开发软件和数据共享。
这里我想从系统安全和隐私角度说一下文件权限的重要性。虽然我们都在一台主机上工作,但是我不希望任何人看到我的日记之类的文件(私人权限);在团队开发过程中,隶属于一个团队的开发人员,可以访问、使用具有团队权限的文件(小组权限);此时有个来自其他小组的人员,这时候在阐述的就是非小组成员权限(其他权限)。当然Linux中有更加专业的名称,依次是所有者权限、小组其他人权限和其他组成员权限。这里有个非常bug的人员叫做root,就算是私人文件也没法保密。
二、一个例子理解文件属性当我们在终端输入 ls -al
可以看到如下的打印: 从左到右分别是:
[权限][链接][所有者][用户组][文件大小(字节)][修改日期][文件名]
。
-rw-r--r-- 1 junw junw 3771 Dec 27 16:44 .bashrc
这一行告诉我们文件的:
- 权限
-rw-r--r--
:一共十个字符,第一个代表文件类型。-
文件,d
目录、l
连接、b
可存储设备、c
串行设备(鼠标键盘),之后的九个字符分为了三组,分别表示r
读w
写x
可执行或者可进入,如果该项没有权限,则会用-
占位; - 链接
1
表示多少文件名链接到这个文件 - 所有者
junw
,文件的拥有者是junw - 用户组
junw
,文件属于用户组junw - 文件大小(byte,B)
3371
,字节大小是3771
- 修改日期
Dec 27 16:44
文件最近于十二月二十七日16点44分被修改 - 文件名
.bashrc
,文件名是.bashrc
我们通过三组命令来修改文件权限,分别时chgrp
chown
chmod
,-R选项递归应用此规则。
chgrp users .bashrc # 把.bashrc的组别改为users
chown bin .bashrc # 把文件的所有者改为bin
chmod有两种方式:数字设置或者字母。
- 字母方式
u
g
o
a
说明权限作用身份及其组合,user、group、other或all,权限是加入+
去除-
还是设置=
,设置的结果及其组合r
w
x
。
chmod go=rw u=x .bashrc # go 读写权 u 执行权
chmod a-x .bashrc #去除所有可执行权限
chmod a+x .bashrc # 所有的都增加可执行权
Tips:不写u g o a
也可以,a
是其默认值,最简单的应用就是给一个刚编好的脚本赋予可执行权限chmod +x eee.sh
- 数字 数字相对没有那么直观,但是如果你熟悉十六进制的话,相当好理解。权限一共就九个字符,假设有效为1,无效为0,那么这九个字符就可以转换成二进制,如
rwxrwx-w-
,对应的二进制为111111010
换成十六进制则为772
,使用命令完成权限设置:
chmod 772 .bashrc
因为三位二进制只能表示0-7的十六进制,So,所有权限开启的命令为chmod 777 .bashrc
一个文件r w x权限表示可读、可写、可执行,对应目录则需要额外说明一下:
- r 读取文件结构列表权限
- w 修改文件结构列表权限
- x 切换到此目录的权限
w权限体现在:
- 新建文件和目录
- 删除已存在的文件和目录
- 重命名已存在的文件和目录
- 转移目录内的文件、目录位置
[1] 鸟哥. 鸟哥的Linux私房菜,基础学习篇[M]. 人民邮电出版社, 2010.