基本属性
通过:
ls -l
查看文件的属性。
在 linux 中,使用 chown 来修改所属用户和组; chmod 来修改用户的权限。
文件权限
Linux 的文件权限基于一个简单但强大的模型: 三个角色 x 三种操作。
三个角色
| 角色 | 代号 | 含义 |
|---|---|---|
| Owner | u(user) | 文件的拥有者(通常是创建者) |
| Group | g(group) | 文件所属组的成员 |
| Others | o(others) | 既不是 owner 也不在 group 里的所有人 |
三种角色
| 操作 | 代号 | 文件含义 | 目录含义 |
|---|---|---|---|
| Read | r | 读取文件内容 | 列出目录的文件名 |
| Write | w | 修改/删除文件内容 | 在目录里创建/删除文件 |
| Execute | x | 执行文件(如果是程序/脚本) | 进入目录(cd 进去) |
二位至四位分别表示可读( r ) 、 可写( w ) 、 可执行( x )。位置固定,有属性则显示字符,否则显示为 - 。
五位至七位表示属组的权限,与二位至四位位置含义相同;八位至十位表示其他用户的权宜,含义与二位至四位一同。
用 ls -l 看权限
ls -l /etc/nginx/nginx.conf
-rw-r--r-- 1 root root 1236 May 20 10:10 nginx.conf
拆开来看:
-rw-r--r--
┃ │ ║ ┊
┃ │ ║ ╰┄┄┄┄┄ Others 权限: r-- (只读)
┃ │ ╚════════ Group 权限: r-- (只读)
┃ └──────────── Owner 权限: rw- (读写)
┗━━━━━━━━━━━━━━ 文件类型: - 代表普通文件( d 代表目录, l 代表软链 )
通过 ls -l 查看出第一个字符的含义:
d目录(可以cd)-文件(支持 vim )l链接文档b储存设备c串行端口设备(键盘 、 键盘)
目录权限的特殊性
目录的 r、w、x 和文件的含义完全不同:
| 权限 | 对目录的含义 | 通俗理解 |
|---|---|---|
r | 能列出目录内容(ls) | 能看到里面有什么内容 |
w | 能在目录内增删文件 | 能往里面塞东西或扔东西 |
x | 能进入目录( cd ) | 能进入该房间 |
# 一个只有 r 没有 x 的目录
drw-r--r-- 1 root root ... somedir/
# 结果:你能 ls somedir/ 看到里面的文件名,但你 cd 不进去!
一个实用的记忆口诀
要相对一个文件干活,路径上的每一级目录都必须有 x (执行)权限
改权限
chmod --- 改文件/目录的权限
符号模式(推荐,直观):
chmod u+x file.sh # 给 owner 加执行权限
chmod go-w file.txt # 去掉 group 和 others 的写权限
chmod a+r file.txt # 给所有人加读权限(a = all)
chmod u=rwx,g=rx,o= file # 精确设置:owner 全有,group 能读能进,others 啥也没有
数字模式(高效):
chmod 755 file # rwxr-xr-x(owner 全有,其他人只读+进入)
chmod 644 file # rw-r--r--(owner 可读写,其他人只读)
chmod 700 dir # rwx------(只有 owner 能读/写/进入)
chmod 777 file # rwxrwxrwx(所有人全有 —— 危险!慎用!)
chown -- 改文件/目录
chown alice file.txt # 改 owner 为 alice
chown alice:developers file.txt # 改 owner 为 alice,group 为 developers
chown :nginx file.txt # 只改 group 为 nginx(冒号前留空)
chown -R nginx:nginx /var/log/nginx # 递归修改目录的所有者和组
sudo --- 临时借用 root 权限
普通用户想做特权操作(如修改文件系统、管理服务),需要 sudo :
sudo systemctl restart nginx # 以 root 身份重启 Nginx
sudo vi /etc/nginx/nginx.conf # 以 root 身份编辑配置
sudo su - # 直接切换到 root 用户
能否使用 sudo 取决于用户在 /etc/sudoers 文件中配置。通常,属于 wheel 组( CentOS/RHEL ) 或 sudo 组( Ubuntu/Debian ) 的用户可以使用 sudo 。
更改文件属性
chgrp
修改文件属组:
chgrp -R [属组名] [文件名] // -R 可以递归修改文件下属属性
chown
更改文件宿主,也可以修改文件属组:
chown -R [属主名] [文件名]
chown -R [属主名]:[属组名] [文件名]
chmod
开启文件目录权限: r 的权限是 4; w 的权限是 2; x 的权限是 1 ,修改的时候以三位数字分别修改二位至四位,五位至七位,八位至十位的权限。
sudo chmod -R [权限和][权限和][权限和] [文件名] // -R 可以递归修改权限