Linux系统权限
Linux操作系统是基于Unix的多用户以及权限隔离的文件系统,想要掌握Linux,理解Linux操作系统的权限管理是非常重要的。
准备工作
- 掌握前面终端基础和文件管理基础
用户
如前面提到的,Linux是一个多用户操作系统。在谈论所有权和权限之前,必须先明白Linux用户和组的基础知识,因为所有权和权限是Linux系统的基础。
在Linux中,有两种用户类型,包括系统用户和普通用户。系统用户用于在系统上运行非交互式或者后台进程,而普通用户用户交互式登录和运行进程。在我们首次登录Linux系统时,会看到很多许多系统用户运行的系统所依赖的服务进程,这是所有多用户系统的基本工作原理。
一种简单的方式,我们可以通过查看/etc/passwd
文件内容来查看所有的系统用户,这个文件的每一行表示一个用户信息,以用户名为开头。
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:112::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:113::/nonexistent:/usr/sbin/nologin
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
landscape:x:110:115::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:111:1::/var/cache/pollinate:/bin/false
lance:x:1000:1000:,,,:/home/lance:/bin/bash
dnsmasq:x:112:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
超级用户
除了系统用户和普通用户之外,还有一个超级用户,即root
用户,超级用户能够覆盖任何文件所有权和权限限制。换句话说,超级用户有权限访问系统服务器上的任何文件内容,能够在系统范围内修改内容,必须保证超级用户的使用安全。
也可以为普通用户配置“超级管理权限”,在生产环境我们都推荐使用具有sudo
权限的普通用户。
用户组
用户组是0个或者多个用户的集合,一个用户属于一个用户组,也可以是同系统中其他多个组的成员。
一个简单方式可以查看系统所有用户组以及用户组下的用户成员信息,可以查看/etc/group
文件。
cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,lance
tty:x:5:syslog
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:lance
fax:x:21:
voice:x:22:
cdrom:x:24:lance
floppy:x:25:lance
tape:x:26:
sudo:x:27:lance
audio:x:29:lance
dip:x:30:lance
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:lance
sasl:x:45:
plugdev:x:46:lance
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
systemd-journal:x:101:
systemd-network:x:102:
systemd-resolve:x:103:
systemd-timesync:x:104:
crontab:x:105:
messagebus:x:106:
input:x:107:
kvm:x:108:
render:x:109:
syslog:x:110:
tss:x:111:
uuidd:x:112:
tcpdump:x:113:
ssh:x:114:
landscape:x:115:
admin:x:116:
netdev:x:117:lance
lxd:x:118:
lance:x:1000:
docker:x:119:
所有权和权限
在Linux中,每个文件都被一个用户和一个组所有,并具有该文件的访问权限。
在Linux中,可以用ls -l
命令查看用户和组信息,以及文件权限。
文件模式
通过下面这张图来帮助我们理解文件类型和权限:
文件类型
在Linux中,文件类型有基本的两种,普通文件和特殊文件。文件类型由文件模式的第一个字符来表示,也将其称为文件类型字段。
普通文件在文件类型中使用-
符号来表示,普通文件只可以是包含数据的普通文件。
区别于普通文件,Linux使用字母来标识特色文件。例如d
表示文件夹,l
表示链接文件。
权限类别
在文件模式图中可以看到,文件模式中除了文件标识以外,还有三组权限字符串分别表示所属用户权限、用户组权限、其他用户权限。这个规范在所有的Linux以及发行版本系统都是一致的。
- User: 文件所属用户的权限
- Group: 文件所属用户组的权限
- Other: 系统中其他用户的权限
权限解释
权限字符串解读如下:
- Read: 读权限,
r
- Write: 写权限,
w
- Execute: 是否可执行,
x
在权限标识符中-
表示权限缺失,比如r--
表示当前文件的某个权限范围为“只读”。
理解读、写、执行权限
我们在了解了文件的权限之后,需要了解这些权限允许用户做些什么工作。这些权限通常是组合使用,我们下面分别解释每个权限。
读
对于一个普通文件,读权限允许用户读取文件内容。
对于一个目录,读权限允许用户去查看目录下的文件和子目录。
写
对于一个普通文件,写权限允许用户修改或者移除文件。
对于一个目录,写权限允许用户移除文件目录,修改目录下的内容,以及修改目录下可读文件的内容。
执行
对于一个普通文件,执行权限允许用户执行当前文件。比如shell脚本等文件。
对于一个目录,执行权限允许用户操作和遍历目录下的文件内容(ls -l
命令所展示的内容列表)。
权限模式案例
列举几个常见的文件权限模式:
-
-rw-------
: 只能被所有者访问 -
-rwxr-xr-x
: 能够被每个系统用户执行 -
-rw-rw-rw-
: 能够被每个系统用户读写 -
drwxr-xr-x
: 目录可以被每个用户读取访问 -
drwxrwx---
: 目录只能被所有者和用户组修改 -
drwxr-x---
: 目录能够被用户组访问
通常情况下,拥有者用户权限是最高的,通常三个权限会配合使用。
修改权限
后期会继续介绍几个修改权限的命令:
chown
chgrp
chmod
小结
用户类型以及超级用户。
如何正确识别文件权限,以及每个权限代表的含义。