实验环境:
Linux系统版本为CentOS6.8_x86_64版本,以root用户和sjsir用户远程用xshell连接系统,进行试验。
文本目录:
1.文件的属性
2.文件权限相关的命令
3.umask 新建文件和目录的默认权限
4.Linux文件系统上的特殊权限:SUID SGID SBIT
5.文件隐藏属性 chattr lsattr
6.访问控制列表ACL
博文问题:
1.为什么要学习文件权限?
答:linux的最基本的哲学思想指出,linux一切皆文件,我们学好文件权限管理之后,可以明白linux管理员的权限之大,可以利用chatt命令去锁定一个文件,防止管理员去误操作或者误删除等失误操作造成系统的损坏或者重要的配置文件被删除;学习文件权限,我们可以更加灵活的赋予除root和其他人的权限,更加方便的对单用户或者用户组的设置,更加便捷的让用户或用户组去操作和编辑文件;对文件设置SUID、SGID、SBIT特殊权限,更加方便对用户放权,让用户方便编辑和操作系统上可以让用户操作的配置文件。
2.隐藏属性的重要性?
答:隐藏属性对于系统有很大的帮助,尤其是对于系统安全上面,chattr可能只对ext X的文件系统有效。主要作用是避免文件被用户(包括超级用户root),误删除或者进行误操作,通常用于保护一些重要的文件。
3.什么是ACL?
ACL是Access Control List的缩写,主要的目的是提供传统的owner、group、others的read、write、execute权限之外的
具体权限设置。ACL可以针对单一用户、单一文件或目录来进行r、w、x的权限设置,对于需要特殊权限的使用状况非常有帮助。
文件权限分析:
-
文件的属性:
-rw-r–r– 2 root root 26195 Dec 17 11:21 install.log
权限 硬链接数 所有者 所属组 文件大小 文件创建时间 文件名
权限第一项的介绍:
-:这是一个普通文件
d:这是一个目录
l:这是一个软连接或硬链接
b:设备文件,块设备
c:设备文件,字符设备
s:套接字文件
p:管道文件
文件或目录的权限:
文件:
r:可读,可以使用类似cat等命令查看文件内容
w:可写,可以编辑或者删除此文件
x:可执行,exacutable,可以在命令提示符下面当做命令提交给内核运行
目录:
r:可以对此目录执行ls列出目录内部的所有文件
w:可以对此目录创建文件
扩展:w对于目录的含义是是否有更改该目录结构列表的权限
目录中有w权限,就可以做以下的操作:
新建新的文件与目录;
删除已经存在的文件与目录(无论该文件的权限为何);
将已经存在的目录或文件进行重命名;
转移该目录内的文件、目录的位置;
x:可以使用cd切换进此目录,可以使用ls -l查看内部文件的详细信息
rwx对应二进制的转换
0 000 — :无任何权限
1 001 –x :有执行权限但无读和写权限
2 010 -w- :有写权限但无读和执行权限
3 011 -wx : 有写和执行权限但无读权限
4 100 r– :有读权限但无写和执行权限
5 101 r-x :有读和执行权限但无写权限
6 110 rw- :有读和写权限但无执行权限
7 111 rwx :拥有读写执行权限
2.文件权限相关的命令:
a.修改文件的权限:
chmod命令:
-R 递归修改权限
①直接修改文件的权限
chmod MODE file
MODE使用的是八进制的数字
chmod 777 test
②修改一类用户的所有权限
u= g= o= ug= a= u=,g=
=后面跟的权限直接是rwx
chmod u=rx test
chmod g=r,o=w test
③修改一类用户某位或某些位的权限
u+ u- g+ g- o+ o- a+ a- + –
加减号右面跟着的是r,w,x
chmod a+x test
④参考FILE1文件的权限将FILE2的权限设定为相同的权限。
–reference=/path/to/somefile file
chmod –reference=test hello
b.修改文件的属主
chown (该命令只有root管理员才能使用此命令)
-R 递归修改 修改目录及其内部文件的属主
①直接修改文件的属主,不会修改文件的属组
chown USERNAME file1
chown sjsir hello
改变目录的属主时,不会改变目录下的文件的属主
②同时修改文件的属主和数组
chown USERNAME:GRPNAME file
chown hadoop:sjsir hello
chown USERNAME.GRPNAME file
chown sjsir.hadoop hello
③参考FILE1文件的属主修改FILE2文件的属主
(这种方法也可修改文件的属主和属组)
–reference=/path/to/somefile file
chown –reference=test hello
c.修改文件的属组
chgrp:改变文件属组(只有管理员root才有改权限)
-R 递归修改 修改目录及其内部文件的属组
①直接修改文件的属组
chgrp GRPNAME file1将文件的属组改为前面的用户
chgrp sjsir hello
②参考FILE1文件的属组修改FILE2文件的属组
–reference=/path/to/somefile file
chgrp –reference=test hello
3.umask 新建文件和目录的默认权限:
umask值:可以用来保留在创建文件权限,就是制定“目前用户在新建文件或目录的时候的权限默认值”
新建FILE 权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1
新建DIR 权限: 777-umask
umask:查看当前用户的umask值
非特权用户umask是002
root 的umask是022
umask #: 设定当前用户的umask值(默认设置仅对当前进程有效,若想彻底改变,需将文件写到配置文件中) 例:umask 002
umask –S 模式方式显示
root用户显示的是:
u=rwx,g=rx,o=rx
umask –p 输出可被调用
全局设置:/etc/bashrc 用户设置:~/.bashrc
4.Linux文件系统上的特殊权限:SUID SGID SBIT
a.前提:进程有属主和属组;文件有属主和属组
①任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
②启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组
③进程访问文件时的权限,取决于进程的发起者
进程的发起者,同文件的属主:则应用文件属主权限
进程的发起者,属于文件属组;则应用文件属组权限
应用文件“其它”权限
b.SUID
任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
启动为进程之后,其进程的属主为原程序文件的属主
SUID 只对二进制可执行程序有效
SUID 设置在目录上无意义
权限设定:
chmod u+s FILE…
chmod u+s hello
chmod u-s FILE…
chmod u-s hello
c.SGID
①对于文件的设置
任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
启动为进程之后,其进程的属主为原程序文件的属组
权限设定:
chmod g+s FILE…
chmod g+s hello
chmod g-s FILE…
chmod g-s hello
②目录上的SGID 权限
默认情况下,用户创建文件时,其属组为此用户所属的主组
一旦某目录被设定了SGID ,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组
通常用于创建一个协作目录
权限设定:
chmod g+s DIR…
chmod g+s testdir
chmod g-s DIR…
chmod g-s testdir
d.Sticky位
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
sticky 设置在文件上无意义
权限设定:
chmod o+t DIR…
chmod o-t DIR…
e.权限位映射
SUID: user, 占据属主的执行权限位
s: 属主拥有x 权限
S:属主没有x 权限
SGID: group, 占据属组的执行权限位
s: group 拥有x 权限
S:group 没有x 权限
Sticky: other, 占据other 的执行权限位
t: other 拥有x 权限
T:other 没有x
5.文件隐藏属性 chattr lsattr:
隐藏属性对于系统有很大的帮助,尤其是对于系统安全上面,chattr可能只对ext X的文件系统有效。
主要作用是避免文件被用户(包括超级用户root),误删除或者进行误操作,通常用于保护一些重要的文件。
a.锁定与解锁文件的读时间(atime)
chattr +A test.txt 锁定
chatter +A nihao
chattr -A test.txt 解锁
chattr -A nihao
b.令文件不能被删除、改名、修改内容,包括超级用户(root用户)。使用i选项对于系统安全性有很大的帮助,只有root用户可以拥有此权限。
chattr +i test.txt 添加
chattr +i nihao
chattr -i test.txt 解除
chattr -i nihao
c.文件只能增加数据,可以查看,但不能删除文件也不能修改数据。
chattr +a test.txt 增加属性
chattr +a nihao
chattr -a test.txt 删除属性
chattr -a nihao
d.查看文件的attr的标记:
lsattr test.txt
6.访问控制列表ACL:
a.什么是ACL?
ACL是Access Control List的缩写,主要的目的是提供传统的owner、group、others的read、write、execute权限之外的具体权限设置。ACL可以针对单一用户、单一文件或目录来进行r、w、x的权限设置,对于需要特殊权限的使用状况非常有帮助。
b.具体的ACL分类:
用户(user):针对用户来设置权限
用户组(group):针对用户组来设置权限
默认属性(mask):在该目录下新建文件或目录的时候设置新数据的默认权限
c.关于acl的一个小说明:
①acl是除了文件的所有者所属组和其他人,对于额外的用户设定的权限;
②CentOS7.0默认创建的xfs和ext4文件系统有ACL功能;
③CentOS7.X之前版本,认手工创建的ext4文件系统无ACL功能。
需手动增加:
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt
④ACL生效顺序:所有者,自定义用户,自定义组,其他
⑤acl支持的分区的类型是ext4和xfs分区类型(对于windows支持的分区类型fat,ntfs,acl暂不支持)
fat分区中文件的权限是由磁盘元数据的分区决定的,fat分区对于linux系统来说是没有权限的,所谓的linux系统现在fat分区的文件有权限的分类是linux系统为文件虚拟出来的权限,不符合linux系统的文件权限,真实权限不存在。
d.设置某个目录或文件的ACL:
①单文件单次设置和删除acl权限:
添加权限:
setfacl -m u:username:(rwx/7) file (设置名为username对于file的权限)
取消权限:
setfacl -x u:username file (删除username对于file的权限)
setfacl -b file (擦除所有的ACL权限)
②批量设置和删除多用户对于文件的ACL权限
vi/nano setfacl.txt 将需要添加的信息以下面的格式写入到文件中
u:username1:(rwx/7)
u:username2:(rwx/7)
……
g:groupname1:(r–/4)
g:groupname2:(rw-/6)
……
setfacl -M setfacl.txt file | Dir 将setfacl.txt中的内容写入到file|Dir中
vi delfacl.txt 将想要取消的信息写入到下面的文件中
u:username1
u:username2
….
g:groupname1
….
setfacl -X delfacl.txt file | Dir 将delfacl.txt中的内容取消对于file|dir的设置
③重新设置文件的ACl权限:
setfacl –set u::rw,u:sjsir:r,g::rw,o::- file
④对于文件夹设定权限:
setfacl -m u:username:(rwx/7) dir
然后,root用户创建file1,对于file1的文件属性来说,无acl权限
setfacl -d u:username2:(rw-/6) dir
然后,用户创建file2 文件,对file2有刚刚设定用户的权限,但用户的权限依然小于mask的权限
解释:默认文件权限,当使用-d命令设置后,仅对设置后,再创建新文件拥有设定的acl权限,对之前用户创建旧文件无效
⑤对-d设置的文件权限无效
setfacl -k dir
e.查看文件或目录的acl权限
getfacl file | Dir
f.acl中 mask的说明:
mask值相当于除了超级用户(root)和其他人(others)之外的所有人的设定权限的最高权限的锁定位,这些用户包括组对于文件或目录来说只能比ACl权限中的mask值得权限小,但无法超过mask的值给定的权限,若用户原来的权限为rwx,mask值给定的为r-x,则在用户真实对于文件或者目录的权限为r-x,而非原本的rwx;用户原来的权限为r–,mask给定的权限仍然为r-x,则用户真实的权限为r–,以原本的权限为主。
得出:
用户(组)权限>mask给定的值,则用户的最终权限以mask权限为真实权限执行;
用户(组)权限<mask给定的值,则用户的最终权限以原来用户的权限为真实权限执行
原创文章,作者:sjsir,如若转载,请注明出处:http://www.178linux.com/29342
评论列表(1条)
文章整体思路清晰,对命令的语法和常见选项有了详细的总结与实际操作。可以尝试着有一些适当的缩进。