浅谈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最基础的权限是用户和文件,先了解基础的用户权限和文件权限…...
SpringBoot中Excel表的导入、导出功能的实现
文章目录 一、easyExcel简介二、Excel表的导出2.1 添加 Maven 依赖2.2 创建导出数据的实体类4. 编写导出接口5. 前端代码6. 实现效果 三、excel表的导出1. Excel表导入的整体流程1.1 配置文件存储路径 2. 前端实现2.1 文件上传组件 2.2 文件上传逻辑3. 后端实现3.1 文件上传接口…...
JavaScript前后端交互-AJAX/fetch
摘自千峰教育kerwin的js教程 AJAX 1、AJAX 的优势 不需要插件的支持,原生 js 就可以使用用户体验好(不需要刷新页面就可以更新数据)减轻服务端和带宽的负担缺点: 搜索引擎的支持度不够,因为数据都不在页面上…...
动态规划DP 背包问题 完全背包问题(题目分析+C++完整代码)
概览检索 动态规划DP 概览(点击链接跳转) 动态规划DP 背包问题 概览(点击链接跳转) 完全背包问题 原题链接 AcWiing 3. 完全背包问题 题目描述 有 N种物品和一个容量是 V的背包,每种物品都有无限件可用。 第 i种物…...
【cocos creator】【模拟经营】餐厅经营demo
下载:【cocos creator】模拟经营餐厅经营...
JavaScript系列(52)--编译优化技术详解
JavaScript编译优化技术详解 🚀 今天,让我们深入探讨JavaScript的编译优化技术。通过理解和应用这些技术,我们可以显著提升JavaScript代码的执行效率。 编译优化基础概念 🌟 💡 小知识:JavaScript引擎通常…...
【深度学习】softmax回归的从零开始实现
softmax回归的从零开始实现 (就像我们从零开始实现线性回归一样,)我们认为softmax回归也是重要的基础,因此(应该知道实现softmax回归的细节)。 本节我们将使用Fashion-MNIST数据集,并设置数据迭代器的批量大小为256。 import torch from IP…...
【Redis】set 和 zset 类型的介绍和常用命令
1. set 1.1 介绍 set 类型和 list 不同的是,存储的元素是无序的,并且元素不允许重复,Redis 除了支持集合内的增删查改操作,还支持多个集合取交集,并集,差集 1.2 常用命令 命令 介绍 时间复杂度 sadd …...
程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<3>
大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 今天我们来对上一节做一些小补充,了解学习一下assert断言,指针的使用和传址调用…...
代码随想录-训练营-day16
530. 二叉搜索树的最小绝对差 - 力扣(LeetCode) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode…...
Vue 3 中的父子组件传值:详细示例与解析
在 Vue 3 中,父子组件之间的数据传递是一个常见的需求。父组件可以通过 props 将数据传递给子组件,而子组件可以通过 defineProps 接收这些数据。本文将详细介绍父子组件传值的使用方法,并通过优化后的代码示例演示如何实现。 1. 父子组件传值…...
谈谈你所了解的AR技术吧!
深入探讨 AR 技术的原理与应用 在科技飞速发展的今天,AR(增强现实)技术已经悄然改变了我们与周围世界互动的方式。你是否曾想象过如何能够通过手机屏幕与虚拟物体进行实时互动?在这篇文章中,我们将深入探讨AR技术的原…...
神经网络的数据流动过程(张量的转换和输出)
文章目录 1、文本从输入到输出,经历了什么?2、数据流动过程是张量,如何知道张量表达的文本内容?3、词转为张量、张量转为词是唯一的吗?为什么?4、如何保证词张量的质量和合理性5、总结 🍃作者介…...
爬取鲜花网站数据
待爬取网页: 代码: import requestsfrom lxml import etree import pandas as pdfrom lxml import html import xlwturl "https://www.haohua.com/xianhua/"header {"accept":"image/avif,image/webp,image/apng,image/sv…...
vue框架技术相关概述以及前端框架整合
vue框架技术概述及前端框架整合 1 node.js 介绍:什么是node.js Node.js就是运行在服务端的JavaScript。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎。 作用 1 运行java需要安装JDK,而Node.js是JavaScript的运行环…...
深入解析 C++ 字符串处理:提取和分割的多种方法
在 C 编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时。本文将详细探讨如何使用 C 标准库中的工具(如 std::istringstream 和 std::string 的成员函数)来提取和分割字符串,并分析不同方法的适…...
数据结构 树2
文章目录 前言 一,二叉搜索树的高度 二,广度优先VS深度优先 三,广度优先的代码实现 四,深度优先代码实现 五,判断是否为二叉搜索树 六,删除一个节点 七,二叉收索树的中序后续节点 总结 …...
NeetCode刷题第19天(2025.1.31)
文章目录 099 Maximum Product Subarray 最大乘积子数组100 Word Break 断字101 Longest Increasing Subsequence 最长递增的子序列102 Maximum Product Subarray 最大乘积子数组103 Partition Equal Subset Sum 分区等于子集和104 Unique Paths 唯一路径105 Longest Common Su…...
Google Chrome-便携增强版[解压即用]
Google Chrome-便携增强版 链接:https://pan.xunlei.com/s/VOI0OyrhUx3biEbFgJyLl-Z8A1?pwdf5qa# a 特点描述 √ 无升级、便携式、绿色免安装,即可以覆盖更新又能解压使用! √ 此增强版,支持右键解压使用 √ 加入Chrome增强…...
[EAI-027] RDT-1B,目前最大的用于机器人双臂操作的机器人基础模型
Paper Card 论文标题:RDT-1B: a Diffusion Foundation Model for Bimanual Manipulation 论文作者:Songming Liu, Lingxuan Wu, Bangguo Li, Hengkai Tan, Huayu Chen, Zhengyi Wang, Ke Xu, Hang Su, Jun Zhu 论文链接:https://arxiv.org/ab…...
什么是Rust?它有什么特点?为什么要学习Rust?
什么是Rust?它有什么特点?为什么要学习Rust? 如果你是一名编程初学者,或者已经有一些编程经验但对Rust感兴趣,那么这篇文章就是为你准备的!我们将用简单易懂的语言,带你了解Rust是什么、它有什…...
[EAI-028] Diffusion-VLA,能够进行多模态推理和机器人动作预测的VLA模型
Paper Card 论文标题:Diffusion-VLA: Scaling Robot Foundation Models via Unified Diffusion and Autoregression 论文作者:Junjie Wen, Minjie Zhu, Yichen Zhu, Zhibin Tang, Jinming Li, Zhongyi Zhou, Chengmeng Li, Xiaoyu Liu, Yaxin Peng, Chao…...
AIP-134 标准方法:Update
编号134原文链接AIP-134: Standard methods: Update状态批准创建日期2019-01-24更新日期2022-06-02 REST API通常向资源URI(如 /v1/publishers/{publisher}/books/{book} )发出 PATCH 或 PUT 请求,更新资源。 面向资源设计(AIP-…...
计算机网络一点事(24)
TCP可靠传输,流量控制 可靠传输:每字节对应一个序号 累计确认:收到ack则正确接收 返回ack推迟确认(不超过0.5s) 两种ack:专门确认(只有首部无数据) 捎带确认(带数据…...
DIFY源码解析
偶然发现Github上某位大佬开源的DIFY源码注释和解析,目前还处于陆续不断更新地更新过程中,为大佬的专业和开源贡献精神点赞。先收藏链接,后续慢慢学习。 相关链接如下: DIFY源码解析...
Kafka SSL(TLS)安全协议
文章目录 Kafka SSL(TLS)安全协议1. Kafka SSL 的作用1.1 数据加密1.2 身份认证1.3 数据完整性1.4 防止中间人攻击1.5 确保安全的分布式环境1.6 防止拒绝服务(DoS)攻击 2. Kafka SSL 配置步骤(1)创建 SSL 证…...
hexo部署到github page时,hexo d后page里面绑定的个人域名消失的问题
Hexo 部署博客到 GitHub page 后,可以在 setting 中的 page 中绑定自己的域名,但是我发现更新博客后绑定的域名消失,恢复原始的 githubio 的域名。 后面搜索发现需要在 repo 里面添加 CNAME 文件,内容为 page 里面绑定的域名&…...
【Block总结】MAB,多尺度注意力块|即插即用
文章目录 一、论文信息二、创新点三、方法MAB模块解读1、MAB模块概述2、MAB模块组成3、MAB模块的优势 四、效果五、实验结果六、总结代码 一、论文信息 标题: Multi-scale Attention Network for Single Image Super-Resolution作者: Yan Wang, Yusen Li, Gang Wang, Xiaoguan…...
移动互联网用户行为习惯哪些变化,对小程序的发展有哪些积极影响
一、碎片化时间利用增加 随着生活节奏的加快,移动互联网用户的碎片化时间越来越多。在等公交、排队、乘坐地铁等间隙,用户更倾向于使用便捷、快速启动的应用来满足即时需求。小程序正好满足了这一需求,无需下载安装,随时可用&…...
使用UpdateCursor删除行
UpdateCursor除了可以编辑表或要素类的行外,还可以删除行.但要记住,在编辑会话外删除行时,更改是永久性的. 操作方法: 1.打开IDLE,新建一个脚本 2.导入arcpy和os模块 import arcpy import os 3.设置工作空间 arcpy.env.workspace "<>" 4.在with语句中新…...
