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.txt
or
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.txt
or
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/archive
chown 语法
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
验证:
ls -ld /root/test
drwxr-xr-x 2 root root 4096 Mar 23 05:01 /root/test