淺談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,對所有者、所屬組、其他用戶,只要分別做加法就可以了,然后把三個和連起來。

權限數字說明
r4
w2
x1執行

chmod的相對用法是使用字面來賦予權限,+表示添加權限,-表示去除權限,=表示分配權限。

[stark@localhost ~]$ chmod u=rwx,g=r,o=- test.sh
[stark@localhost ~]$ ll | grep test.sh
-rwxr-----  1 stark work    35  15 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+CCtrl+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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67384.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67384.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67384.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從源碼深入理解One-API框架:適配器模式實現LLM接口對接

1. 概述 one-api 是一個開源的 API 框架,基于go語言開發,旨在提供統一的接口調用封裝,支持多種 AI 服務平臺的集成。通過 Gin 和 GORM 等框架,框架簡化了多種 API 服務的調用流程。通過適配器模式實現了與多種 大模型API 服務的集…

2025神奇的數字—新年快樂

2025年,一個神奇的數字,承載著數學的奧秘與無限可能。它是45的平方(45),上一個這樣的年份是1936年(44),下一個則是2116年(46),一生僅此一次。2025…

Python的列表基礎知識點(超詳細流程)

目錄 一、環境搭建 二、列表 2.1 詳情 2.2 列表定義 2.3 列表長度 2.4 列表索引 2.5 切片索引 2.6 添加 2.7 插入 2.8 剔除 2.8.1 pop方法 2.8.2 del方法 2.9 任何數據類型 2.10 拼接 2.10.1 “” 2.10.2 “*” 2.11 逆序 ?編輯 2.12 計算出現次數 2.13 排序…

人工智能如何驅動SEO關鍵詞優化策略的轉型與效果提升

內容概要 隨著數字化時代的到來,人工智能(AI)技術對各行各業的影響日益顯著,在搜索引擎優化(SEO)領域尤為如此。AI的應用不僅改變了關鍵詞研究的方法,而且提升了內容生成和搜索優化的效率&…

Qt Ribbon使用實例

采用SARibbon創建簡單的ribbon界面 實例代碼如下所示&#xff1a; 1、頭文件&#xff1a; #pragma once #include <SARibbonBar.h> #include "SARibbonMainWindow.h" class QTextEdit; class SAProjectDemo1 : public SARibbonMainWindow { Q_OBJECT pub…

CISCO路由基礎全集

第一章&#xff1a;交換機的工作原理和基本技能_交換機有操作系統嗎-CSDN博客文章瀏覽閱讀1.1k次&#xff0c;點贊24次&#xff0c;收藏24次。交換機可看成是一臺特殊的計算機&#xff0c;同樣有CPU、存儲介質和操作系統&#xff0c;只是與計算機的稍有不同。作為數據交換設備&…

計算機畢業設計Django+Tensorflow音樂推薦系統 機器學習 深度學習 音樂可視化 音樂爬蟲 知識圖譜 混合神經網絡推薦算法 大數據畢設

溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 作者簡介&#xff1a;Java領…

單機偽分布Hadoop詳細配置

目錄 1. 引言2. 配置單機Hadoop2.1 下載并解壓JDK1.8、Hadoop3.3.62.2 配置環境變量2.3 驗證JDK、Hadoop配置 3. 偽分布Hadoop3.1 配置ssh免密碼登錄3.2 配置偽分布Hadoop3.2.1 修改hadoop-env.sh3.2.2 修改core-site.xml3.2.3 修改hdfs-site.xml3.2.4 修改yarn-site.xml3.2.5 …

在ubuntu下一鍵安裝 Open WebUI

該腳本用于自動化安裝 Open WebUI&#xff0c;并支持以下功能&#xff1a; 可選跳過 Ollama 安裝&#xff1a;通過 --no-ollama 參數跳過 Ollama 的安裝。自動清理舊目錄&#xff1a;如果安裝目錄 (~/open-webui) 已存在&#xff0c;腳本會自動刪除舊目錄并重新安裝。完整的依…

AJAX筆記入門篇

黑馬程序員視頻地址&#xff1a; 黑馬程序員前端AJAX入門到實戰全套教程https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p2https://www.bilibili.com/video/BV1MN411y7pw?vd_source…

工作總結:git篇

文章目錄 前言基礎Gerrit1.克隆2.新建本地分支和checkout3.添加到暫存區新增文件到暫存區修改已經添加到暫存區的文件取消添加到暫存區的文件 4.提交到本地倉庫在不重復提交的情況下&#xff0c;修改本次提交 5.提交到遠程倉庫6.評審其他輔助命令 前言 目前也算是工作一段時間…

< OS 有關> BaiduPCS-Go 程序的 菜單腳本 Script: BaiduPCS-Go.Menu.sh (bdgo.sh)

目標&#xff1a; 使用 日本阿里云的 VPM 傳輸文件。 暫時方案&#xff1a; 使用 主機JPN 下載 https://huggingface.co/ 上模型從 JPN 放到 度狗上在家里從狗度下載 為了減少編程&#xff0c;盡量使用現在軟件 &#xff0c;就找到 GitHub - qjfoidnh/BaiduPCS-Go: iikira…

項目測試之MockMvc

文章目錄 基礎基礎概念Mockxxx一般實現文件位置 實戰MockMvc與Test注解不兼容RequestParams參數RequestBody參數 基礎 基礎概念 定義&#xff1a;是Spring框架提供的一種用于測試Spring MVC控制器的工具&#xff0c;它允許開發者在不啟動完整的web服務器的情況下&#xff0c;…

(詳細)Springboot 整合動態多數據源 這里有mysql(分為master 和 slave) 和oracle,根據不同路徑適配不同數據源

文章目錄 Springboot 整合多動態數據源 這里有mysql&#xff08;分為master 和 slave&#xff09; 和oracle1. 引入相關的依賴2. 創建相關配置文件3. 在相關目錄下進行編碼&#xff0c;不同路徑會使用不同數據源 Springboot 整合多動態數據源 這里有mysql&#xff08;分為maste…

計算機網絡之計算機網絡的分類

計算機網絡可以根據不同的角度進行分類&#xff0c;以下是幾種常見的分類方式&#xff1a; 1. 按照規模和范圍&#xff1a; 局域網&#xff08;LAN&#xff0c;Local Area Network&#xff09;&#xff1a;覆蓋較小范圍&#xff08;例如一個建筑物或校園&#xff09;&#xf…

騰訊云開發提供免費GPU服務

https://ide.cloud.tencent.com/dashboard/web 適用于推理場景&#xff0c;每個月10000分鐘免費時長 166 小時 40 分鐘 自帶學術加速&#xff0c;速度還是不錯的 白嫖 Tesla T4 16G 算力 顯存&#xff1a;16GB 算力&#xff1a;8 TFlops SP CPU&#xff1a;8 核 內存&#…

國內外大語言模型領域發展現狀與預期

在數字化浪潮中&#xff0c;大語言模型已成為人工智能領域的關鍵力量&#xff0c;深刻影響著各個行業的發展軌跡。下面我們將深入探討國內外大語言模型領域的發展現狀以及未來預期。 一、發展現狀 &#xff08;一&#xff09;國外進展 美國的引領地位&#xff1a;OpenAI 的 …

存儲過程優化實踐:統一返回結構、參數 JSON 化與事務原子化

存儲過程作為數據庫中執行復雜業務邏輯的重要工具&#xff0c;在提升性能、保障數據一致性和簡化維護方面發揮著重要作用。然而&#xff0c;隨著應用程序和數據的復雜度不斷增加&#xff0c;存儲過程也面臨著性能瓶頸、維護難度和擴展性問題。為了應對這些挑戰&#xff0c;優化…

Lustre Core 語法 - 布爾表達式

Lustre v6 中的 Lustre Core 部分支持的表達式種類中&#xff0c;支持布爾表達式。相關的表達式包括and, or, xor, not, #, nor。 相應的文法定義為 Expression :: not Expression| Expression and Expression| Expression or Expression | Expression xor Expression | # (…

DeepSeek--通向通用人工智能的深度探索者

一、詞源與全稱 “DeepSeek"由"Deep”&#xff08;深度&#xff09;與"Seek"&#xff08;探索&#xff09;組合而成&#xff0c;中文譯名為"深度求索"。其全稱為"深度求索人工智能基礎技術研究有限公司"&#xff0c;英文對應"De…