Linux系统中的每个文件和目录都有访问许可权限,用他来确定谁能通过何种方式对文件和目录进行访问和操作。 文件或目录的访问权限分为读,写和执行三种。
可读权限用 r 表示:对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
可写权限用 w 表示:对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
可执行权限用 x 表示:对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。三种权限又分别对应文件的不同的访问者(即谁在访问此文件),一个文件被不同的访问者访问,他所拥有的权限是不同的。而访问者又分为三种:(1.)所有者u---User (2.)所属组g---Group (3.)其他用户:o---Others
这些关系可用下图表示:
在liunx终端中我们使用命令可以显示当前文件的详细信息:
举个例子:
我们先用touch 命令创建一个文件: touch test
然后使用ls命令可查看此文件创建成功:
我们也也用ll命令直接查看此文件的详细信息!!
先看此文件的信息的前十个字符:从第二个以后都和权限相关,而第一个为文件所属的类型(由于这里主要是谈权限问题,就不过多叙述了);
表示权限从第二个开始三个为一组。
即:
即上面test文件对所有者具有可读可写权限,无可执行权限;
所属组具有可读可写权限,无可执行权限;对其他普通用户只具有可读权限,无写和可执行权限。此文件属于wrngt用户;所属组也为wrngt。
那么,清楚了文件的类型和对不同的用户所具有的权限以及文件所属,该如何修改这些属性呢?
1.修改权限
使用chmod命令;
格式:
chmod u/g/o + (-) 所要修改的权限 文件名。(注:在linux中u---User(所有者) ;g---Group(所属组) ;o---Others(其他用户),而加减代表增加权限或取消权限)。
假如对上面那个test文件我们要增加所有者的可执行权限;
(1.)我们可以在命令行敲入:chmod u+x test
同时,我们要取消某个类型使用者的权限:
chmod u-r test
即通俗的说就是对不同类型的使用者做加法或减法。。。
同时我们也可一次修改两个权限:chmod o+wx test
(2.) 除了可以使用上面那种格式外,我们也可采用二进制的思想:上面每种不同权限都只有两种可能,即具有此权限和无此权限。在Linux中可用1代表具有,0代表无,即修改权限也可一次修改所要权限:chmod 000000000 test chmod 111111111 test
等命令进行设置,简单起见,也可用二进制的十进制值来进行设置。。。
2.修改所有者和所属组
修改拥有者:chown 拥有着 文件名;
例子:
同理:修改所属组权限:chgrp 所属组 文件名
例子:
( 注:修改所有者或所属组需进root超级用户)
3.默认权限。
在我们创建文件或目录时,Linux会给一个文件或目录一个默认的权限,那这个权限是多少呢??
在当前用户下使用命令:umask 系统将会显示一个值;
在liunx中对于文件来说由于,它的最大权限为666;对于目录来说由于它的最大权限即为777;
计算默认权限时用最大权限减去umask显示出的值即可。
在不同的权限下创建的文件或目录是不同的。
举个例子
普通用户下:
即假如我要新创建一个目录,它的权限即为777 - 002 = 775
创建一个文件,它的权限即为666 - 002 = 664
在root超级用户下同样如果要计算默认权限,先用umask指令找出它要减的值,在进行计算,因为在不用的用户类型下它的默认值是不同的。。。
当然,默认权限我们也可进行修改,当我们要修改时
直接用umask+(在计算时减去值即可,比如刚才0002);
即修改目录默认值为555了。。
(注:运行平台为centos6.5)