Linux 系统中的权限管理教程
Linux 系统是一个多用户多任务的操作系统,为了保护系统的安全性和稳定性,需要对不同的用户和进程进行权限的控制和管理。Linux 系统中有三种身份(用户、组、其他)和三种权限(读、写、执行),每个文件或目录都有一个属主、一个属组和一个访问模式,用来确定哪些用户可以对其进行哪些操作。本文将介绍 Linux 系统中的权限管理的基本概念和方法,包括如何查看和修改文件或目录的权限、如何使用运行级别控制系统的启动模式、如何使用 ACL 扩展文件的访问控制等。
一、Linux 系统中的权限类别和身份类别
1.1 权限类别
Linux 系统中,对于文件或目录,一般有三种权限,分别是:
读(read):用字母 r 表示,表示可以查看文件的内容或者列出目录的内容。
写(write):用字母 w 表示,表示可以修改文件的内容或者在目录中创建或删除文件。
执行(execute):用字母 x 表示,表示可以运行文件或者进入目录。
这三种权限可以用数字 4、2 和 1 分别表示,也可以用八进制数表示它们的组合,例如:
rwx = 4 + 2 + 1 = 7
rw- = 4 + 2 = 6
r-x = 4 + 1 = 5
r-- = 4
-wx = 2 + 1 = 3
--x = 1
--- = 0
1.2 身份类别
Linux 系统中,对于每个文件或目录,都有一个属主(owner)和一个属组(group),分别表示该文件或目录的所有者和所属的用户组。除此之外,还有其他用户(other),表示除了属主和属组之外的所有用户。这三种身份可以用字母 u、g 和 o 分别表示,也可以用字母 a 表示所有身份。
每个用户都有一个唯一的用户名和用户 ID(UID),以及一个或多个用户组和组 ID(GID)。当用户
创建一个文件或目录时,该文件或目录的属主就是该用户,属组就是该用户的主要组。用户可以通过命令 id 查看自己的用户名、UID 和所属的组名和 GID。
二、Linux 系统中的权限管理命令
2.1 查看文件或目录的权限
在 Linux 系统中,可以使用 ls 命令查看文件或目录的属性,其中就包括权限信息。例如:
$ ls -l
total 12
drwxr-xr-x. 2 root root 4096 Aug 19 02:14 dir1
-rw-r--r--. 1 root root 100 Aug 19 02:
-rwxr-xr-x. 1 root root 28 Aug 19 02:14 file2.sh
上面的输出中,每一行代表一个文件或目录,第一列是权限信息,由十个字符组成。第一个字符表示文件类型,有以下几种:
-:普通文件
d:目录文件
l:符号链接(类似 Windows 的快捷方式)
b:块设备文件(例如硬盘、光驱等)
c:字符设备文件(例如键盘、鼠标等)
p:管道文件
s:套接字文件
后面九个字符分为三组,每组三个字符,分别表示属主、属组和其他用户对该文件或目录的权限。例如:
rwxr-xr-x 表示属主有读、写、执行的权限,属组和其他用户只有读和执行的权限。
rw-r--r-- 表示属主有读和写的权限,属组和其他用户只有读的权限。linux用户系统相关命令
rwx------ 表示属主有读、写、执行的权限,属组和其他用户没有任何权限。
2.2 修改文件或目录的权限
在 Linux 系统中,可以使用 chmod 命令修改文件或目录的权限。该命令的基本语法是:
chmod [选项] 权限模式文件或目录
其中,[选项] 可以是以下之一:
-c:只显示改变了权限的文件或目录
-f:不显示错误信息
-v:显示所有文件或目录的详细信息
-R:递归地修改所有子文件或子目录的权限
权限模式可以有两种表示方法,一种是符号表示法,一种是数字表示法。
2.2.1 符号表示法
符号表示法的格式是:
[身份][操作][权限]
其中,[身份] 可以是以下之一:
u:属主
g:属组
o:其他用户
a:所有身份
[操作] 可以是以下之一:
+:增加权限
-:减少权限
=:设置唯一的权限
[权限] 可以是以下之一:
r:读权限
w:写权限
x:执行权限
可以同时指定多个身份、操作和权限,用逗号分隔。例如:
chmod u+x,g+x,o+x file.sh # 给所有身份增加执行权限
chmod u=rw,g=rw,o= # 给属主和属组设置读写权限,给其他用户设置读权限
chmod a-x dir1 # 给所有身份减少执行权限
2.2.2 数字表示法
数字表示法的格式是:
[属主][属组][其他用户]
其中,[属主]、[属组] 和 [其他用户] 都是一个八进制数,表示对应身份的权限。每个八进制数可以由三个二进制位表示,分别对应读、写、执行三种权限。例如:
八进制数二进制位权限
0000---
1001--x
2010-w-
3011-wx
4100r--
5101r-x
6110rw-
7111rwx
例如:
chmod755 file.sh # 给属主设置读写执行权限,给属组和其他用户设置读执行权限
# 给属主设置读写权限,给属组和其他用户设置读权限
chmod700 dir1 # 给属主设置读写执行权限,给属组和其他用户设置无任何权限
2.3 修改文件或目录的属主和属组
在 Linux 系统中,可以使用 chown 命令修改文件或目录的属主和属组。该命令的基本语法是:
chown [选项] 用户名[:组名] 文件或目录
其中,[选项] 可以是以下之一:
-c:只显示改变了属主或属组的文件或目录
-f:不显示错误信息
-v:显示所有文件或目录的详细信息
-R:递归地修改所有子文件或子目录的属主或属组
用户名和组名可以用实际的名称或者对应的 ID 表示。如果只指定用户名,则只修改文件或目录的属主;如果指定用户名和组名,则同时修改文件或目录的属主和属组。例如:
chown # 将 的属主修改为 alice
chown alice:users file2.sh # 将 file2.sh 的属主修改为 alice,属组修改为 users
chown1000:1000 dir1 # 将 dir1 的属主和属组修改为 ID 为 1000 的用户和组
在 Linux 系统中,还可以使用 chgrp 命令只修改文件或目录的属组。该命令的基本语法是:
chgrp [选项] 组名文件或目录
其中,[选项] 和 chown 命令的相同。组名可以用实际的名称或者对应的 ID 表示。例如:
chgrp # 将 的属组修改为 users
chgrp1000 file2.sh # 将 file2.sh 的属组修改为 ID 为 1000 的组
三、Linux 系统中的运行级别
3.1 运行级别的概念
运行级别(runlevel)是 Linux 系统中用来控制系统的启动模式和运行状态的一种机制。不同的运行级别可以启动不同的服务和进程,以满足不同的需求。Linux 系统中有以下几种运行级别:
运行级别含义
0关机(halt)
1单用户模式(single user mode),只有 root 用户可以登录,没有网络服务,用于系统维护
2多用户模式(multiuser mode),没有网络服务,不支持远程登录
3多用户模式(multiuser mode),有网络服务,支持远程登录
4未定义,保留给用户自定义
5图形界面模式(graphical mode),有网络服务,支持远程登录,启动图形界面
6重启(reboot)
3.2 查看和切换运行级别
在 Linux 系统中,可以使用 runlevel 命令查看当前和上一个运行级别。例如:
$ runlevel
N 3
上面的输出表示当前的运行级别是 3,上一个运行级别是 N(表示没有上一个运行级别)。
在 Linux 系统中,可以使用 init 命令切换运行级别。该命令的基本语法是:
init [选项] 运行级别
其中,[选项] 可以是以下之一:
-t:指定切换运行级别前等待的秒数
运行级别可以是上表中的任意一个数字。例如:
init 0# 切换到运行级别 0,即关机
init 5# 切换到运行级别 5,即图形界面模式
init -t 106# 在等待 10 秒后切换到运行级别 6,即重启
四、Linux 系统中的 ACL 权限
4.1 ACL 权限的概念
ACL(Access Control List)是一种扩展文件或目录的访问控制的方法。传统的权限管理只能针对三种身份(属主、属组、其他用户)设置三种权限(读、写、执行),而 ACL 可以针对任意用户或用户组设置任意权限,从而实现更细粒度的权限控制。
在 Linux 系统中,每个文件或目录都有一个 ACL 权限列表,其中包含以下几种类型的条目:
u:用户条目,针对特定用户设置权限
g:组条目,针对特定用户组设置权限
o:其他用户条目,针对除了属主和属组之外的所有用户设置权限
m:掩码条目,限制组和其他用户的最大权限
d:默认条目,针对目录设置的默认 ACL 权限,会被该目录下的新建文件或目录继承
每个条目都有一个对应的权限值,表示该条目所指定的身份的权限。例如:
u:alice:rwx 表示给用户 alice 设置读写执行的权限
g:users:r-x 表示给用户组 users 设置读执行的权限
o:-w- 表示给其他用户设置写的权限
m:r-x 表示限制组和其他用户的最大权限为读执行
d:u:alice:rwx 表示给目录设置默认的用户条目,给用户 alice 设置读写执行的权限
4.2 查看和修改 ACL 权限
在 Linux 系统中,可以使用 getfacl 命令查看文件或目录的 ACL 权限。该命令的基本语法是:
getfacl [选项] 文件或目录
其中,[选项] 可以是以下之一:
-a:只显示访问控制列表,不显示默认控制列表
-d:只显示默认控制列表,不显示访问控制列表
-R:递归地显示所有子文件或子目录的 ACL 权限
例如:
$
# file:
# owner: root
# group: root
user::rw-
user:alice:rwx #effective:rw-
group::r--
group:users:r-x #effective:r--
mask::rw-
other::r--
上面的输出表示 的 ACL 权限如下:
属主是 root,有读写权限
属组是 root,有读权限
用户 alice 有读写执行权限,但受掩码限制,只能实际使用读写权限
用户组 users 有读执行权限,但受掩码限制,只能实际使用读权限
其他用户有读权限
在 Linux 系统中,可以使用 setfacl 命令修改文件或目录的 ACL 权限。该命令的基本语法是:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论