Chown&Chmod - Debian的文件&目录权限
简介
Linux 权限分为2部分:
- 每个文件和目录都有三个权限: 读取 写入 执行
- 这些权限授予三个实体: 所有者 群组 其他
所有者是创建文件或目录的用户。该组是文件或目录所属的组。其他人是系统上的所有其他用户。
可以使用 ls -l 命令查看文件或目录的权限:
ls -l /var/log
total 3928
-rw-r--r-- 1 root root 18707 Mar 19 07:01 AdGuardHome.err
-rw-r--r-- 1 root root 0 Mar 18 00:42 AdGuardHome.out
lrwxrwxrwx 1 root root 39 Feb 11 12:25 README -> ../../usr/share/doc/systemd/README.logs
-rw-r--r-- 1 root root 16069 Mar 19 04:39 alternatives.log
drwxr-xr-x 2 root root 4096 Jul 16 2023 apparmor
drwxr-xr-x 2 root root 4096 Mar 19 08:22 apt
-rw-rw---- 1 root utmp 0 Feb 11 12:23 btmp
-rw-r----- 1 root adm 16728 Mar 19 07:01 cloud-init-output.log
-rw-r----- 1 root adm 618999 Mar 19 07:01 cloud-init.log
-rw-r--r-- 1 root root 303420 Mar 19 08:22 dpkg.log
-rw-r----- 1 root adm 2839910 Mar 19 09:41 fail2ban.log
-rw-r--r-- 1 root root 0 Feb 11 12:24 faillog
drwxr-sr-x+ 3 root systemd-journal 4096 Mar 17 22:41 journal
-rw-rw-r-- 1 root utmp 292292 Mar 19 07:05 lastlog
drwx------ 2 root root 4096 Mar 19 04:37 letsencrypt
-rw-rw-rw- 1 root root 14331 Mar 19 08:49 ntpd.log
drwx------ 2 root root 4096 Feb 11 12:25 private
drwxr-xr-x 3 root root 4096 Feb 11 12:25 runit
-rw------- 1 root root 43422 Mar 19 07:01 shorewall-init.log
-rw------- 1 root root 30255 Mar 19 07:01 shorewall6-init.log
drwxr-x--- 2 root adm 4096 Mar 18 05:37 unattended-upgrades
-rw-rw-r-- 1 root utmp 31872 Mar 19 07:05 wtmp为了方便理解,我把-rw-r--r--将拆分成- rw- r-- r--来看,便于理解。
- rw- r-- r-- 1 root root 16069 Mar 19 04:39 alternatives.log
| | | | | | |
| | | | | | └── 分组
| | | | | └── 用户
| | | | └── 该目录下有多少个文件
| | | └──其他权限
| | └── 分组权限
| └── 用户权限
└── 文件类型 第一个 - 用来标识文件类型:
| 参数 | 英文 | 中文 | 简介 |
|---|---|---|---|
- |
Directory file | 常规文件 | 可以是文本文件、可执行文件、图像等。 |
d |
Directory | 目录 | |
l |
Symbolic link | 符号链接 | 访问此文件时,Linux 会尝试访问链接文件 |
p |
Named Pipe | 命名管道 | |
b |
Block Device | 块设备 | |
s |
Socket | 插座 | |
c |
Character device | 字符设备 |
后三个 --- 用来标识权限
| 参数 | 英文 | 中文 | 二进制 | 八进制 |
|---|---|---|---|---|
--- |
000 | 0 | ||
r-- |
read | 读取权限 | 100 | 4 |
-w- |
write | 写入权限 | 010 | 2 |
--x |
execute | 执行权限 | 001 | 1 |
rwx |
read,write,execute | 读、写、执行 | 111 | 7 |
rw- |
read,write | 读、写 | 110 | 6 |
r-x |
read,execute | 读、执行 | 101 | 5 |
-wx |
write,execute | 写、执行 | 011 | 3 |
使用
介绍完文件和目录权限之后,需要了解两个工具:
- chown :用来更改实体
- chmod :用来更改文件或目录的权限
chmod语法
chmod [option] [mode] [file_folder_name]mode
-c, --changes 像 Verbose 一样,但仅在进行更改时才报告
--no-preserve-root 不要特别处理'/'(默认值)
--preserve-root 无法在'/'上递归操作
-f, --silent, --quiet 禁止显示大多数错误消息
-v, --verbose 为处理的每个文件输出诊断程序
--reference=RFILE 使用 RFILE 的模式而不是 MODE 值
-R, --recursive 以递归方式更改文件和目录
--help 显示此帮助并退出
--version 输出版本信息并退出option
u 所有者
g 群
o 别人
a 所有用户类(所有者、组等)
+ 添加权限
– 删除权限
= 将权限设置为指定值chmod 示例
例:将 /root/test/demo.txt 权限更改为:读写,执行,实体:所有者,群组,其他
chmod a=wrx /root/test/demo.txtor
chmod 777 /root/test/demo.txt验证:
ls -l /root/test/demo.txt
-rwxrwxrwx 1 root root 0 Mar 23 05:00 /root/test/demo.txt例:将 /root/test/demo.txt 实体-用户权限更改为:读,写,执行,实体-群组权限更改为:读,执行,实体-其他权限更改为:执行
chmod u=wrx,g=rx,o=x /root/test/demo.txtor
chmod 751 /root/test/demo.txt验证:
ls -l /root/test/demo.txt
-rwxr-x--x 1 root root 0 Mar 23 05:00 /root/test/demo.txt例:将 /root/test/demo.txt 现有的权限上,再添加 实体-用户的权限 读
chmod o+r /root/test/demo.txt验证:
ls -l /root/test/demo.txt
-rwxr-xr-x 1 root root 0 Mar 23 05:00 /root/test/demo.txt给证书目录 /etc/letsencrypt/archive 下所有文件添加实体-其他 执行权限
chmod -R o+x /etc/letsencrypt/archive查看目录沿途权限信息
namei -l /etc/letsencrypt/archivechown 语法
chown [new owner or group] [file or directory]chown 示例
例:将 /root/test/ 目录下所有文件的 实体-所有者 更改为 admin
chown -R admin /root/test/验证:
ls -l /root/test/
total 0
-rw-r--r-- 1 admin root 0 Mar 23 05:01 demo1.txt
-rw-r--r-- 1 admin root 0 Mar 23 05:00 demo.txt例:将 /root/test/ 目录的 实体-所有者 更改为 root
chown root /root/test验证:
ls -ld /root/test
drwxr-xr-x 2 root root 4096 Mar 23 05:01 /root/test