Linux 下文件系统权限控制及管理
很久没写日志了,呵呵,因为一直在享受人生中最后的自由时光……
LINUX 下权限管理的文章很多了,但一直以来,我都只是会用chmod 777 -R .. ,近来认真研究了一下,发现,其实原理明白了,就非常简单了。
首先,先明确一下,文件和文件夹都是带有两个权限属性的,一个是属于谁,一个是属于哪个用户组。比如
zhangyufeng@zhangyufeng-laptop:/media/ZYF$ ls -la
总用量 720
drwxrwxrwx 1 root root 36864 2009-06-09 16:32 .
drwxrwxrwx 1 root root 0 2009-06-09 17:54 ..
-rwxrwxrwx 1 root root 504 2009-03-12 00:33 01.htm
-rwxrwxrwx 2 root root 2301 2009-03-12 00:33 01.html
-rwxrwxrwx 1 root root 772 2009-03-26 22:25 02.htm
-rwxrwxrwx 1 root root 777 2009-03-26 22:25 03.htm
-rwxrwxrwx 1 root root 475 2009-04-12 16:37 04.htm
-rwxrwxrwx 1 root root 448 2009-03-12 00:33 38.htm
……
总用量 720
drwxrwxrwx 1 root root 36864 2009-06-09 16:32 .
drwxrwxrwx 1 root root 0 2009-06-09 17:54 ..
-rwxrwxrwx 1 root root 504 2009-03-12 00:33 01.htm
-rwxrwxrwx 2 root root 2301 2009-03-12 00:33 01.html
-rwxrwxrwx 1 root root 772 2009-03-26 22:25 02.htm
-rwxrwxrwx 1 root root 777 2009-03-26 22:25 03.htm
-rwxrwxrwx 1 root root 475 2009-04-12 16:37 04.htm
-rwxrwxrwx 1 root root 448 2009-03-12 00:33 38.htm
……
在这里,每个文件都是属于root用户,也属于root用户组,如果这个时候,有一个属于root用户组的用户 zhangyufeng 来操作01.html,会不会有权限呢?
答案是不一定有,因为属于root用户,root用户可以没有权限,(执行 chmod u-w,u-r 01.htm 就可以让root用户没有权限),看起来好复杂,呵呵,其实很简单哦。
chmod 命令是相对于现在文件所属于的用户及用户组的…… 例如:
相对于01.htm来说:
给root用户加读权限 chmod u+r 01.htm 咦,命令中没有出现root字样哦,是啊,这里的u就是指的文件所属于的用户啦,详解:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置 mode 所表示的权限可用下述字母的任意组合:
r 可读。
w 可写。
x 可执行。
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。
方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
t 保存程序的文本到交换设备上。
u 与文件属主拥有一样的权限。
g 与和文件属主同组的用户拥有一样的权限。
o 与其他用户拥有一样的权限。
明白了吧! 其实原理就是这么简单。
那么,我想给zhangyufeng 用户操作01.htm的权限,咋办? 呵呵,最爽的办法是把zhangyufeng用户加到root用户组里……然后再 chmod g+w,g+r 01.htm
另外,还不得不说一下chgrp 和 chown 这两个命令,chgrp是修改文件属于的用户组,chown 是修改文件属于的用户,使用很简单,大家 --help就成啦,呵呵。