跳到主要内容

基本属性

通过:

ls -l

查看文件的属性。

在 linux 中,使用 chown 来修改所属用户和组; chmod 来修改用户的权限。

文件权限

Linux 的文件权限基于一个简单但强大的模型: 三个角色 x 三种操作

三个角色

角色代号含义
Owneru(user)文件的拥有者(通常是创建者)
Groupg(group)文件所属组的成员
Otherso(others)既不是 owner 也不在 group 里的所有人

三种角色

操作代号文件含义目录含义
Readr读取文件内容列出目录的文件名
Writew修改/删除文件内容在目录里创建/删除文件
Executex执行文件(如果是程序/脚本)进入目录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 串行端口设备(键盘 、 键盘)

目录权限的特殊性

目录的 rwx 和文件的含义完全不同:

权限对目录的含义通俗理解
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 可以递归修改权限