文件权限与属主属组管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件权限与属主属组管理相关的知识,希望对你有一定的参考价值。
写在前面:
博客书写牢记5W1H法则:What,Why,When,Where,Who,How。
本篇主要内容:
● 文件及目录基本权限;
● 文件及目录属主属组设置;
● umask含义与设置
本篇涉及命令列表:
⊙ chown
⊙ chgrp
⊙ chmod
⊙ umask
进程安全上下文:
进程通常是由用户发起,运行程序文件产生的,此进程以用户的身份运行,那么运行进程的用户权限就是进程的权限了。
而当进程去访问文件时,系统就可以根据运行进程的用户身份来判断进程拥有那些权限了:
判断进程的发起者是否为文件属主---->是---->以属主身份来访问,应用属主权限;否---↓↓↓
判断进程的发起者是否为文件属组成员--->是--->以属组身份来访问,应用属组权限;否---↓↓↓
以“其他”身份来访问,应用“其他”权限。
(linux系统设置了一些特殊权限:factl、suid、sgid、sticky,设置这些权限的文件不适用以上说法)
用ls -l命令查看文件权限可以看到:
[roo[email protected] ~]# ls -l total 4 -rw-------. 1 root root 2639 Mar 4 02:58 anaconda-ks.cfg drwxr-xr-x. 2 root root 43 Mar 8 18:49 shell drwxr-xr-x. 2 root root 32 Mar 8 02:33 test
(1)文件系统的文件权限是对属主(owner,u)、属组(group,g)、其他(other,o)三种身份来设置的;
(2)每一种身份都包含了rwx三种权限(可读、可写、可执行);
(3)文件本身有属主和属组;上面属主和属组分别为root;
在linux中,文件与目录的rwx权限所对应的意义不太相同:
文件:
r:可获取文件的数据;
即可以用less、more、cat等命令查看文件内容。
w:可修改文件的数据;
即可以用vi等编辑器对文件的数据进行修改。
注:对文件的删除、mv权限看的是上级目录是否有wx权限,跟文件本身权限无关;而cp本目录文件到本目录涉及到在目录新建文件和读取文件两步操作,所以需要上级目录的wx权限,以及文件的r权限。
x:可将文件运行为进程;
即如果文件支持,可以作为程序运行。
目录:
r:仅可以查看内容列表;
即可以使用ls等命令查看目录内的文件列表。但不能使用ls -l命令查看目录内文件列表的详细信息,也不能cd到目录内。
w:可修改此目录下的文件;
即可以在目录下创建、删除文件(前提是必须有x权限)。注意cp、mv命令也属于在目录下新建和删除文件操作的。cp目录下文件到其他目录只需要rx权限。
x:可以查看详细内容列表;
有x权限就可以cd到目录内,如果要使用ls -l命令查看文件列表详情,则需要r权限。
rwx权限组合机制:
事实上,rwx的权限在linux中是以二进制存储的,我们也可以使用八进制来表示rwx权限的任意组合:
rwx权限 | 二进制表示 | 八进制表示 |
--- | 000 | 0 |
--x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r-- | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
由此,上述目录的ugo权限用八进制可以表示为:755
权限管理命令:
属主属组信息(ownership)修改:(仅管理员有权限)
修改属主:chown
修改属组:chgrp
文件权限(permission):(仅属主有权限)
chmod
命令详情:
chown
change file owner and group
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
-R, --recursive:递归修改
命令实例:
#修改hello文件的属主为fred用户,属组为fred组。也可以将“:”用“.”替换。
chown fred:fred hello
#递归修改dir目录及其内的所有文件属组为fred
chown -R :fred dir
#将hello的属主属组信息修改为.bashrc文件的属主属组
chown --reference=.bashrc hello
chgrp
change group ownership
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
用法与chown非常类似,参考chown实例。
chmod
change file mode bits
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
-R, --recursive:递归修改
(1)chmod [OPTION]... MODE[,MODE]... FILE...
可以使用ugoa分别表示属主、属组、其他、所有用户来对文件或目录进行权限修改。并可以使用+-=来分别表示增加、移除、赋予相应权限。
实例:
#设置file1文件的属主权限为rw:
[[email protected] mageedu]$ ls -l file1 -r-xrw-r--. 1 mageedu mageedu 0 Mar 8 21:45 file1 [[email protected] mageedu]$ chmod u=rw file1 [[email protected] mageedu]$ ls -l file1 -rw-rw-r--. 1 mageedu mageedu 0 Mar 8 21:45 file1
#为file1文件的属组去除r权限:
[[email protected] mageedu]$ ls -l file1 -rw-rw-r--. 1 mageedu mageedu 0 Mar 8 21:45 file1 [[email protected] mageedu]$ chmod g-r file1 [[email protected] mageedu]$ ls -l file1 -rw--w-r--. 1 mageedu mageedu 0 Mar 8 21:45 file1
#为dir1目录及其目录内文件目录的“其他”用户增加w权限:
[[email protected] mageedu]$ ls -ld dir1/ drwxrwxr-x. 2 mageedu mageedu 18 Mar 8 21:50 dir1/ [[email protected] mageedu]$ ls -l dir1/ total 0 -rw-rw-r--. 1 mageedu mageedu 0 Mar 8 21:50 file2 [[email protected] mageedu]$ chmod -R o+w dir1/ [[email protected] mageedu]$ ls -ld dir1/ drwxrwxrwx. 2 mageedu mageedu 18 Mar 8 21:50 dir1/ [[email protected] mageedu]$ ls -l dir1/ total 0 -rw-rw-rw-. 1 mageedu mageedu 0 Mar 8 21:50 file2
#为file1文件的属主属组去除w权限:
[[email protected] mageedu]$ ls -l file1 -rw--w-r--. 1 mageedu mageedu 0 Mar 8 21:45 file1 [[email protected] mageedu]$ chmod ug-w file1 [[email protected] mageedu]$ ls -l file1 -r-----r--. 1 mageedu mageedu 0 Mar 8 21:45 file1
(2)chmod [OPTION]... OCTAL-MODE FILE...
可以使用八进制数字的方式一次性为属主属组和其他用户设置权限。
实例:
#直接为file1文件设置rw-rw-r--权限:
[[email protected] mageedu]$ ls -l file1 -r-----r--. 1 mageedu mageedu 0 Mar 8 21:45 file1 [[email protected] mageedu]$ chmod 664 file1 [[email protected] mageedu]$ ls -l file1 -rw-rw-r--. 1 mageedu mageedu 0 Mar 8 21:45 file1
(3)chmod [OPTION]... --reference=RFILE FILE...
修改FILE的属主属组其他权限与RFILE文件相同,与chown命令类似。
umask
Display or set file mode mask
umask [-S] [mode]
umask决定了用户新建文件的权限,如默认普通用户的umask为0002,第一位为特殊权限掩码,不懂可以先忽略,后三位分别为属主、属组、其他用户权限掩码。设置掩码时直接使用3位八进制即可。
linux新建文件时,根据初始权限减去掩码得到文件权限,目录与文件的初始权限不同:
文件初始权限无x权限,故初始权限为:666
目录初始权限:777
注意:如果文件的初始权限减去umask得到的结果,ug或o有执行权限,则对应权限加1。即无论如何,新建的文件不会有x权限。
实例:
[[email protected] test]$ umask 013 [[email protected] test]$ touch file4 [[email protected] test]$ ls -l file4 -rw-rw-r--. 1 fred fred 0 Mar 8 22:20 file4
上例中666-013=653 ---> rw-r-x-wx属组和其他用户都有x权限,所以都加1,权限变成了 rw-rw-r--
本文出自 “FredDream” 博客,请务必保留此出处http://1036416056.blog.51cto.com/5943987/1748601
以上是关于文件权限与属主属组管理的主要内容,如果未能解决你的问题,请参考以下文章