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# |
在上面文件权限这一栏中,第一个字符用来标识档案的类型,
是正规文件,还是目录,还是管道,还是链接文件?
http://blog.csdn.net/boyxulin1986/article/details/12655659
接下来三个字符表示的是文件所有者对文件所具有的权限;
在接下来三个字符表示的是文件所有者所在的群组所具有的权限;
在接下来的三个字符表示的是其它用户对文件所具有的权限。
所以如果想知道拥有某个指定文件的哪些权限,
必须要知道文件拥有者是谁,再查看用户与群组的对应关系。
这样再确定当前用户是文件拥有者、还是属于文件拥有者所属的群组还是其他用户。
注意:在多用户环境下,文件拥有者并不一定等于当前用户。
查看当前用户的方法是:
sh-3.2# id uid=0(root) gid=0(root) sh-3.2# |
查看文件拥有者的方法是:
sh-3.2# stat /etc/passwd File: "/etc/passwd" Size: 31 Blocks: 1 IO Block: 4096 regular file Device: fe00h/65024d Inode: 985 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2014-01-03 12:55:32.000000000 Modify: 2014-01-03 12:55:32.000000000 Change: 2014-01-03 12:55:32.000000000 sh-3.2# |
最后再了解一下文件权限中的sticky bit。
sh-# ls -ld /tmp/
drwxrwxrwt 5 root root 1020 Jan 1 00:03 /tmp/
sh-#
这个权限t就是目录或档案的sticky bit。
linux系统中的sticky bit只对目录有效,对文件设置sticky bit是没有意义的。
而对目录设置sticky bit的作用是:
对于目录中已有的文件,只有文件的owner和root有权限删除;
任何用户都可以在这个目录下创建或修改文件。
这样对于多用户环境而言,就不用担心档案被其它用户删除了。
增加sticky权限的方法如下,
sh-# mkdir ./temp sh-# ls -ld ./temp/ drwxr-xr-x 2 root root 40 Jan 1 00:21 ./temp/ sh-# sh-# chmod +t ./temp/ sh-# sh-# ls -ld ./temp/ drwxr-xr-t 2 root root 40 Jan 1 00:21 ./temp/ sh-# sh-# umask 0022 sh-# |