linux 文件权限以及用户策略 讲解
由于linux系统是一个多用户使用的系统,对于各个用户指定的文件或目录必须存在一套管理系统,以防止多用户对相同文件的混淆使用。于是催生出了linux系统文件的用户权限设置。其存在的意义就是每一个文件或目录对于不同的用户区分读取,写入,执行三种权限,即:r,w,x。下面将详细介绍如何定义文件或目录的权限以及相关命令
文件的权限主要针对三类对象进行定义:
owner: 属主, u group: 属组, g other: 其他, o
每个文件针对每类访问者都定义了三种权限: r: Readable w: Writable x: eXcutable
下面列出了,rwx对应的数字关系
r=4 w=2 x=1
文件权限
文件:
r: 可使用文件查看类工具获取其内容
w: 可修改其内容
x: 可以把此文件提请内核启动为一个进程
目录:
r: 可以使用ls查看此目录中文件列表
w: 可在此目录中创建文件,也可删除此目录中的文件
x: 可以使用ls -l查看此目录中文件列表,可以cd进入此 目录
X:只给目录x权限,不给文件x权限
umask值得表示含义
umask表示文件权限的反向编码。新文件的创建默认权限是指定的,其指定权限与umask值相关。其权限八进制的计算方式为:
对于目录:777-umask值=默认权限八进制
对于文件:666-umask值=默认权限八进制(注意:为了安全,文件创建默认不应该拥有x权限,所以得出值如果为奇数,需要每个奇数+1)列;
umask 043
创建文件之后的权限是 666-043=624(623+1)
[root@centous1 ~]# umask 0043 [root@centous1 ~]# touch dir1 [root@centous1 ~]# ll 总用量 15096 -rw-------. 1 root root 1288 5月 3 03:16 anaconda-ks.cfg -rw--w-r-- 1 root root 0 8月 4 07:41 dir1 -rw-r--r--. 1 root root 33079 5月 3 03:16 install.log -rw-r--r--. 1 root root 6996 5月 3 03:13 install.log.syslog -rw-r--r-- 1 root root 191 8月 2 12:12 pass.txt -rw-r--r-- 1 root root 432 8月 2 12:07 users.txt
chmod更改文件或者文件夹权限
对于文件来说有三种登录用户:文件所有者,使用u表示,文件所属组,用g表示,还有其他用户与这个文件无关,用o表示。
用法一 chmod u=rw,g=r,o= /testdir 意思是更改/testdir是属主权限是rw,属组权限是r,其他人的权限无。这种用法直接指定,原有的权限不会有影响。
用法二 chmod u+rw,g+r /testdir 意思是在原有的权限基础上,属组的权限增加rw,属组的权限增加r。
用法三 chmod 755 /testdir 意思是给/testdir 赋值为 drwxr-xr-x 也叫数字赋值法。
改变所有者(chown)和用户组(chgrp)命令
修改文件的属主:chown
chown [OPTION]… [OWNER][:[GROUP]] FILE… -R递归
[root@centous1 ~]# touch dir1 [root@centous1 ~]# ll dir1 -rw-r--r-- 1 root root 0 8月 4 08:39 dir1 [root@centous1 ~]# chown text dir1 [root@centous1 ~]# ll dir1 -rw-r--r-- 1 text root 0 8月 4 08:39 dir1
修改文件的属组:chgrp
chgrp [OPTION]… GROUP FILE… chgrp [OPTION]… –reference=RFILE FILE…
-R 递归
[root@centous1 ~]# groups text text : text [root@centous1 ~]# chgrp text dir1 [root@centous1 ~]# ll dir1 -rw-r--r-- 1 text text 0 8月 4 08:39 dir1
SUID,SGID,sticky的意义为分别对文件属主,属组,其他用户所设置的特殊权限。
SUID只对二进制可执行程序有效,设定命令为:
chmod u+s file
其中file文件的执行权限为-rwxr-x—-. 属主为root,命令执行后会变为-rwsr-x—.这时候非常的微信,任何非主用户都可以对这个文件有执行的权限,取消这个权限的命令为
chmod u-s file
列如;我们通常切换到普通用户之后也可以改密码,是因为我们可以根据/user/bin/passwd 的权限,来调用/etc/shadow.那么/user/bin/passwd 是什么权限呢
那么为什么要根据passwd文件来调用呢,因为/etc/shadow的权限太严格了
只用suid来赋权限,使执行者可以暂时继承root的身份,来执行passwd文件。
注意,即使是说继承root的身份,但是执行文件的权限other也要有执行的权限,否则也是执行不了的
执行程序的规则;
(1) 任何一个可执行程序文件能不能启动为进程:取决发起者 对程序文件是否拥有执行权限
(2) 启动为进程之后,其进程的属主为发起者;进程的属组为 发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者 (a) 进程的发起者,同文件的属主:则应用文件属主权限 (b) 进程的发起者,属于文件属组;则应用文件属组权限 (c) 应用文件“其它”权限
SGID常常作用于目录上,设定命令为如下:
chmod g+s dir
如果dir目录原权限为:drwxr-xrw-,属主为root,属组为root。执行命令后权限变为:drwxr-srw-
如果切换其他用户mcgee(拥有w权限)在dir内创建文件,如果dir没加SGID,默认新建文件属主,属组为用户mcgee的属主和属组。但是在加SUID的dir目录内,创建的新文件属主为mcgee,但是属组一定是dir目录的属组root。
取消dir的SGID权限命令为:
chmod g-s dir
注意:dir的原有权限other是有w权限的
sticky
sticky权限的作用是保护文件被非属主的其他用户删除,设定命令为:
chmod 0+t file2
如果file2权限为-rwxr-xrwx,执行后会变为-rwxr-xrwt。此时对于文件file2,只有file2属主与root可以对file2目录有执行权限。
取消file2的sticky权限
chmod -o-t file2
一个容易出错的列子,,
系统创建两个用户user1 user2
我们登录user2,然后在其家目录下创建个123文件。此时的123文件属组属主都是user2
然后我们给user2的家目录权限为777,登录user1,进入到user2的家目录并且vim打开123,写入点东西强行保存,此时再看123文件的属主属组。
在这里为什么能够把文件123的属主和属组改变呢,虽然123文件的权限是其他用户只读,不能修改。但是,因为目录的关系权限是777,可以删除123这个文件,vim把他强制保存,其实就是把他删除了重建了的,所以,123文件的属主属组改变了,
注意,一定要记住,目录中other不要给w权限,因为他可以让其他用户删除,那样的话,权限就没意义了。
ACL的意义与使用命令
ACL:access control list.访问控制列表。存在的意义为对特定的其他用户设置权限。其相关命令有setfacl,getfacl两种。
setfacl:对特定文件或目录设置acl,用法如下:
~]# setfacl -m u:wang:rwx file3
表示文件file3对用户wang设置了rwx的权限
~]# setfacl -Rm g:sales:rwx dir2
表示dir2目录以及其递归文件对组sales内的用户设置rwx的权限
其中option可以查询帮助文件
getfacl:显示file/directory的acl设置,如下:
~]# getfacl file3
其中会多出显示file3对wang的权限。
原创文章,作者:forest,如若转载,请注明出处:http://www.178linux.com/28708
评论列表(1条)
文章整体架构清晰,从权限模型到权限管理都通过实际操作有了自己的认识和理解。