一、Linux中的文件权限和属性
1.1 权限简介
Linux中的文件权限分为两种:
- 普通权限
- 特殊权限
普通权限中细分出三种权限
- 读权限,Readable 简称r ,数字表示为4,允许读取文件内容或列出目录中的文件。
- 写权限,Writable 简称w,数字表示为2,允许修改文件内容或在目录中创建、删除文件。
- 执行权限,eXcutable 简称x,数字表示为1,允许执行文件或进入目录。
特殊权限也分为三种:
- 粘滞位(Sticky Bit):如果目录设置了粘滞位,只针对目录有效,只有文件的所有者和root用户可以删除或移动该目录下的文件。数字表示为1.
- 集合用户ID(Set-UID):当一个文件设置了Set-UID位时,该文件被执行时将以文件所有者的权限运行,而不是执行者自己的权限。文件所有者的x被s取代时拥有SUID权限,数字表示为4
- 集合组ID(Set-GID):当一个文件设置了Set-GID位时,新创建的文件将继承该文件的组ID,而不是执行者的组ID。当所属组的权限中的x被s取代时拥有SGID权限。数字表示为2。
1.2 权限管理命令
查看文件属性
方法1:
[root@db-server ~]#ls -l /etc/passwd
-rw-r--r-- 1 root root 1168 Jun 15 16:21 /etc/passwd
以空格为分割符第一列的字母和横线相结合起来表示了该文件的权限
第一个“-”表示的是类型若是目录则为“d”文件则为“-”横杠往后每三个字母和横杆为一组分别表示了所有者、所属组、其他者的权限在以上则解释为:
rw-:所有者拥有读写权限
r--:所属组拥有读权限
r--:其他人拥有读权限
1:表示该文件有一个硬链接
第一个root表示所有者为root
第二个root表示所属组为root组
....
其他选项解释如图一所示
方法2:
[root@db-server ~]#stat /etc/passwd
File: /etc/passwd
Size: 1168 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 918365 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
........
其中的“Access”字段表示了该文件的属性

图一
修改权限
修改权限的命令:chmod 常用的方式:
1.直接使用“+”、“-”、“=”加字母修改权限如:
chmod u+w,g+r,o=rx filename
2.使用数字的方式赋予权限:
chmod 777 filename 或 chmod 600 filename
chmod的常用参数为“-R”表示递归修改目录和文件的权限如
chmod -R 666 /dir/dir2/filename
表示把目录dir、dir2和文件filename的文件的权限都修改成666
1.3 umask 默认权限
在创建文件或者目录时默认赋予的权限由umask的参数间接决定,在创建文件或者目录之后系统使用最高权限“777”减去umask的值得出该文件或目录的默认权限umask默认值是“0022”
[root@db-server ~]#umask
0022
1.3.1 定义umask
umask的设定分三种情况:
1.全局设定 在/etc/profile
或 /etc/bashrc
文件中设置的 umask
值会影响所有用户的默认 umask
值。
2.针对特定用户特定设置 在用户的家目录下的 .bashrc
、.bash_profile
或 .profile
文件中设置的 umask
值只影响该特定用户的默认 umask
值
3.临时设定 使用在当前窗口使用umask命令设置即可
1.2 属性
Linux中的文件和目录都拥有三种属性即,所属用户、所属组、和其他。这三个属性用于对权限控制。
1.2.1 用户的管理命令
1.useradd 创建用户
常用参数:
-u 创建用户时指定UID
-g 创建用户时指定用户组的组id
-d 指定家目录
-M 不创建家目录
2.userdel 删除用户
常用参数:
-f 强制删除
-r 删除用户时连带家目录一起删除
2.id 查看用户ID、属组等信息
id username 如:
[root@db-server ~]#id root
uid=0(root) gid=0(root) groups=0(root)
3.su 切换用户
su username 或 su - username
不带“-”切换为不读取目标用户的配置文件,为不完全切换。
1.2.2 组管理命令
1. groupadd 创建组
常用参数有:
-g 指定组id
-r 创建系统组
2.groupdel 删除组
-f 强制删除组
3.groupmod 修改组
-n 指定新组名
-g 指定新的Gid
4.groupmems 管理组成员
-l 显示成员列表
-d 从列表中删除成员
-p 清楚所有成员
-a 增加组成员
5.group 查看用户和组关系
[root@db-server ~]#groups root
root : root
1.2.3 chown 命令
chown可以同时修改所有者和属组属性
[root@db-server ~]#chown --help
Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...
or: chown [OPTION]... --reference=RFILE FILE...
常用参数:
-R 递归修改
--reference=RFILE 复制指定文件的属性到目标文件
1.3 ACL
ACL访问控制列表,除去以上提及的普通权限和特殊权限之外,还可以使用acl命令来实现对权限的定制化设置。
getfacl 查看acl权限
[root@db-server ~]#getfacl -a hello.txt
# file: hello.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
getfacl 设置acl权限
-m 更新权限
[root@db-server ~]#setfacl -m u:liang:0 hello.txt
[root@db-server ~]#setfacl -m g:root:x hello.txt
[root@db-server ~]#getfacl hello.txt
# file: hello.txt
# owner: root
# group: root
user::rw-
user:liang:---
group::r--
group:root:--x
mask::r-x
other::r--