Linux文件权限
文件的属性和权限的设置对于Linux来说是相当重要的,假如对这一块的知识没有一个深入的了解linux系统用户权限管理,你的系统就有可能有很大的危险。这么首先我们来看一看文件的属性所对应的都是哪些意思吧。
上图第一个字符是d,他代表了文件的类型,d的意思就是目录文件,这么不仅目录文件还有哪些文件呢?
d:目录-:文件l:链接文件b:可以储存的插口设备c:串行端口设备(鼠标,键盘)
接出来的九个字符以三个为一组分别是
rwx:属主的权限。r-x:属组的权限。r-x:其他人的权限。
r(read):可读取w(write):可写入x(execute):可执行
所以前面这个文件的属主是root。他对文件可读取可写入可执行。文件的属组是root,root组内成员可读取可执行linux软件下载,不仅属主属组之外的其他人对该文件可读取可执行。
修改属主属组权限
chown:改变文件所属的用户组。
chgrp:改变文件的所有者。
chmod:改变文件的权限。
更改文件的属主:chown
chown[OPTION]…[OWNER][:[GROUP]]FILE…
用法:OWNER
OWNER:GROUP
:GROUP中的破折号可用.替换;
-R:递归
chown[OPTION]…–reference=RFILEFILE…
更改文件的属组:chgrp
chgrp[OPTION]…GROUPFILE…
chgrp[OPTION]…–reference=RFILEFILE…
-R递归
更改文件的权限:chmod
文件权限的改变可以使用chmod这个,而且权限的设置方式有两种,分别可以使用数字或则是符号来进行修改。
命令使用格式
chmod[OPTION]…OCTAL-MODEFILE…
-R:递归更改权限
chmod[OPTION]…MODE[,MODE]…FILE…MODE:
chmod[OPTION]…–reference=RFILEFILE…参考RFILE文件的权限,将FILE的更改为同RFILE;
数字改变文件权限
Linux系统的基本权限有9个,每三个一组,每一组分别对应了owner、group、others三种身分。我们可以使用数字来代表各个权限分别是
r:4w:2x:1
当要设置xx文件权限为[-rwxr-xr-x]
owner=rwx=4+2+1=7
group=r-x=4+1=5
others=r-x=4+1=5
所以在设置权限时,该文件权限的设置数字就是755.执行chmod755xx就可以了。
符号改变文件权限
三种身分用user=u;group=g;others=o来表示,读写执行权限用rwx来表示
当xx文件权限为[-rwxr-xr-x]我们要给它加入所有权限时执行
1、chmoda=rwx
2、chmodg=rwx,u=rwx,a=rwx
3、chmodg+w,o+w
目录/文件的权限意义
权限对文件的意义
r(read):可读取此文件的内容,例如读取文本文件里的内容。
w(write):可以编辑、新增或则是更改该文件的内容。
x(execute):该文件可以被系统执行。
权限对目录的重要性
r:表示具有读取目录结构列表的权限。可以查询该目录结构下的文件列表。
w:表示你具有修改该目录结构列表的权限
如:新建新的文件与目录。
删掉已存在的文件与目录(不管该文件的权限怎样)。
将已存在的文件或目录进行重命名。
转移该目录内的文件、目录位置。
x:代表的是用户能够步入该目录成为工作目录。
新建文件和目录的默认权限
umask值可以拿来保留在创建文件权限
新建FILE权限:666-umask假如所得结果某位存在执行(质数)权限,则将其权限+1
新建DIR权限:777-umask
非特权用户umask是002root的umask是022
umask:查看
umask#:设定
umask002
umask–S模式方法显示
umask–p输出可被调用
全局设置:/etc/bashrc用户设置:~/.bashrc
这儿加入我们新建一个文件默认让它没有权限,按照规则,命令为:
umask777
666-777=-1-1-1
每一项加1得000
Linux系统中三种特殊权限
SUID,表现为s数字为4(作用在二补码程序)
SGID,表现为s数字为2(作用在二补码程序)
Sticky表现为t数字为1(作用在目录上)
安全上下文
SUID
前提:进程有属主和属组;文件有属主和属组
(1)任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
(2)启动为进程以后,其进程的属主为发起者;进程的属组为发起者所属的组
(3)进程访问文件时的权限,取决于进程的发起者
(a)进程的发起者,同文件的属主:则应用文件属主权限
(b)进程的发起者linux系统用户权限管理,属于文件属组;则应用文件属组权限
(c)应用文件“其它”权限
SGID
任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
启动为进程以后linux系统好用吗,其进程的属主为原程序文件的属主
SUID只对二补码可执行程序有效
SUID设置在目录上无意义
当一个目录有S权限时在该目录下创建的所有新文件子目录文件手动承继该目录的属组
Sticky(粘滞位:可以让其他人不能删掉文件。)
具有写权限的目录一般用户可以删掉该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky位,只有文件的所有者或root可以删掉该文件
sticky设置在文件上无意义
权限设定:chmodo+tDIR…chmodo-tDIR…
比如:
ls-ld/tmpdrwxrwxrwt12rootroot4096Nov215:44/tmp
注意:对文件夹来说其他权限必须配合x权限。
设定文件的特殊属性
chattr+i不能删掉,更名,修改
chattr+a只能降低读取。
chattr+A锁定文件访问时将。
lsattr显示特定属性
访问控制列表(ACL:AccessControlList)
ACL:AccessControlList,实现灵活的权限管理
不仅文件的所有者,所属组和其它人,可以对更多的用户设置权限
CentOS7.0默认创建的xfs和ext4文件系统有ACL功能。
CentOS7.X之前版本,默认手工创建的ext4文件系统无ACL功能。需自动降低:tune2fs–oacl/dev/sdb1mount–oacl/dev/sdb1/mnt
ACL生效次序:所有者,自定义用户,自定义组,其他人
FAT分区不支持权限。
有关acl的命令例
为多用户或则组的文件和目录赋于访问权限rwx
mount-oacl/directory
getfaclfile|directory查看目录的具体acl权限
setfacl-mu:user:rwxfile|directory
setfacl-Rmg:user:rwXdirectory对于
setfacl-Mfile.aclfile|directory读取文件内容设置目标目录权限
setfacl-mg:user:rwfile|directory
setfacl-md:u:user:rxdirectory
setfacl-mm::rdirectory修改所有目录的有效权限
setfacl-xu:userfile|directory删掉用户权限
setfacl-Xfile.acldirectory读取文件内容删掉目标目录权限
setfacl-bdirectory彻底清空文件acl权限
添加acl时目录所属组的权限更新为mask权限。并且mask权限只影响添加进acl的用户权限与用户组的权限
acl访问控制列表
ACL文件上的group权限是mask值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限
getfacl可看见特殊权限:flags
默认ACL权限给了x,文件也不会承继x权限。
baseACL不能删掉
setfacl-kdir删掉默认ACL权限
setfacl-bfile1消除所有ACL权限
getfaclfile1|setfacl–set-file=-file2复制file1的acl权限给file2
mask只影响除所有者和other的之外的人和组的最大权限Mask须要与用户的权限进行逻辑与运算后,才会弄成有限的权限(EffectivePermission)用户或组的设置必须存在于mask权限设定范围内才能生效。setfacl-mmask::rxfile
–set选项会把原有的ACL项都删掉,用新的取代,须要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以.如:
setfacl–setu::rw,u:wang:rw,g::r,o::-file1
备份和恢复ACL
主要的文件操作命令cp和mv都支持ACL,只是cp命令须要加上-p参数。并且tar等常见的备份工具是不会保留目录和文件的ACL信息
#getfacl-R/tmp/dir1>acl.txt
#setfacl-R-b/tmp/dir1
#setfacl-R–set-file=acl.txt/tmp/dir1
#getfacl-R/tmp/dir1
本文原创地址://q13zd.cn/lwjqxwjdsxhq.html编辑:刘遄,审核员:暂无