Linux权限那些事儿(2)
- 摘要:Linux的权限管理与Windows差异较大,很多Linux使用者难以系统的理 解,而权限的重要性不言而喻,本文通过案例式循序渐进的讲解,来为读者朋友们庖丁解牛。在《从ls命令开始》和《深入理解SetUID》文章中,笔者已经 分别讲解了rwx权限和特殊权限SetUID ,本文查缺补漏把剩下的权限一一剖析,期望网友能够看完这三篇文章后对Linux权限有一个整体的把握。
- 标签:Linux 权限
三、 权限之chattr
chatrr只有超人root用户可以使用,用来修改文件的权限属性,建立凌驾于rwx基础权限之上的授权。
在此介绍两个常用选项:
a 只允许在文件后追加数据,如果目录具有此属性,系统将只允许在目录下建立和修
改文件,而不允许删除任何文件。
i 不允许对文件进行任何修改,如果目录具有此属性,那么只能修改目录下的文件,
不允许建立和删除文件。
案例一:无法删除和更改的文件
如果要建立一个公共访问的目录,大家都可以删除和创建、拷贝文件,但是有一个基本的使用此目录的规则,要建立一个说明文件README ,这个文件不允许大家删除和修改,则可以如下设置:
chattr +i README
这时,README文件所在目录所有用户都有读写权限,但是任何用户都无法删除README文件(包括root),尝试删除会提示:
rm README
rm: remove write-protected regular empty file `README'? y
rm: cannot remove `README': Operation not permitted
同样也不可以改变文件的内容,可以查看到README文件被增加了一个不可更改的属性:
lsattr README
----i-------- README
此时,README变成了一个非常牛XX的文件,即便你是SuperUser也无法删除和修改它,想对它干嘛都不成。
若要更改或删除文件也必须先去掉i属性才可以:
chattr -i README
案例二:备份目录应用
假设有这样一种应用,我们每天自动化实现把上海服务器的日志通过scp和rsync远程备份到北京的备份服务器上,备份服务器的存储目录可设置为只可创建文件而不可删除。
chattr +a /backup/log
设置后,可在本机测试:
cp /var/log/messages /backup/log # 可以拷贝文件
rm /backup/log/messages # 删除文件则被禁止
rm: remove regular file `messages'? y
rm: cannot remove `messages': Operation not permitted
chattr命令不宜对目录/、/dev、/tmp、/var等设置,严重者甚至容易导致系统无法启动,比如根目录如果设置了i属性,谨慎设置,看过此文试验后造成系统问题者,笔者概不负责……
四 权限之ACL
Linux中默认的权限管理比较菜,难以实现复杂的权限控制,如针对一个文件设置几个用户或用户组具有不同权限,这就需要依靠ACL(Access Control List)访问控制列表实现,可以针对任意指定的用户/用户组分配权限。
开启分区的ACL功能 ,需要在/etc/fstab文件中加入acl选项,如:
LABEL=/backup /backup ext3 defaults,acl 1 2
然后重新加载分区即可生效:
mount -o remount /backup
如果想临时生效可不修改/etc/fstab文件,直接执行命令“mount -o remount,acl /backup”即可。
案例:设定复杂权限控制目录
设定目录/backup/log用户zhangsan有读写执行权限,用户lisi有读权限,用户wangwu有读写权限,而用户组bakgroup有读和执行权限,则可做如下设置:
setfacl -m u:zhangsan:rwx,u:lisi:r,u:wangwu:rw,g:bakgroup:rx /backup/log
setfacl -m可以设置文件/目录的访问权限,至于权限设定的写法包括三个组成部分,第一部分列出设定对象是用户u或用户组g ;第二部分指定用户名或用户组名;第三部分指定访问权限rwx ,设定多组权限中间用逗号分隔。如“u:lisi:r”表示设定用户lisi为只读权限。
查看目录属性:
ls -ld /backup/log
drwxrwxr-x+ 2 root root 4096 May 25 07:16 /backup/log
会发现文件权限位后增加了一个加号,这说明/backup/log设置了ACL ,同时可以查看其详细的权限设置:
getfacl /backup/log
# file: backup/log
# owner: root
# group: root
user::rwx
user:zhangsan:rwx
user:lisi:r--
user:wangwu:rw-
group::r-x
group:bakgroup:r-x
mask::rwx
other::r-x
这样即可实现Linux中文件/目录的复杂权限控制,要注意的是ACL优先于基本权限设置,也就是说如果默认所属组为rx权限,但是ACL若指定了所属组中某个成员为rwx权限,则此成员拥有rwx权限。
转载于:https://blog.51cto.com/mangodata/574327