linux是多用户操作系统,每一个用户在系统上都有一个唯一的id,这个id就是UID。
sh-3.2# id uid=0(root) gid=0(root) sh-3.2# |
id是一个数字,用户很难去记得一个数字到底对应的是哪个用户。
所以可以给每个用户分配一个用户名,这个用户名是用户敏感的。
用户名和UID的对应关系可以通过查看/etc/passwd知道,
sh-3.2# cat /etc/passwd root:x:0:0:root:/home:/bin/sh sh-3.2# |
linux系统还有群组的概念,每个用户在创建时可能就被指定到某个群组中。
而为了方便对群组的管理,所以也有了GID。
群组名和GID的对应关系可以通过查看/etc/group知道,
sh-3.2# cat /etc/group root:x:0:root sh-3.2# |
而群组又分为有效群组和初始群组,
用户所对应的初始群组可以查看/etc/passwd档案了解其中的对应关系;
用户所在的有效群组可以通过groups命令查看当前用户支援哪些群组。
sh-3.2# groups
root
sh-3.2#
以前一直搞不明白为什么文件权限是775,777,664或者是rwxrw-r-x之类的字串。
现在学习了用户和用户组之后,终于知道为什么了,还是挺开心的。
sh-3.2# ls -lh /etc/passwd -rw-rw-r-- 1 root root 31 Jan 3 12:55 /etc/passwd sh-3.2# |
在上面文件权限这一栏中,第一个字符用来标识档案的类型,
是正规文件,还是目录,还是管道,还是链接文件?
关于linux系统文件类型可以参考下面这篇文章,
http://blog.csdn.net/boyxulin1986/article/details/12655659
接下来三个字符表示的是文件所有者对文件所具有的权限;
在接下来三个字符表示的是文件所有者所在的群组所具有的权限;
在接下来的三个字符表示的是其它用户对文件所具有的权限。
所以如果想知道拥有某个指定文件的哪些权限,
必须要知道文件拥有者是谁,再查看用户与群组的对应关系。
这样再确定当前用户是文件拥有者、还是属于文件拥有者所属的群组还是其他用户。
注意:在多用户环境下,文件拥有者并不一定等于当前用户。