Linux 系统文件权限的管理和系统目录分布

2017-05-11 0 By admin

一、文件和目录的一般权限

文件和目录的权限主要是:读、写和执行。
字面意思很容易让大家产生模糊的认识;但是细究起来还是很有意思的。

1.1、文件的权限

文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件(binary program)等等。
权限对文件的意义:

  1. r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
  2. w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
  3. x (execute):该文件具有可以被系统执行的权限。

对于文件的rwx来说, 主要都是针对“文件的内容”而言,而对于文件本身的存在没有关系。
其中Linux 对rwx可以使用数字表示,r为4;w为2;x为1。

1.2、目录的权限

一切皆是文件,目录也是文件。目录文件的主要内容就是这个目录下的文件名列表。
权限对目录的意义:
r (read contents in directory)
表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。

w (modify contents of directory)
对目录文件内容修改的权限;也就是可以操作此目录下的文件。包括:
1、建立新的文件与目录;
2、删除已经存在的文件与目录(不论该文件的权限为何!)
3、将已存在的文件或目录进行更名;
4、搬移该目录内的文件、目录位置。

x (access directory)
用户能否进入该目录成为工作目录。

二、文件的特殊权限

Linux 系统的文件特殊权限能使系统更安全。

2.1、文件执行权限

一个可执行文件一般执行时,只继承执行者的系统权限。这样就避免了一些普通用户提权操作。
setuid 标志:可以设置文件执行时,拥有文件拥有者的权限。如/usr/bin/passwd
chmod u+s /tmpfile
rwsrw-r–

2.2、目录下创建的文件所属关系

setgid 标志:该权限只对目录有效。用户在此目录下创建的文件,其所属组和目录所属组一致
chmod g+s /tmpdir
rwxrwsrw-

2.3、文件包含标志

sticky 标志:文件保护;只有文件所有者,目录所有者或Root用户才能删除修改。
chmod o+t /tmpfile | /tmpdir
rwxrw-rwt

setuid,setgid,sticky 在文件权限上分别显示s,s,t。如果修改的文件/目录原本没有执行权限(x);则显示为大写S,S,T

2.4、补充

更多的文件特殊权限设置管理,请使用chattr和lsattr

三、文件ACL管理

getfacl:取得某个文件/目录的ACL设置
setfacl:设置某个目录/文件的ACL规定
# setfacl --help
setfacl2.2.39--set fileaccess control lists
Usage:setfacl[-bkndRLP]{-m|-M|-x|-X...}file... # -m|-M|-x|-X

3.1、部分参数列表

-m,–modify acl modify the current ACL(s)of file(s) 修改文件的当前ACL
-x,–remove acl remove entries from the ACL(s)of file(s) 删除文件的acl规则
-b,–remove-all remove all extended ACL entries 删除所有扩展的acl规则,基本的acl规则将被保留.
-k,–remove-default remove the defaultACL 删除默认ACL
–set acl set the ACL of file(s),replacing the current ACL. 设置文件的ACL,替换当前的ACL
–mask dorecalculate the effective rights mask 重新计算有效的MASK
-n,–no-mask don’trecalculate the effective rights mask 不重新计算有效的权限掩码
-d,–default operations apply tothe defaultACL 设定默认的acl规则,针对目录而言.
-R,–recursive recurse into subdirectories 递归的对所有文件及目录进行操作
-L,–logical logical walk,follow symbolic links 跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录
-P,–physical physical walk,donotfollow symbolic links 跳过所有符号链接,包括符号链接文件。
–test testmode(ACLs are notmodified) 测试模式(ACL不被修改)

当使用-M,-X选项从文件中读取规则时,setfacl接受getfacl命令输出的格式。
每行至少一条规则,以#开始的行将被视为注释.

3.2、Setfacl命令用法

setfacl [d[efault]:][u[ser]:]uid[:perms]
指定用户的权限,文件所有者的权限(如果uid没有指定)。
setfacl [d[efault]:]g[roup]:gid[:perms]
指定群组的权限,文件所有群组的权限(如果gid未指定)
setfacl [d[efault]:]m[ask][:][:perms]
有效权限掩码
setfacl [d[efault]:]o[ther][:perms]
#perms域是一个代表各种权限的字母的组合:读:r 写:w 执行:x,执行只适合目录和一些可执行的文件。
perms域也可设置为八进制格式0~7。

3.3、使用案例

1、为用户添加权限
setfacl -R -m u:gudc:rwx /www
2、删除所有扩展的acl规则
setfacl -b /www
3、删除特定的用户权限
setfacl -x u:gudc /www
4、设置目录默认规则
setfacl -d -R -m u:gudc:rw- /www
5、设置默认mask的ACL
setfacl -R -m m::rwx /www;
setfacl -d -R -m m::rw- /www;

三、Redhat/CentOS系统目录布置

/sbin:存放着系统命令和工具,一般是根用户使用的命令
/bin: 常用的命令和工具

/boot:Linux就是从这里开始启动的
/etc:存放着LINUX下大量的配置文件
/proc:这其实是一个虚拟目录,可以通过此目录来访问内存
/mnt:挂载目录或称挂载点
/dev:存放这LINUX下所有的设备文件

/var:通常用来存放这一些变化中的东西
/var/log:存放这系统日志
/var/spool:存放一些邮件、新闻、打印队列等等
/lost+found:可以在此目录下查找已丢失的文件

/usr:通常用来安装各种软件的目录,类似于windows里面的program File目录
/usr/x11R6 XWindow目录 图形界面
/usr/bin :一些安装程序后的命令和工具
/usr/sbin:与/usr/bin相同

4.1、系统自带

头文件:/usr/include/
库文件:/lib、/usr/lib

4.2、第三方

头文件:/usr/include、/usr/local/include
库文件:/usr/local/lib

4.3、查找库文件

/etc/ld.so.conf.d/local.conf
/etc/ld.so.conf
ldconfig