浅谈Linux 权限、压缩、进程与服务
概述
放假回家,对Linux系统的一些知识进行重新的整理,做到温故而知新,对用户权限管理、文件赋权、压缩文件、进程与服务的知识进行了一次梳理和总结。
权限管理
Linux最基础的权限是用户和文件,先了解基础的用户权限和文件权限。
用户权限
在大多数的Linux发行版中,我们都建议初学者创建一个有限权利的账户,我的stark这个用户就是有限权限的账户。
有些命令对系统的稳定性和安全性造成威胁,具有有限的权限意味着我们不能运行一些可怕的命令,在Linux中,理论上来说,我们可以创建无数个用户,但是这些用户是被划分到不同的群组里面。
在安装完linux系统后,加入我们创建的个人用户叫做stark,这时系统中默认只有两个用户root和stark,我们只在必要的时候才会切换为root身份,其他时候,都是在用有限权限的用户在运行,这个策略的保护大大地提高了Linux系统的安全性,有效防止误操作或者是病毒的攻击。
1、sudo 暂时成为root,终端会提示你输入密码,这个密码是你个人用户的密码,即为stark的账户密码。
[stark@localhost ~]$ sudo systemctl status nginx.service
[sudo] stark 的密码:
2、sudo su
切换到root身份,使用exit
命令退出root,回到stark账号上。
3、su
,这个命令需要输入的是root的密码,这个是需要重点记忆的。
用户操作
1、添加账户名为 work 的用户,并设置密码
[root@localhost ~]# useradd work
[root@localhost ~]# passwd work
更改用户 work 的密码 。
新的密码:
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
2、删除用户
使用userdel删除用户,如果想删除home目录,使用-r命令
userdel work # 删除用户
userdel -r work # 删除用户和家目录
群组操作
1、创建名为work的群组
groupadd work
2、对群组添加用户
假如要将stark这个用户放到我刚创建的work
这个群组里。
usermod -g work stark
可以将一个用户添加到多个群组,用-G参数,把用户stark同时添加到work、stark的群组中,备注:群组名之间要用逗号分隔,而且没有空格!
usermod -G work,stark stark
- -i:对用户重命名
/home
中的用户家目录名不改变,需要手动修改 - -g:修改用户所在群组
需要注意的是,使用usermod
时要小心,因为配合-g
或-G
参数时,它会把用户从原先的群组里剔除,加入到新的群组。
如果你不想离开原先去群组,又想加入新的群组,可以在-G
的参数基础上加上-a
参数。
usermod -aG work,stark stark
3、删除群组
删除名为work的群组
groupdel work
4、用groups命令可以获知一个用户属于哪个群组
[root@localhost home]# groups stark
stark : work
文件权限
1、文件权限
修改文件的所有者和群组,这里有个chown
万能的命令,-R
参数非常有用,R是recursive的缩写,表示递归,用来设置子目录和子文件。
chown -R stark:stark file.txt
2、文件访问权限
在Linux系统里,每个文件和目录都有一系列的权限属性,使用chmod
命令修改文件的访问权限,chmod
命令不需要是root用户才能运行,只要你是此文件的所有者,就可以用chmod
来修改文件的访问权限。
chmod
的绝对用法来分配权限,使用数字赋予文件访问权限chmod 640 file.txt
,对所有者、所属组、其他用户,只要分别做加法就可以了,然后把三个和连起来。
权限 | 数字 | 说明 |
---|---|---|
r | 4 | 读 |
w | 2 | 写 |
x | 1 | 执行 |
chmod
的相对用法是使用字面来赋予权限,+表示添加权限,-表示去除权限,=表示分配权限。
[stark@localhost ~]$ chmod u=rwx,g=r,o=- test.sh
[stark@localhost ~]$ ll | grep test.sh
-rwxr----- 1 stark work 35 1月 5 16:34 test.sh
权限 | 说明 |
---|---|
u | 所有者 |
g | 群组 |
o | 其他 |
防火墙
Linux防火墙是一个用于管理系统内部网络访问的组件,旨在防止未经授权的访问和恶意攻击,Centos7以后 iptables 更换为 firewalld。
1、查看防火墙状态命令
systemctl status firewalldfirewall-cmd --state
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)Active: active (running) since Sun 2025-01-05 21:19:47 CST; 19min agoDocs: man:firewalld(1)Process: 268803 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)Main PID: 267866 (firewalld)Tasks: 3 (limit: 22689)Memory: 37.6MCPU: 833msCGroup: /system.slice/firewalld.service└─267866 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid
2、设置开放和移除端口
防火墙上添加和移除端口操作,以80端口为例,添加/移除操作后,需要重启防火墙服务。
#添加80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
#移除80端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent#重启防火墙
firewall-cmd --reload
systemctl reload firewalld.service
3、查看已经开放的端口
sudo firewall-cmd --list-ports
80/tcp 3306/tcp
重定向
重定向输出
Linux重定向的作用是把本来要显示在终端的命令结果,输送到别的地方,到文件中或者作为其他命令的输入。
>
最简单的操作就是把操作的命令的输出结果重定向到文件中,使用这个符号要小心,如果此文件不存在,则新建一个文件,如果此文件已经存在,那就会把文件内容覆盖掉,而且是不会征求用户确认的。
>>
是将重定向的内容写入到文件末尾,起到追加的作用,如果文件不存在,也会被创建。
有时候我们既不想把输出结果显示在终端上,也不想输出在文件中,Linux中有一个俗称黑洞文件 /dev/null
重定向错误输出
先介绍三种输出stdin
,stdout
,stderr
:
1、从键盘向终端输入数据,这是标准输入,也就是stdin,对应的文件描述符是0。
2、终端接收键盘输入的命令,会产生两种输出,即标准输出stdout,对应的文件描述符是1,一种是标准错误输出,即stderr,对应的文件描述符是2。
2>&1
将标准错误输出重定向与标准输出相同的地方。
定时任务
Linux中的定时任务由crontab
命令来执行,用来读取和修改名为crontab
的文件,crontab
文件包含了你要定时执行的程序列表,也包含了执行的时刻。
crontab
用于修改crontab文件,cron用于实际执行定时的程序。
crontab
的三个主要参数:
- -l:显示crontab文件
- -e:修改crontab文件
- -r:删除crontab文件
命令格式:
minute hour dom month dow command
1、分钟,取值范围 (0-59)
2、小时,取值范围 (0-23)
3、日,取值范围 (1-31)
4、月份,取值范围 (1-31)
5、星期几,取值范围 (0-6,星期日是0)
6、要执行的命令
例句:
Crontab | 意义 |
---|---|
47 * * * * command | 每个小时的47分都执行 command 命令 |
0 0 * * 1 command | 每个星期1的凌晨都执行 command 命令 |
30 5 1-15 * * command | 每个月的1-15日的5点30分都执行command命令 |
0 0 * * 1,3,4 command | 每个月星期一、星期三、星期四的凌晨都执行command命令 |
0 */2 * * * command | 每2个小时的整点(0,2,4,6 等等)都执行command命令 |
*/10 * * * 1-5 command | 每个星期一到星期五的每个10的倍数的分钟 |
压缩和解压
操作压缩和解压时,先了解两个概念,将多个文件变成一个总文件,叫打包,将一个大文件通过某些压缩算法变成一个小文件,叫压缩。
1、创建一个归档
把tartest文件夹中的文件,压缩成名为tartest.tar压缩包的命令如下。
- c: create 表示创建
- v: verbose 表示显示操作的细节
- f: file 指定归档文件
[stark@localhost ~]$ sudo tar -cvf tartest.tar tartest/
[sudo] stark 的密码:
tartest/
tartest/erros.log
tartest/file.txt
tartest/nohup.out
2、显示归档里的内容
-tf
显示归档里的内容,并不解开归档。
[stark@localhost ~]$ tar -tf tartest.tar
tartest/
tartest/erros.log
tartest/file.txt
tartest/nohup.out
3、追加文件到归档
把 result.txt 追加到文档到 tartest.tar 归档中
[stark@localhost ~]$ tar -rvf tartest.tar result.txt
result.txt
4、解压归档文件
tar -xvf tartest.tar
进程和服务
进程
简单来说,进程就是加载到内存中运行的程序,大多数程序运行时都只在内存中启动一个进程,有的软件在程序运行时却会创建不少进程,比如 Apache、Mysql等等。
1、列出所有参数的所有进程
ps -ef
2、列出指定用户运行的进程
ps -u www
3、通过Cpu和内存过滤进程
ps aux | less
默认的结果集是未排好序的,可以通过 --sort
参数来排序,根据CPU使用率降序排列:ps -aux --sort -pcpu
,根据内存使用率来降序排列:ps -aux --sort -pmem
将CPU和内存参数合并到一起,并通过管道显示前10个结果ps -aux --sort -pcpn,+pmem | head
4、以树形结构显示进程
pstree 命令有很丰富的参数,更多使用man pstree
查看文档
[stark@localhost ~]$ pstree -p | grep mysql|-mysqld_safe(164526)---mysqld(165067)-+-{mysqld}(165068)| |-{mysqld}(165069)| |-{mysqld}(165070)
5、关闭进程
5.1、Ctrl+C
停止终端中正在运行的进程
Ctrl+C
这个组合键只能作用于当前终端中正在运行的程序,而终端中的复制和粘帖需要用Ctrl+Shift+C
和Ctrl+Shift+V
来执行。
5.2、kill命令
可以同时用kill来结束好几个进程,只要用空格隔开他们的PID,可以用kill -9
来立即强制结束进程。
sudo kill 254653 254656 254655
5.3、killall
killall命令同一个程序运行时可能启动多个进程,不同于kill命令,killall命令后接程序名。
服务
在Linux中有特殊的进程,这些进程不与任何终端关联,并且无论用户的身份如何,都在后台运行,这些进程的父进程是PID进程号为1的进程,PID为1的进程只在系统关闭时才会被销毁。
这些进程会在后台一直运行,并且等待我们给他们分配工作,在Unix/Liunx的世界中,我们将这类进程称之为守护进程,守护进程也被称为service,服务器软件大多数都是以守护进程形式运行的,守护进行的名字通常会在最后有一个d,例如systemd,httpd,smbd
等等。
Linux操作系统的开机过程:BIOS启动->
BootLoader启动->
加载系统内核->
内核进行初始化->
启动初始化进程->
初始化工作。
Systemd
Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。历史上,Linux 的启动一直采用init进程,Systemd使用并行代替了init的串行。Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。
1、Systemd管理系统
# 重启系统
$ sudo systemctl reboot# 关闭系统,切断电源
$ sudo systemctl poweroff# CPU停止工作
$ sudo systemctl halt# 暂停系统
$ sudo systemctl suspend# 让系统进入冬眠状态
$ sudo systemctl hibernate# 让系统进入交互式休眠状态
$ sudo systemctl hybrid-sleep# 启动进入救援状态(单用户状态)
$ sudo systemctl rescue
systemctl list-units
命令可以查看当前系统的所有 Unit 。
# 列出正在运行的 Unit
$ systemctl list-units# 列出所有Unit,包括没有找到配置文件的或者启动失败的
$ systemctl list-units --all# 列出所有没有运行的 Unit
$ systemctl list-units --all --state=inactive# 列出所有加载失败的 Unit
$ systemctl list-units --failed# 列出所有正在运行的、类型为 service 的 Unit
$ systemctl list-units --type=service
2、Unit 的状态
systemctl status命令用于查看系统状态和单个 Unit 的状态。
# 显示系统状态
$ systemctl status# 显示单个 Unit 的状态
$ sysystemctl status bluetooth.service# 显示远程主机的某个 Unit 的状态
$ systemctl -H stark@172.16.163.141 status httpd.service
除了status命令,systemctl还提供了三个查询状态的简单方法,主要供脚本内部的判断语句使用,以mysql服务为例。
# 显示某个 Unit 是否正在运行
$ systemctl is-active mysql.service# 显示某个 Unit 是否处于启动失败状态
$ systemctl is-failed mysql.service# 显示某个 Unit 服务是否建立了启动链接
$ systemctl is-enabled mysql.service
3、Unit 管理
对于用户来说,最常用的是下面这些命令,用于启动和停止 Unit(主要是 service)。
# 立即启动一个服务
$ sudo systemctl start apache.service# 立即停止一个服务
$ sudo systemctl stop apache.service# 重启一个服务
$ sudo systemctl restart apache.service# 杀死一个服务的所有子进程
$ sudo systemctl kill apache.service# 重新加载一个服务的配置文件
$ sudo systemctl reload apache.service# 重载所有修改过的配置文件
$ sudo systemctl daemon-reload# 显示某个 Unit 的所有底层参数
$ systemctl show httpd.service# 显示某个 Unit 的指定属性的值
$ systemctl show -p CPUShares httpd.service# 设置某个 Unit 的指定属性
$ sudo systemctl set-property httpd.service CPUShares=500
4、开机启动
# 开机自动启动服务
sudo systemctl enable httpd# 开机不自动启动服务
sudo systemctl disable httpd# 查看服务是否开机自动启动
sudo systemctl is-enable httpd# 查看各个级别下服务的启动和禁止情况
systemctl list-unit-files --type=service
问题
1、sudo 命令,暂时成为root,需要注意的是有可能会提示 stark 不在 sudoers 文件中。此事将被报告。
,切换root身份,编辑/etc/sudoers
文件,配置权限,步骤如下。
su -
vim /etc/sudoers
stark ALL=(ALL) ALL
相关文章:

浅谈Linux 权限、压缩、进程与服务
概述 放假回家,对Linux系统的一些知识进行重新的整理,做到温故而知新,对用户权限管理、文件赋权、压缩文件、进程与服务的知识进行了一次梳理和总结。 权限管理 Linux最基础的权限是用户和文件,先了解基础的用户权限和文件权限…...

006 LocalStorage和SessionStorage
JWT存储在LocalStorage与SessionStorage里的区别和共同点如下: 区别 数据有效期: • LocalStorage:始终有效,存储的数据会一直保留在浏览器中,即使窗口或浏览器关闭也一直保存,因此常用作持久数据。 • Se…...

AJAX RSS Reader:技术解析与应用场景
AJAX RSS Reader:技术解析与应用场景 引言 随着互联网的快速发展,信息量呈爆炸式增长。为了方便用户快速获取感兴趣的信息,RSS(Really Simple Syndication)技术应运而生。AJAX RSS Reader作为一种基于AJAX技术的信息读取工具,在用户体验和信息获取方面具有显著优势。本…...

Go优雅实现redis分布式锁
前言 系统为了保证高可用,通常会部署多实例,并且会存在同时对共享资源并发读写,这时候为了保证读写的安全,常规手段是会引入分布式锁,本文将介绍如何使用redis设计一个优雅的Go分布式锁。 设计 redis分布式锁是借助…...

本地部署deepseek模型步骤
文章目录 0.deepseek简介1.安装ollama软件2.配置合适的deepseek模型3.安装chatbox可视化 0.deepseek简介 DeepSeek 是一家专注于人工智能技术研发的公司,致力于打造高性能、低成本的 AI 模型,其目标是让 AI 技术更加普惠,让更多人能够用上强…...

(2025 年最新)MacOS Redis Desktop Manager中文版下载,附详细图文
MacOS Redis Desktop Manager中文版下载 大家好,今天给大家带来一款非常实用的 Redis 可视化工具——Redis Desktop Manager(简称 RDM)。相信很多开发者都用过 Redis 数据库,但如果你想要更高效、更方便地管理 Redis 数据&#x…...

C++ 写一个简单的加减法计算器
************* C topic:结构 ************* Structure is a very intersting issue. I really dont like concepts as it is boring. I would like to cases instead. If I want to learn something, donot hesitate to make shits. Like building a house. Wh…...

计算机网络基础 - 链路层(3)
计算机网络基础 链路层和局域网交换局域网链路层寻址地址解析协议 ARP以太网物理拓扑以太网帧结构以太网提供的服务以太网标准 链路层交换机交换机转发和过滤自学习交换机优点交换机和路由器比较 大家好呀!我是小笙,本章我主要分享计算机网络基础 - 链路…...

ray.rllib 入门实践-5: 训练算法
前面的博客介绍了ray.rllib中算法的配置和构建,也包含了算法训练的代码。 但是rllib中实现算法训练的方式不止一种,本博客对此进行介绍。很多教程使用 PPOTrainer 进行训练,但是 PPOTrainer 在最近的 ray 版本中已经取消了。 环境配置&#x…...

FPGA 使用 CLOCK_LOW_FANOUT 约束
使用 CLOCK_LOW_FANOUT 约束 您可以使用 CLOCK_LOW_FANOUT 约束在单个时钟区域中包含时钟缓存负载。在由全局时钟缓存直接驱动的时钟网段 上对 CLOCK_LOW_FANOUT 进行设置,而且全局时钟缓存扇出必须低于 2000 个负载。 注释: 当与其他时钟约束配合…...

选择的阶段性质疑
条条大路通罗马,每个人选择的道路,方向并不一样,但不妨碍都可以到达终点,而往往大家会更推崇自己走过的路径。 自己靠什么走向成功,自己用了什么方法,奉行什么原则或者理念,也会尽可能传播这种&…...

固有频率与模态分析
目录 引言 1. 固有频率:物体的“天生节奏” 1.1 定义 1.2 关键特点 1.3 实际意义 2. 有限元中的模态分析:给结构“体检振动” 2.1 模态分析的意义 2.2 实际案例 2.2.1 桥梁模态分析 2.2.2 飞机机翼模态分析 2.2.3 具体事例 3. 模态分析的工具…...

数科OFD证照生成原理剖析与平替方案实现
一、 引言 近年来,随着电子发票的普及,OFD格式作为我国电子发票的标准格式,其应用范围日益广泛。然而,由于不同软件生成的OFD文件存在差异,以及用户对OFD文件处理需求的多样化,OFD套餐转换工具应运而生。本…...

CAN总线数据采集与分析
CAN总线数据采集与分析 目录 CAN总线数据采集与分析1. 引言2. 数据采集2.1 数据采集简介2.2 数据采集实现3. 数据分析3.1 数据分析简介3.2 数据分析实现4. 数据可视化4.1 数据可视化简介4.2 数据可视化实现5. 案例说明5.1 案例1:数据采集实现5.2 案例2:数据分析实现5.3 案例3…...

SpringSecurity:There is no PasswordEncoder mapped for the id “null“
文章目录 一、情景说明二、分析三、解决 一、情景说明 在整合SpringSecurity功能的时候 我先是去实现认证功能 也就是,去数据库比对用户名和密码 相关的类: UserDetailsServiceImpl implements UserDetailsService 用于SpringSecurity查询数据库 Logi…...

ResNet 残差网络
目录 网络结构 残差块(Residual Block) ResNet网络结构示意图 残差块(Residual Block)细节 基本残差块(ResNet-18/34) Bottleneck残差块(ResNet-50/101/152) 残差连接类型对比 变体网…...

CAPL编程常见问题与解决方案深度解析
CAPL编程常见问题与解决方案深度解析 目录 CAPL编程常见问题与解决方案深度解析引言1. CAPL编程核心难点剖析1.1 典型问题分类2. 六大典型问题场景解析案例1:定时器资源竞争导致逻辑错乱2.1.1 问题现象2.1.2 根因分析2.1.3 解决方案案例2:大数据量报文处理引发性能瓶颈2.2.1 …...

信号处理以及队列
下面是一个使用C和POSIX信号处理以及队列的简单示例。这个示例展示了如何使用信号处理程序将信号放入队列中,并在主循环中处理这些信号。 #include <iostream> #include <csignal> #include <queue> #include <mutex> #include <thread…...

Linux pkill 命令使用详解
简介 pkill 命令用于根据进程名称、用户、组或其他属性终止进程。它是 procps-ng 包的一部分,通常比 kill 更受欢迎,因为它无需查找进程 ID (PID)。 常用选项 -<signal>, --signal <signal>:定义要发送给每个匹配进程的信号&am…...

react注意事项
1.状态的定义以及修改 2.排序用lodash进行排序 import _ from lodassh 3.利用className插件进行动态类名的使用 4.表单使用 5.react中获取dom...

【开源免费】基于SpringBoot+Vue.JS在线考试学习交流网页平台(JAVA毕业设计)
本文项目编号 T 158 ,文末自助获取源码 \color{red}{T158,文末自助获取源码} T158,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

怎样在PPT中启用演讲者视图功能?
怎样在PPT中启用演讲者视图功能? 如果你曾经参加过重要的会议或者演讲,你就会知道,演讲者视图(Presenter View)对PPT展示至关重要。它不仅能帮助演讲者更好地掌控演讲节奏,还能提供额外的提示和支持&#…...

UE AController
定义和功能 AController是一种特定于游戏的控制器,在UE框架中用于定义玩家和AI的控制逻辑。AController负责处理玩家输入,并根据这些输入驱动游戏中的角色或其他实体的行为。设计理念 AController设计用于分离控制逻辑与游戏角色,增强游戏设计…...

H264原始码流格式分析
1.H264码流结构组成 H.264裸码流(Raw Bitstream)数据主要由一系列的NALU(网络抽象层单元)组成。每个NALU包含一个NAL头和一个RBSP(原始字节序列载荷)。 1.1 H.264码流层次 H.264码流的结构可以分为两个层…...

JAVA 接口、抽象类的关系和用处 详细解析
接口 - Java教程 - 廖雪峰的官方网站 一个 抽象类 如果实现了一个接口,可以只选择实现接口中的 部分方法(所有的方法都要有,可以一部分已经写具体,另一部分继续保留抽象),原因在于: 抽象类本身…...

反向代理模块b
1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说,反向代理就相当于…...

Nuitka打包python脚本
Python脚本打包 Python是解释执行语言,需要解释器才能运行代码,这就导致在开发机上编写的代码在别的电脑上无法直接运行,除非目标机器上也安装了Python解释器,有时候还需要额外安装Python第三方包,相当麻烦。 事实上P…...

pytorch线性回归模型预测房价例子
import torch import torch.nn as nn import torch.optim as optim import numpy as np# 1. 创建线性回归模型类 class LinearRegressionModel(nn.Module):def __init__(self):super(LinearRegressionModel, self).__init__()self.linear nn.Linear(1, 1) # 1个输入特征&…...

练习题 - DRF 3.x Caching 缓存使用示例和配置方法
在构建现代化的 Web 应用程序时,性能优化是一个非常重要的环节。尤其是在使用 Django Rest Framework (DRF) 开发 API 服务时,合理地利用缓存技术可以显著提高应用的响应速度和减轻数据库的负担。DRF 提供了多种缓存机制,包括基于内存、文件系统、数据库以及第三方缓存服务(…...

如何解压7z文件?8种方法(Win/Mac/手机/网页端)
7z 文件是一种高效的压缩文件格式,由 7 - Zip 软件开发者所采用。它运用独特的压缩算法,能显著缩小文件体积,便于存储与传输各类数据,像软件安装包、大型资料集等。但要使用其中内容,就必须解压,因为处于压…...