Chown&Chmod - Debian的文件&目录权限

简介

Linux 权限分为2部分:

  1. 每个文件和目录都有三个权限: 读取 写入 执行
  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

使用

介绍完文件和目录权限之后,需要了解两个工具:

  1. chown :用来更改实体
  2. 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
chown root /root/test

验证:

ls -ld /root/test
drwxr-xr-x 2 root root 4096 Mar 23 05:01 /root/test