phper-linux-gitbook/file-dir-permissions.md
2018-06-17 15:37:16 +08:00

127 lines
3.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#### Linux 的文件类型
1. 普通文件,符号为 `-`
2. 目录,符号为 `d`
3. 字符设备,符号为 `c`
4. 块设备,符号为 `b`
5. 套接字文件,符号为 `s`
6. 软链接文件,类似 `Windows` 系统的快捷方式,删除了并不会影响源文件,符号为 `l`
7. 管道文件,符号为 `p`
补充:常见的文件类型为 `-` `d` `l`
#### Linux 的 3 种权限
- `r` 代表 `read` 读权限,数字代表为 `4`
- `w` 代表 `wirte` 写权限,数字代表为 `2`
- `x` 代表 `execute` 执行权限,数字代表为 `1`
#### Linux 的 3 种用户
- 拥有者owner
- 用户组group
- 其它人others
#### 解读
```
-rw-rw-r-- 1 nick nick 0 May 12 16:05 demo.php
- 第 1 列代表文件类型
rw- 第 2-4 列代表所属用户的权限
rw- 第 5-7 列代表所属用户组的权限
r-- 第 8-11 其他用户所属权限
111 列代表文件被引用的次数
nick 第 12 列代表文件所属用户名称
nick 第 13 列代表文件所属用户组名称
014 列代表文件大小
May 12 16:05 第 15-17 列代表文件最后的修改时间
demo.php 第 18 列代表文件名称
```
### stat 命令
```
stat filename #查看文件的详细信息文件的访问时间、修改时间、改变时间linux 文件没有创建时间
```
#### chmod 命令
```
chmod 755 filename #将文件权限修改为 755 ,即拥有者有读写执行权限,用户组有读执行权限,其他人有读执行权限
chmod -R 755 dirname #递归修改目录的权限
```
#### chown 命令
```
chown nick index.php #将文件拥有者改为 nick
chown :nick index.php #将文件用户组修改为 nick
chown nick:nick index.php #将文件拥有者和用户组修改为 nick
chown nick php #将目录拥有者修改为 nick
chown :nick php #将目录用户组修改为 nick
chown nick:nick php #将目录拥有者和用户组修改为 nick
chown -R nick:nick php #递归将目录拥有者和用户组修改为 nick
```
#### chgrp 命令
```
chgrp nick demo #改变目录的所属用户组
chgrp nick test.php #改变文件的所属用户组
chgrp -R nick demo #递归改变目录的所属用户组
```
#### umask 命令
默认的补码为 022 ,补码越小权限越大,补码的计算规则为 rwx 读写执行即 777 减补码是权限数字
root 的 umask022 ,创建的目录或文件为 755 rwxr-xr-x 权限
普通用户的 umask002 ,创建的目录或文件为 775 rwxrwxr-x 权限
最大权限减 umask 等于默认权限,结果为奇数,则奇数位 +1
```
umask #查看权限补码
umask -S #查看当前用户权限补码
```
#### chattr 命令
```
chattr +i index.php #设置文件不允许修改、删除、移动、复制root 用户也生效
chattr -i index.php #取消文件属性设置
chattr +i demo #设置目录属性,目录内的文件目录只能修改,不能新建与修改,子目录的文件目录不生效,目录层级只有一层
```
#### lsattr 命令
```
lsattr filename #查看文件属性
lsattr -d demo #查看目录属性
lsattr -R demo #递归查看目录属性
lsattr -a demo #查看所有目录文件隐藏文件
```