1. 文件权限
输出结果的第一个字段是描述文件和目录的权限的码。这个字段的第一个字符代表的对象的类型:
- -代表文件
- d代表目录
- l代表链接
- c表示为装置文件里面的串行端口设备,例如键盘、鼠标
- b表示为装置文件里面的可供储存的接口设备
- n代表网络设备
之后有3组三字符的码。每一组三字符码表示三重访问权限:
- r代表对象是可读的
- w代表对象是可写的
- x代表对象是可执行的
如果没有某种权限,在该权限位会出现单破折线。这3组三字码分别对应对象的3个安全级别:
- 对象的属主
- 对象的属组
- 系统其他用户
-rw-r--r-- 1 root root 56 Jul 5 06:29 test.txt
| | |
| | +----------其他用户的权限(r-x)
| +-------------属组用户的权限(rwx)
+----------------文件属主的权限(rwx)
2. 默认文件权限
umask命令用来设置用户创建文件和目录的默认权限,umask命令可以显示和设置这个默认权限:
umask
0022
touch命令用分配给我的用户账号的默认权限创建了这个文件:
toucn abc
ls -la abc
-rw-r--r-- 1 root root 0 Jul 5 06:43 abc
Linux权限码:
=====================================
权限 二进制值 八进制值 描述
-------------------------------------
--- 000 0 没有任何权限
--x 001 1 只有执行权限
-w- 010 2 只有写入权限
-wx 011 3 有写入和执行权限
r-- 100 4 只有读取权限
r-x 101 5 有读取和执行权限
rw- 110 6 有读取和写入权限
rwx 111 7 有全部权限
======================================
如果一个文件的权限码是rw-rw-rw-,那么对应的八进制值就是666,即所有人都可以读取和写入。
umask是个掩码。它屏蔽掉了不想授予该安全级别的权限。umask值会从对象的全权限值中减掉,对文件来说,全权限值是666;而对于目录来说,是777。所以,上面的例子中,文件一开始的权限是666,然后经umask值0022作用后,变成了644。
可以使用umask命令为默认umask设置一个新值:
umask 026
3. 改变文件权限
使用chmod命令可以改变文件或文件夹权限。
chmod [-cfvR] [--help] [--version] mode file...
-c 若该档案权限确实已经更改,才显示其更改动作
-f 若该档案权限无法被更改也不要显示错误讯息
-v 显示权限变更的详细资料
-R 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
mode参数后可跟八进制数模式或符号模式来设置安全性。
(1)八进制模式,直接用期望赋予的标准的3位八进制权限码
格式: chmod abc filename
其中的abc 分别代表3个数字,并且分别对应问个不同的属组,即:
数字a 对应 第2到4位,表示拥有者的权限
数字b 对应 第5到7位,表示同组用户的权限
数字c 对应第8到10位,表示其他组的权限
chmod 760 newfile
ls -l newfile
drwxrw---- 2 root root 4096 Jul 5 06:52 newfile/
(2)符号模式:
[ugoa...][+-=][rwxXstugo...]
分为三块[who] operator [permission]
who的含义:
- u 文件属主权限- g 同组用户权限
- o 其它用户权限
- a 所有用户(包括以上三种)
operator的含义:
- + 增加权限
- - 取消权限
- = 唯一设定权限
permission的含义:
- r 读权限
- w 写权限
- x 执行权限
- X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
- s 文件属主和组id
- l 给文件加锁,使其它用户无法访问
例如:
chmod o+r newfile # 给其他用户添加了读取权限
chmod u-x newfile # 收回属主已有的执行权限
(3)如果是对于文件夹,可以加上-R参数,对所有文件夹下的文件和目录也起作用。
4. 改变所属关系
有时候你需要改变文件的属主,比如有人离职或者开发人员创建了一个在产品环境中运行时需要归属在系统账户下的应用。Linux提供了两个命令来完成这个功能:chown命令用来改变文件的属主,chgrp命令用来改变文件的默认属组。
(1)chown
格式:
chown options owner[.group] file
参数:
-R 可以递归地改变子目录和文件的所属关系
-h 可以改变该文件的所有符号链接文件的所属关系
chwon user newfile # 可用登录名或UID来指定文件的新属主chown .rich newfile # 改变文件的属组
chwon user.shared newfile # 同时改变文件的属主和属组
chown test. newfile # 如果组名和用户登录名匹配, 可以这样改变文件的属主和属组
说明:只有root用户能够改文件属主。任何属主都可以改变文件的属组,但前提是属主必须是源和目标属组的成员。
(2)chgrp命令可以很方便地更改文件或目录的默认属组
chgrp shared newfile # 改变文件的属组