在linux管理中,为了使不同的用户对文件有不同的操作权限。我们须要正确的更改文件的权限,一方面是为安全着想,
另一方面则是避免自己辛辛苦苦码出的东西被其它用户给删掉。
1.怎么更改文件的属主和属主:
后面用户和组管理的内容中,我们早已对文件的属主、属组问题做了说明。有时侯我们须要对一些文件的属组和属组进行更改,
这儿会用到两个命令:chgrp和chown命令。
(1)更改文件的属组:chgrp
chgrp[OPTION]…GROUPFILE..
chgrp[OPTION]…–reference=RFILEFILE…
-R递归更改文件夹及其下的文件的属组
(2)更改文件的属主和属组:chown
chown[OPTION]…[owner][:[GROUP]]FILE…
用法:
owner
owerner:group
:group
命令中的破折号可用.替换;
-R:递归
chown[OPTION]…–reference=RFILEFILE…
2.文件的权限:
文件的权限是文件属主,属组及其它用户拥有对文件的操作权限的显示。
(1)文件:
r:可使用文件查看类工具获取其内容
w:可更改其内容
x可以把此文件提请内核启动为一个进程
(2)目录:
r:可以使用ls查看此目录中文件列表
w:可在此目录中创建文件,也可删掉此目录中的文件
x:可以使用ls-l查看此目录中文件列表,可以cd步入目录
X:只给目录x权限,不给文件x权限(在其下创建的目录都有x权限,而文件没有)
(3)文件权限数字表示:
r(读):100:4;w(写):010:2;x(执行):001:1;
(4)更改文件的权限
chmod命令:
使用方式:
chmod[OPTION]…OCTAL-MODEFILE…
-R:递归更改权限
chmod[OPTION]…MODE[,MODE]…FILE…
MODE:
更改一类用户的所有权限
u=g=ug=a=u=,g=
更改一类用户某位或个别位权限
u+u-g+g-o+o-a+a-+–
chmod[OPTION]…–reference=RFILEFILE…
参考RFLE文件权限、,将FILE的更改为同RFILE;
(5)umask:
umask是拿来设定新建文件和目录的默认权限
新建FILE权限:666-umask;假如结果中哪一位存在权限位为质数情况,则把它的权限+1
新建DIR权限:777-umask
在linux中系统给我们默认的root的umask是022,非root的umask是002
umask命令不加参数可以拿来查看系统umask值。umask#:临时自定义umask的值。永久生效需写进配置文件
umask-S模式方法显示umask,umask-p输出可被调用,如:umask-p>/etc/bashrc
全局设置写入:/etc/bashrc:用户个人设置则在:~/.bashrc中更改
(6)文件权限相关的课堂练习:
1)当用户xiaoming对/testdir目录无执行权限时,意味着难以做什么操作?
用户小明不能步入/testdir,不能删掉,不能创建。使用ll能看见有什么文件linux makefile,而且看不到具体信息
2)当用户xiaoqiang对/testdir目录无读权限时,意味着难以做什么操作?
不能查看文件夹内部有什么文件,假如晓得文件夹内有什么,则可以删掉linux 文件 执行权限,也可以在上面创建
3)当用户wangcai对/testdir目录无写权限时,该目录下的只读文件file1是否可更改和删掉?
不能删掉,对目录无写权限,说明不能删掉目录中包含的file1的文件名和inode的对用关系
由于文件只读,所以也不会有更改权限
假如wangcai对目录有写权限,则还能删掉文件,并且还是不能更改文件
4)复制/etc/fstab文件到/var/tmp下,设置文件所有者为wangcai读写权限,所属组为sysadmins组有读写权限,其他人无权限
]#cp/etc/fstab/var/tmp/
]#groupaddsysadmins
]#chmod660fstab
]#ll
total4
-rw-rw----1cisysadmins921Aug420:52fstab
3.linux文件系统上的特殊权限:
(1)安全上下文
前提:进程有属主和属组;文件有属主和属组
1)任何一个可执行程序能不能启动为进程:取决于发起者对程序文件是否拥有执行权限
2)启动为进程以后,其进程的属主为发起者;进程的属组为发起者所属的组
3)进程访问文件的权限,取决于进程的发起者
进程的发起者,同文件的属主:则应用文件属主权限
进程的发起者,属于文件属组;则用用文件属组权限
应用文件‘其它’权限
(2)可执行文件上SUID权限
1)任何一个可执行程序文件能不能启动为进程:取决于发起者对程序文件是否拥有执行权限
2)启动为进程以后,其进程的属主为原程序文件的属主
3)SUID只对二补码可执行程序有效
4)SUID设置在目录上无意义
5)权限设置:
chmodu+/-sFILE…
(3)可执行文件上的SGID权限
1)任何一个可执行文件能不能启动为进程:取决于发起者对程序文件是否拥有执行权限
2)启动为进程以后,其进程的属主为原程序文件的属组
3)权限设置:
chmodg+/-sFILE…
(4)目录上的SGID权限
1)默认情况下,用户创建文件时,其属组因此用户所属的主组
2)一旦某目录被设置了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组因此目录的属组
3)一般用于创建协作目录
4)权限设定:
chmodg+/-DIR…
(5)Sticky位
1)具有写权限的目录一般用户可以删掉该目录中的任何文件,无论该问及爱你的权限或拥有权
2)在目录设置Sticky位,只有文件的所有者或root可以删掉该文件
3)Sticky设置在文件上无意义
4)权限设置:
chmodo+/-tDIR…
(6)特殊权限数字法:
SUID:4;SGID:2;Sticky:1;
chmod4777/tmp/a.txt
特殊权限中的SUID抢占属主的执行权限位,属主有执行权限则为s,属主无执行权限则是S
SGID在属组的执行权限位,也是用s字母表示。属组有执行权限则为s,属组无执行权限则是S
Sticky在other的执行位:other有执行权限则是t,other无执行权限则是T
3.设定文件特殊属性:
命令chattr:设置文件的特殊属性,对文件的更改做更严格的限制
chattr+i不能删掉,更名,修改
chattr+A不更改文件的访问时间(atime不变)
chattr+a只能降低
lsattr显示特定属性
取消则是把+改为-
4.访问控制列表:
(1)ACL:AccessControlList,实现灵活的权限管理
(2)不仅文件的所有者,所属组和其它人,可以对特定的用户设置权限
(3)CentOS7.0默认创建的xfs和ext4文件系统有ACL功能。
(4)CentOS7.x之前的版本,默认手工创建的ext4文件系统无acl功能,须要自动添加
tune2fs-oacl/dev/sdb1
mount-oacl/dev/sdb1/mnt
(5)ACL生效次序:所有者,自定义用户,自定义组linux 电子书,其它人
(6)为多用户或则组文件和目录赋于访问权限rwx
mount-oacl/DIR使挂载在该目录下的文件系统拥有acl功能
getfaclfile|DIR查看文件或目录的acl信息
setfacl-mu:wang:rwxfile|dir设置文件或目录的对wang用户的权限位读写执行
setfacl-Rmg:sales:rwXDIR递归设置组对目录的访问权限
setfacl-Mfile.aclfile|dir以文件的方式批量更改文件或目录对多个用户的访问权限
setfacl-mg:salesgroup:rwfile|dir设置salegroup组对文件或目录的访问权限
setfacl-md:wang:rwdir设置默认的acl权限,只针对新文件
setfacl-xu:wangfile|dir删掉文件或目录的acl设置
setfacl-Xfile.acldir批量删掉acl设置
(7)ACL文件上的group权限是mask值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限
(8)默认ACL权限给了x,文件也不会承继x权限,baseACL不能删掉
(9)setfacl-kdir删掉默认ACL权限,setfacl-bfile1消除所有ACL权限
(10)getfaclfile1|setfacl–set-file=-file2复制file1的acl权限给file2
(11)mask只影响所有者和other之外的人和组的最大权限,MASK须要和用户的权限进行逻辑与运算后
能够编程有限的权限(EffectivePermission)
用户或组的设置必须存在与mask权限设定范围内能够生效
setfacl-mmask::rwfile
–set选项会把原有的ACL项都删掉,用新的取代,须要注意的是一定要包含UGO的位置,和-m选项添加ACL有一定区别
setfacl–setu::rw,u:wang:rw,g::r,o::-file1
(12)访问列表的备份和还原:
主要的文件操作命令cp和mv都支持ACL,只是cp命令须要加上-p参数,并且tar等常见的备份工具是不会保留目录
和文件的ACL信息
getfacl-R/tmp/dir1>acl.txt备份dir1目录下文件的ACL信息到acl.txt中
setfacl-R-b/tmp/dir1删掉dir1目录下文件的acl列表
setfacl-R–set-file=acl.txt/tmp/dir1恢复dir下的acl列表
getfacl-R/tmp/dir1递归显示dir1下文件的acl列表
问题:在/data/testdir里创建的新文件手动属于g1组,组g2的成员如:alice能对那些新文件有读写权限linux 文件 执行权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。
]#mkdir-p/data/testdir
]#groupaddg1;groupaddg2;groupaddg3
]#useraddalice;useraddtom
以上为创建目录、用户、组的初始化打算工作
]#gpasswd-aaliceg2;gpasswd-atomg3
]#setfacl-md:alice:rw../testdir#
]#setfacl-md:tom:r../testdir
]#setfacl-md:o:0../testdir
]#getfacl../testdir
#file:../testdir
#owner:root
#group:root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:alice:rw-
default:user:tom:r--
default:group::r-x
default:mask::rwx
default:other::---
]#touchf1
]#getfaclf1
#file:f1
#owner:root
#group:root
user::rw-
user:alice:rw-
user:tom:r--
group::r-x#effective:r--
mask::rw-
other::---
[root@CentOS6testdir]#
文章评论