前言:入手linux,权限模型是必须要先拿下的。小聊一下。
从实践入手,先有个大致印象:
ls -l
可以看到以下文件属性(随便找一个目录):
drwxr-xr-x 2 root root 4096 8月 11 01:47 libvte-2.90-9/ lrwxrwxrwx 1 root root 22 9月 12 02:50 libvte2_90.so.9 -> libvte2_90.so.9.3200.1 -rw-r--r-- 1 root root 640344 4月 17 2012 libvte2_90.so.9.3200.1
下面描述一下Linux权限模型:
在Linux系统中,用户被分成三类:1,当前用户;2,和当前用户同属一组的用户;3,其他用户。(对应于前面的三组“rwx”)
一个用户既可以属于一个组,也可以属于多个组。
一个文件同时属于:1,用户;2,用户组;(对应于前面的两个“root”,一个表示用户,一个表示组)
Linux中的一个文件在正常情况下属于一个用户所有,将此用户称为文件的所有者(也称属主)。而将一些用户按某种规则分在一个组内,设置此组对文件操作的权限,这个组为文件的所属组。不属于这两个范畴的用户,统称为其他人(others)。
RWX对文件和目录的不同解读:
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限,否则可以进入目录,但不能读取目录下文件列表。
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录来说该用户具有进入目录的权限,否则可以浏览,但不能进入。
权限设置修改操作:
1,每个用户都拥有自己的专属目录,通常集中放置在/home目录下,这些专属目录的默认权限为rwx------:表示目录所有者本身具有所有权限,其他用户无法进入该目录。
2,执行mkdir命令所创建的目录,其默认权限为rwxr-xr-x,用户可以根据需要修改目录的权限。
3,用户登录系统时,用户环境就会自动执行umask命令来决定文件、目录的默认权限。
umask:设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。umask是从权限中“拿走”相应的位,且文件创建时不能赋予执行权限。比如:umask 777,则权限值为000.
4,chmod和数字来改变权限
chmod [-cfvR] [--help] [--version] mode file
mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
例子:1.txt设为所有人都能读取:
chmod ugo+r 1.txt 或 chmod a+r 1.txt
chmod用数字来表示权限如 chmod 777 file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。
一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理。
例如:
chmod 777 /home/user 注:仅把/home/user目录的权限设置为rwxrwxrwx chmod -R 777 /home/user 注:表示将整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx