在Linux下执行命令:$ls -l, 返回结果为:
图1
从图里可以看到第一列十个“-”,第一个显示文件属性,默认是单个文件,d表示是文件夹,第二列表示数量。后面的九个“-”分三组,每组三个一组,每组三个分别代表读,写,执行权限。字母表示就是"r", "w", "x", 如果显示是“-”表示没有对应的权限。这三个组分别代表“创建者权限”,“指定用户组权限”,“其它用户组权限”, 上图中第一行的bask.sh是root创建,所属root组。这表示创建者root有读和写的权限,root组的用户只有读的权限,其它用户也有读的权限。第三列表示文件所有者,第四列表示组所有者,第五列是大小,后面是创建日期。
理解了上面的文件权限概念,下面来说说如何修改权限。修改权限有两种方式。
1、一般方式
$chmod u+x file # 创建者 添加可执行权限
$chmod g+x file # 用户组 添加可执行权限
$chmod o+x file # 其它用户添加可执行权限
$chmod u-w file # 取消创建者写权限
2、数字方式
图2
上面这张图是我找的,通过这张图可以更容易的理解数字方式的权限设置。总共三种权限 对应于:r —— read —— 4
w —— write —— 2
x —— execute —— 1
所以想改什么权限非常容易
$chmod 761 file
修改文件的拥有者和组
$chown username file
$chgrp groupname file
上面是修改单个文件执行这个命令就可以了,如果是整个文件夹遍历方式修改权限的话,加-R参数。
修改文件创建默认权限
#chown 2751 file
#chgrp 2751 dir
当用户在所在文件下新建一个文件,默认权限可以通过上面命令修改,其中2就是掩码,那以后用户在所属文件下新建文件的权限为775。这个是如何计算的呢。
单个文件的范围是:000 - 666
单个文件夹的范围是:000-777
第一步:
not(2) 对应是 775
第二步:
775&777 得出775
单个文件同样的道理,那如果部创建文件的话默认umask可以通过修改~/.bashrc 对应的umask 值。
Linux说一切都是文件,所以文件的权限问题是很重要的,看似简单,其实是很多问题的根源,比如当打开eclipse的时候,你是以普通用户user打开的,但你把一个user不拥有读权限的文件夹指定为工作目录,eclipse是会抛出打开文件失败异常。还有很多例子,需要自己慢慢体会这中间的道理。
参考:
http://www.technobol.com/how-to-check-file-permissions-in-linux-os/
http://www.linuxnix.com/2011/12/umask-define-linuxunix.html