无论是在Linux下还是在Windows下想必大家都遇到过没有对文件操作权限的错误提示;因为在多用户,多任务的操作环境下,为了用户文件的保密性,文件权限的管理就很有必要了,在Linux中文件权限是如何定义和分类的,以及系统是如何管理各个文件之间权限的,我们如何更改文件的权限,下边我会做一个相应的介绍。
1、权限介绍:
文件权限顾名思义就是用户对文件操作的权限限制问题,在Linux中一个用户相对于一个文件的身份可以分为三类:user,group,others。举例来看我在一家公司的技术部工作,我写出了一项技术文件,那么我就是这个文件的user;我写出的这个文件要与我们技术部的人共享,那么我技术部的人相对于文件的身份为group,因为我们都是技术部这个组的;而如果销售部一个人需要这个文件,那么它相对于这个文件的身份就是others。
在Linux中文件的权限分为了这三种身份就是user(u),group(g),others(o),在命令模式下输入命令:ls –l 文件名,最前边的十个字符中的第一个用来标示文件类型,第2~4个字符代表user身份的权限,第5~7个字符代表group身份的权限,第8~10个字符代表others身份的权限,他们分别用r,w,x,- 进行表示,r代表读权限,w代表写权限,x代表可执行权限,- 表示无该权限;如下图所示。
2、更改权限;
如果我们想要更改文件的权限可以用chmod:对于命令的格式请看下边的表格,其中ugoa和rwx可以任意组合成相应的命令。
3、更改所有者与所属组:
如果需要更改文件的所有者身份和所属组可以用chown和chgrp命令,格式如下:
其实有时候感觉用rwx去表示权限或更改权限总感觉有些麻烦,其实我们可以用数字表示文件权限的,我们分别赋值rwx-为4、2、1、0,将相应身份的三个字符对应的值相加后的值就是其相应的权限值了,例如:- r w – r – x – wx ,user权限值为6,group权限值为5,others权限值为3,如此一来命令赋值就相当容易了吧,呵呵……
4、从默认权限到特殊权限:
上面对文件的权限有了一定的了解后,那么会有人问了,我要是创建一个文件我没有设定权限,它是怎么去设定好文件的权限的呢?!下边就是要说明的了,文件的创建都会有一个默认的权限,对于文件的默认权限为666,目录权限为777。但由于umask(权限过滤器的作用)我们得到文件的权限就改变了,其实我们可以设想umask也有一个权限值,它会将自身所存在的权限对应到文件上去,文件如果也存在该权限则会将其过滤掉,否则不会过滤,如此一来便形成了最终文件的权限特性,如下图所示。
其实除了上边的rwx之外还有一个特殊权限问题,即:SUID,SGID,SBIT。
·SUID:给用户user的x权限位置赋予s权限,用于给一般用户赋予和user相同的使用命令的权限。
·SGID:给文件夹所属组grop的x权限位置赋予s权限,使得在该文件夹下所创建的所有文件或文件夹都和该文件夹属于相同的组。
·SBIT:该命令只能作用于文件夹,给文件夹other的x权限文职赋予t权限,表示该文件夹下创建的文件或文件夹除了root和所有者外其他用户不可以删除。
赋值命令如下图所示: