由于Linux是一种多用户多任务的操作系统,所以为了更有效率的团队开发以及系统的安全(防止用户删改系统重要文件),Linux就有了文件权限的概念。
1.先来了解一下用户和用户组:
在Linux中,任何一个文件都具有“拥有者(user)、小组(group)、其他人(others)”三种身份的某些权限。举个例子,一个班级被分成了A,B,C三个小组分别完成同一项作业,小明和小强被分到了A组,他们需要合作来完成作业,所以就可以互相查看对方的进度,这就是Group身份,但是他们除了作业相关的东西外,比如说日记,属于绝对的私人物品,就算他们在同一个组内页不能互相查看,这就是User身份,而因为ABC三个组的竞争关系,所以BC组的任何人都不能查看小明的作业,所以BC组的所有人都属于Others。ABC三个小组(Group)不能互相查看作业,但是他们的老师却可以随时查看他们作业的进度,所以老师同时属于ABC三个Group,也就是说,一个帐号可以支持多个Group。还有一点需要特别注意的是,Linux中还有一位“上帝”,root,它可以去它想去的任何地方,做它想做的任何事情,不管是创造还是破坏,所以要谨慎使用root身份。
2.关于文件权限
了解了用户和用户组后,来看一下文件权限。先看截图:
在终端执行 ls -al 得到如上截图(注:ls指“list”,参数“-al”指“all”,即显示所有文件详细信息)
来看这两行
drwxr-xr-- 4 root root 4096 9月 19 20:03 ..
第一列”drwxr-xr--“:
从第一个字符”d“开始看:
若第一个字符为”d“,则表示这是一个目录;
若第一个字符为”-“,则表示这是一个文件:
若第一个字符为”l“,则表示连接文件;
若第一个字符为”b“,”c“,则表示设备文件的区块设备和外围设备;
接下来的「 rwxr-xr--」:
三个为一组,第一组”rwx“代表拥有者的权限(User),第二组”r-x“代表同一用户组(Group)用户的权限,第三组”r--“代表其他人(Other)的权限,”r“指”read“代表可读,”w“指”write“代表可写,”e“指”execute“代表可执行,”-“则代表没有该权限。
PS:对于文件目录来说,显然它是不可能被执行的,所以他的”execute“代表着用户能否进入该目录
第二列”4“:
表示有多少个文件连接到这个结点。
第三列"root":
表示这个文件或者目录的User。
第四列”root“:
表示这个文件或者文件夹所属的用户组
第五列”4096“:
表示这个文件的容量,单位为B。
第六列”9月 19 20:03“:
表示这个文件创建或者最近修改的日期。
第七列”..“:
表示文件名,注意,如果文件名前面有一个”.“,表示这是一个隐藏文件。
3.改变文件属性和权限:
chgrp :改变文件所属用户组(change group)<chgrp 小组名 文件名>
chown:改变文件所有者(change owner) <chown 帐号名 文件名>
chmod:改变文件权限
chmod改变文件权限有两重表示方式:
1)数字类型改变:
rwx分别可由数字4,2,1代替。即”rwx“为4+2+1->"7"
chmod 777 a.txt #表示将a.txt的权限改成”rwxrwxrwx“
2)字符类型改变:
由u(User),g(Group),o(Others),a(All)以及”+“,”-“,”=“来设置
chmod u=rwx,go=r a.txt #表示将a.tst 的权限改成”rwxr--r--“
chmod a-x b.txt #表示将b.txt的所有可执行权限都去掉
4.需要注意的点
在Linux中,文件权限决定着基本的文件操作规则,而对于文件和目录来说有几点需要注意:
”r“(read):
文件:”r“权限指的是可读取文件的内容
目录:代表是否可以查询该目录下的文件名(是否可以ls显示)
”w“(write):
文件:是否可以对文件进行”增、改、查“(注意,不能删除文件)。
目录:是否可以改变目录的结构(包括删除文件,重命名等)。
”e“(execute):
文件:是否可以被系统执行(但有e权限的文件不一定是可执行文件)。
目录:用户是否可以进入该目录。
个人学习笔记,纯手打,如有错误欢迎指正~