一、引言
在 Linux 操作系统的广袤领域中,权限管理与进程管理犹如两道坚实的壁垒,对系统的安全性、稳定性及运行效率起着至关重要的作用。本次讲解将引领各位深入探索 Linux 系统的权限机制和进程管理领域,通过对 chmod、chown、umask 等命令的运用来实现文件权限的修改、文件所有者的更改以及默认权限的设置。同时,还将学习使用 ps、top、kill 等命令对系统进程进行查看和管理。
二、权限管理
(一)Linux 系统的权限机制
在 Linux 系统中,每个文件和目录都被赋予了特定的权限,这些权限决定了谁能够对其进行读取(read)、写入(write)和执行(execute)操作。权限分为用户(user)、组(group)和其他人(others)三类。通过 ls -l
命令可以查看文件和目录的权限信息。
(二)修改文件权限:chmod 命令
chmod
命令如同万能钥匙一般,能够开启或关闭文件和目录的各种权限。它主要有两种使用方式:符号模式和八进制模式。
-
符号模式:
- 利用
u
(用户)、g
(组)、o
(其他人)和a
(所有人)来明确权限的适用对象。 - 采用
+
(添加)、-
(删除)和=
(设置)来确定权限的操作方式。 - 使用
r
(读取)、w
(写入)和x
(执行)来指定具体的权限内容。 - 例如:
chmod u+x file.txt
表示为文件file.txt
的用户添加执行权限。chmod g-w dir
表示为目录dir
的组成员删除写入权限。chmod o=r file.txt
表示设置文件file.txt
的其他人权限为只读。chmod a+rwx file.txt
表示为文件file.txt
的所有人添加读、写、执行权限。
- 利用
- 八进制模式:
- 使用三个八进制数字分别代表用户、组和其他人的权限,每个数字的取值范围为 0 到 7。
- 数字的计算方式为:读取权限对应数字 4,写入权限对应数字 2,执行权限对应数字 1。将所需的权限对应的数字相加即可得到八进制数字。
- 例如:
chmod 755 dir
表示设置目录dir
的权限为 755(用户:读、写、执行;组:读、执行;其他人:读、执行)。这里的 7 是 4(读取)+2(写入)+1(执行),5 是 4(读取)+1(执行)。chmod 644 file.txt
表示设置文件file.txt
的权限为 644(用户:读、写;组:读;其他人:读)。6 是 4(读取)+2(写入),4 是 4(读取)。
实际案例 1:团队项目中的文件权限管理
假设在一个软件开发项目中,团队成员需要共同协作。对于一个源代码文件,期望只有项目组成员可以读取和修改,而其他人无法访问。可使用以下命令设置权限:
chmod 660 file.txt
如此一来,文件的用户(通常为文件的创建者或所属团队成员)和组(项目组成员所在的组)具有读写权限,而其他人没有任何权限。
(三)更改文件所有者:chown 命令
chown
命令就如同所有权转移的工具。可以用它来更改文件或目录的所有者和组。
格式:chown [用户名]:[用户组名] [文件或目录名]
表示将文件 file.txt
的所有者更改为 cgqyw
,组更改为 cgqyw_group
。
实际案例 2:文件交接
当一位员工离职时,其负责的一些文件需要交接给新的负责人。可使用 chown
命令将这些文件的所有者更改为新负责人的用户名。例如:
chown new_employee:department_group important_documents.txt
(四)设置默认权限:umask 命令
umask
命令如同默认权限的护盾。它通过一个掩码值来指定哪些权限应该被禁用。当创建新的文件和目录时,这个护盾会自动生效,为它们设置默认权限。例如,umask 022
会使新创建的文件具有 644 权限(rw-r–r–),新创建的目录具有 755 权限(rwxr-xr-x)。
1.查看当前umask值
可以直接在终端输入umask来查看当前用户的默认umask值。
例如:
这里显示的 “0022” 表示当前的umask值。
2.理解umask值与权限的关系
八进制数字与权限的对应关系:
读取权限(r)对应数字 4。
写入权限(w)对应数字 2。
执行权限(x)对应数字 1。
umask值的作用:
umask值是一个掩码,它会屏蔽掉文件或目录创建时的某些权限。
当创建新文件时,默认权限是 666(rw-rw-rw-)减去umask值得到实际权限。
当创建新目录时,默认权限是 777(rwxrwxrwx)减去umask值得到实际权限。
3.不同umask值的示例
umask 022:
新创建的文件权限为 644(rw-r--r--)。
计算过程:666(默认文件权限)减去 022,即 6 - 0 = 6(用户有读、写权限),6 - 2 = 4(组有读权限),6 - 2 = 4(其他人有读权限)。
新创建的目录权限为 755(rwxr-xr-x)。
计算过程:777(默认目录权限)减去 022,即 7 - 0 = 7(用户有读、写、执行权限),7 - 2 = 5(组有读、执行权限),7 - 2 = 5(其他人有读、执行权限)。
umask 002:
新创建的文件权限为 664(rw-rw-r--)。
计算过程:666 减去 002,即 6 - 0 = 6(用户有读、写权限),6 - 0 = 6(组有读、写权限),6 - 2 = 4(其他人有读权限)。
新创建的目录权限为 775(rwxrwxr-x)。
计算过程:777 减去 002,即 7 - 0 = 7(用户有读、写、执行权限),7 - 0 = 7(组有读、写、执行权限),7 - 2 = 5(其他人有读、执行权限)。
umask 077:
新创建的文件权限为 600(rw-------)。
计算过程:666 减去 077,即 6 - 0 = 6(用户有读、写权限),6 - 7 没有意义,视为 0(组无任何权限),6 - 7 没有意义,视为 0(其他人无任何权限)。
新创建的目录权限为 700(rwx------)。
计算过程:777 减去 077,即 7 - 0 = 7(用户有读、写、执行权限),7 - 7 = 0(组无任何权限),7 - 7 = 0(其他人无任何权限)。
实际案例 3:安全的文件创建环境
在对安全性要求较高的服务器环境中,可以设置一个严格的 umask
值,以确保新创建的文件和目录具有更受限的权限。例如,设置 umask 077
,新创建的文件将只有所有者有读写权限,其他用户没有任何权限。
三、进程管理
(一)查看系统进程:ps 命令
ps
命令如同魔法望远镜,能够让用户看到系统中正在运行的各个进程。它有多种选项,可以组合使用以过滤和显示特定的进程信息。
常用选项:
-
ps aux
:显示所有用户的所有进程。 -
ps -ef
:以全格式显示所有进程。 -
ps - command
:显示指定命令的进程。
-
-A
或-e
:显示所有进程。包括其他用户的进程和没有控制终端的进程。- 例如:
ps -e
会列出系统中所有正在运行的进程。
- 例如:
-
-a
:显示除会话引线外的所有进程,与-x
选项结合时可查看所有进程,包括没有控制终端的进程。- 例如:
ps -a
会显示当前用户除会话引线外的进程。
- 例如:
-
-u
[用户名]:显示指定用户的进程信息。- 例如:
ps -u root
显示 root 用户的所有进程。
- 例如:
输出格式参数
-f
:全格式显示,包括 UID、PID、PPID、C、STIME、TTY、TIME、CMD 等字段,提供更详细的进程信息。
例如:ps -ef
以全格式显示所有进程信息。
-l
:长格式显示,显示比默认格式更多的信息,包括 F(内核分配的标志)、S(进程状态码)、UID、PID、PPID、C(处理器使用时间)、PRI(优先级)、NI(nice 值)、ADDR(内存地址)、SZ(进程占用的内存大小)、WCHAN(进程等待的内核函数地址)、TTY、TIME、CMD 等字段。
例如:ps -l
以长格式显示当前用户的进程信息。
其他参数
-w
:宽输出,不截断命令行输出,使输出内容更易阅读。
例如:ps -eww
以宽输出格式显示所有进程信息。
-o
[格式]:自定义输出格式,可以指定要显示的进程信息字段。
例如:ps -eo pid,ppid,cmd
只显示进程 ID(PID)、父进程 ID(PPID)和命令名(CMD)字段。
-H
:以层级结构显示进程信息,显示父子进程关系。
例如:ps -efH
以层级结构显示所有进程信息。
-T
:显示每个进程的线程信息。
例如:ps -eT
显示所有进程及其线程信息。
-C
[命令名]:只显示指定命令名的进程信息。
例如:ps -C bash
只显示 bash 命令的进程信息。
-p
[PID]:显示指定进程 ID 的进程信息。
例如:ps -p 1234
显示进程 ID 为 1234 的进程信息。
-M
:显示安全信息,如 SELinux 上下文等。
例如:ps -eM
显示所有进程的安全信息。
-L
:显示进程的轻量级进程(线程)信息。
例如:ps -eL
显示所有进程的线程信息,包括轻量级进程 ID(LWP)和内核线程 ID(NLWP)。
-r
:只显示正在运行的进程。
例如:ps -er
显示正在运行的所有进程。
-x
:显示没有控制终端的进程。
例如:ps -ax
显示所有进程,包括没有控制终端的进程。
(二)实时监控系统资源:top 命令
top
命令就像一个动态的仪表盘,能够实时显示系统中的进程和资源使用情况。
常用操作:
- 按
P
键:按 CPU 使用率排序进程。 - 按
M
键:按内存使用率排序进程。 - 按
q
键:退出top
命令。
(三)管理进程:kill 命令
kill
命令犹如魔法杀手,可以向进程发送信号,通常用于终止进程。
kill
命令用于向进程发送信号,以实现终止、暂停、继续等操作。
语法:
kill [选项] 进程号或进程组号或作业号
主要参数解释:
-s <信号名或信号编号>
:指定要发送的信号。如果不指定信号,默认发送TERM
(终止)信号。常见的信号有:TERM
(15):请求进程终止运行,这是比较友好的终止信号,进程在接收到这个信号后,通常会清理资源并正常退出。KILL
(9):强制终止进程,这个信号无法被捕获或忽略,通常在进程无法响应TERM
信号时使用,但使用这个信号可能会导致数据丢失或其他不良后果。HUP
(1):挂起信号,常用于通知进程重新读取配置文件等。INT
(2):中断信号,类似于在终端按下Ctrl+C
,通常用于请求进程停止当前操作并退出。
-l
:列出所有可用的信号名称和编号。-p
:打印进程号,而不发送信号。-a
:当处理某个进程时,不限制命令名和进程号的对应关系。
示例用法:
- 终止一个进程:假设进程号为 1234,使用
kill 1234
向该进程发送TERM
信号,请求它终止运行。 - 强制终止一个无响应的进程:
kill -9 1234
,使用KILL
信号强制终止进程号为 1234 的进程。 - 列出信号:
kill -l
会列出所有可用的信号名称和编号。
需要注意的是,使用kill
命令时要谨慎,尤其是使用强制终止信号,可能会导致数据丢失或系统不稳定。在终止进程之前,最好先尝试使用比较友好的信号,让进程有机会正常退出。同时,只有具有足够权限的用户才能终止其他用户的进程。
四、实践环节
现在,让我们通过几个实践案例来巩固所学知识:
- 创建一个名为
testfile
的文件,并为其设置权限为 600(仅用户有读写权限)。 - 使用
chown
命令将testfile
的所有者更改为另一个用户(假设用户名为otheruser
)。 - 设置
umask
值为 077,然后创建一个新的目录newdir
,并观察其权限。 - 使用
ps aux
命令列出所有进程,并找到某个特定进程的 PID(例如,查找名为sshd
的进程)。 - 使用
top
命令监控系统资源使用情况,并尝试按 CPU 使用率排序进程。 - 使用
kill
命令终止一个不必要的进程(注意:不要终止系统关键进程)。
- 例:这里运行了一个./myfor.sh死循环程序, 这里可以新登录一个root帐户,采用kill 20931 杀死这个进程。
切回原来的帐户,我们可以发现,死循环程序已中断。
五、结语
通过本次讲解,我们深入了解了 Linux 系统的权限机制和进程管理。掌握了 chmod
、chown
、umask
等命令来修改文件权限、更改文件所有者及设置默认权限,同时也学会了使用 ps
、top
、kill
等命令来查看和管理系统进程。希望这些知识能够帮助各位在 Linux 的世界中更加游刃有余地操作。
请注意,在实际操作中务必小心谨慎,避免对系统造成不必要的损害。同时,鼓励各位将这份教学文档分享给其他对 Linux 系统感兴趣的人,共同探索和学习这个强大的操作系统。
标签:ps,文件,umask,---,命令,Linux,进程,openEuler,权限 From: https://blog.csdn.net/cgqyw/article/details/142878804