【Linux】權限相關指令

前言:

? ? ? ? 上兩篇文章我們講到了,關于Linux中的基礎指令。

? ? ? ?【Linux】初見,基礎指令-CSDN博客【Linux】初見,基礎指令(續)-CSDN博客

? ? ? ? 本文我們來講Linux中關于權限中的一些指令

shell命令?

Linux嚴格來說是一個操作系統,我們稱之為“核心”(kernel)。而作為用戶的我們并不能直接與核心交流,這時候就有一個中間人的角色出現:將我們的指令翻譯為核心可以看懂的符號,交由核心執行,并將執行結果翻譯并返回給我們。

這個中間人就是“包裹”在核心外的“外殼程序”,介于我們和核心之前。我們稱之為:shell命令

從技術層面來講,shell的最簡單定義就是:命令解釋器。其主要功能就是:

????????1.將命令翻譯后交給核心執行

????????2.將核心執行的結果翻譯并返回給我們?

形象理解shell

????????假如小y過年回家打算相親了,打算小y并不擅長與異性交流,這時候就拜托了媒人王姨作為中間人,幫忙小y和異性之前傳話。這時候王姨就是“外殼程序”shell。

為什么要有shell?

????????1.方便用戶使用

????????2.作為外殼程序,保護核心

補充

權限概念

Linux中權限分為兩種:root賬號、普通賬號

root賬號:為超級權限賬號,不受任何權限限制

普通賬號:受到權限限制,在Linux中只能做有限的事

su?
命令:su? 用戶名

功能:切換賬號

hyc@hcss-ecs-4ce7:/$ whoami
hyc#切換root賬號執行su即可
hyc@hcss-ecs-4ce7:/$ su
#輸入root賬號密碼
Password: 
root@hcss-ecs-4ce7:/# whoami
root#切換普通賬號:su 用戶名(不需要密碼)
root@hcss-ecs-4ce7:/# su hyc
hyc@hcss-ecs-4ce7:/$ whoami
hyc

補充:普通用戶 -> root賬號,除了su可以實現,su -也可以實現。但是區別是?

hyc@hcss-ecs-4ce7:/$ pwd
/
hyc@hcss-ecs-4ce7:/$ su
Password: 
root@hcss-ecs-4ce7:/# whoami
root
root@hcss-ecs-4ce7:/# pwd
/hyc@hcss-ecs-4ce7:/$ pwd
/
hyc@hcss-ecs-4ce7:/$ su -
Password: 
root@hcss-ecs-4ce7:~# whoami
root
root@hcss-ecs-4ce7:~# pwd
/root#我們可以看到su、su-,都成功的切換到了root。
#不同的是su切換賬號并不會改變之前所處路徑,既su不會改變位置
#而su-會改變位置,之前是/下,切換之后在/root下

sudo:短暫的指令提權

????????如果我們需要使用root權限來執行一些指令,但是卻沒有root密碼怎么辦?

????????在指令最前面加上sudo,就可以使用root權限執行命令

hyc@hcss-ecs-4ce7:~$ sudo ls
[sudo] password for hyc: 

?????????這樣確實方便,但是有一個問題:那豈不是人人都可以使用root權限了?這不亂套了?

????????Linux設計者當然考慮到了這個問題,普通用戶如果想要使用sudo進行指令提權。必須要root賬號給予普通賬號提權權限才行。所以并不是什么普通賬號都可以進行提權

沒有提權權限的賬戶,就會顯示以下報錯

hyc@hcss-ecs-4ce7:~$ sudo ls
[sudo] password for hyc: 
hyc is not in the sudoers file.  This incident will be reported.

總結:

普通 -> root:su(不會改變位置)

? ? ? ? ? ? ? ? ? ? ? su-(會改變位置:默認切換至家目錄)

root -> 普通:su? 用戶名

sodu : 指令提權

權限管理

權限的本質是:能做或者不能做什么事情(控制用戶行為,防止錯誤操作)

理解:

? ? ? ? 1.權限限制的是

? ? ? ? 2.權限要求目標必須具備對應屬性:權限:角色+目標屬性(權限)

屬性

對于Linux中的屬性來說主要為三個:讀、寫、執行

讀:r

寫:w

執行:x

之前我們說過第一個字母代表文件屬性,而后面的一串字符則代表該文件的權限

r:對文件來說,代表可以讀取文件內容;對目錄來說,代表可以瀏覽目錄內容

w:對文件來說,代表可以修改文件內容;對目錄來說,代表可以刪除目錄中的內容

x:對文件來說,代表可以執行該文件;對目錄來說,代表可以進入該目錄

但是為什么這里有多個wrx呢?這就涉及到角色的問題。

角色

上面我們說了權限=角色+對應屬性

屬性代表相應的角色擁有什么權限,那么我們是如何分辨角色呢?如何知道角色對應所擁有的權限呢?

首先我們可以通過命令行得知我們當前的角色、或者使用whoami指令

然后根據當前用戶,來判斷其說擁有的權限

解釋:

? ? ? ? 我們當前用戶是root,對于第一個目錄來說,我們就是其擁有者。所對應擁有的權限則是rwx

而什么是所屬組?什么是other呢?

? ? ? ? 所屬組就是當前角色不是擁有者,但是與擁有者在同一個隊伍中。這時候就會匹配所屬組權限,這時候這個角色就是所屬者。

? ? ? ? 所屬組的存在是為了更精細化的權限管理。舉例:a組和b組都在同一臺Linux機器上開發項目,a組項目代碼需要公開出來讓a組全體成員都能看見,但是不希望b組看見。這時候就只需要將a組全體成員納入所屬組中,然后將other權限關閉,就可以實現。(現在很少用到了,了解即可)

? ? ? ? other就是既不屬于擁有者,也不屬于所屬者的角色。這時候就會匹配other權限。

如何描述文件權限信息?

-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt

? ? ? ? ? 對于new.txt這個文件來說權限的描述應該為:擁有者權限為rw,所屬組權限為r,other權限為r。

文件權限表示方法

1.字符表示法

????????3個字母為一組,分別為:r、w、x,如沒有對應權限則用 " - "表示。其順序是固定的不可交換

2.8進制表示法?

? ?

chmod指令

語法:chmod? 參數? 權限? 文件名

功能:改變文件權限(只有root或者文件擁有者才有資格修改權限)

選項:

-R:遞歸的將目錄下的文件權限全部修改

參數:

u:擁有者

g:所屬組

o:other

a:有所用戶

實際操作展示 :

root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#關閉u的w權限
root@hcss-ecs-4ce7:~# chmod u-w new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-r--r--r-- 1 root root 22902 May 18 11:51 new.txt#開放u的w權限
root@hcss-ecs-4ce7:~# chmod u+w new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#關閉u的多條權限
root@hcss-ecs-4ce7:~# chmod u-rw new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
----r--r-- 1 root root 22902 May 18 11:51 new.txt#開放u的多條權限
root@hcss-ecs-4ce7:~# chmod u+rw new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#開放g的w權限
root@hcss-ecs-4ce7:~# chmod g+w new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-rw-r-- 1 root root 22902 May 18 11:51 new.txt#關閉g的w權限
root@hcss-ecs-4ce7:~# chmod g-w new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#以此類推,其他的權限操作類似

另外也可以通過八進制來實現多個用戶權限的修改:

root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt#通過3個8進制數字實現,對多個用戶權限修改
root@hcss-ecs-4ce7:~# chmod 000 new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
---------- 1 root root 22902 May 18 11:51 new.txtroot@hcss-ecs-4ce7:~# chmod 663 new.txt
root@hcss-ecs-4ce7:~# ls -l
total 28
drwxr-xr-x 5 root root  4096 May 20 13:58 new
-rw-rw--wx 1 root root 22902 May 18 11:51 new.txt

修改權限注意事項

1.任何人都可以修改文件權限嗎?

? ? ? ? 只有root和文件擁有者才能修改權限!

2.如果在進行相應操作時沒有權限會怎么樣?

? ? ? ? 系統會拒絕我們的指令請求

hyc@hcss-ecs-4ce7:~$ ls -l
total 0
-rw-rw-r-- 1 hyc hyc 0 May 24 23:07 new.txthyc@hcss-ecs-4ce7:~$ chmod u-r new.txt
hyc@hcss-ecs-4ce7:~$ ls -l
total 0
--w-rw-r-- 1 hyc hyc 0 May 24 23:07 new.txthyc@hcss-ecs-4ce7:~$ cat new.txt
cat: new.txt: Permission denied

3.確定權限信息時,系統會先確認誰?

? ? ? ? 先確認擁有者權限,再確認所屬組,最后是other。權限只會確定一次,不會多次確定,第一次匹配上的權限既為我們當前角色所擁有的權限

4.root賬號權限?

????????擁有最高權限,不受一切權限的限制。所有設定的限制只針對普通賬號有用。

5.可執行權限?

? ? ? ? 我們之前所講的例子中都沒有可執行樣例,其實可執行程序是.exe文件。普通文件一般沒有x權限,當然即使擁有x權限也無法執行,因為其本身就不是可執行文件。

chown與chgrp指令

語法:chown? ?用戶名? ?文件名

功能:改變文件或目錄的擁有者

選項:-R 遞歸的修改目錄中所有文件的擁有者

語法:chgrp? 所屬組名? ?文件名

功能:修改文件或目錄的所屬組

選項:-R遞歸修改目錄中所有文件的所屬組

使用chown修改擁有者、chgrp修改所屬組出現問題?

hyc@hcss-ecs-4ce7:~$ ls -l
total 0
-rw-rw-rw- 1 hyc hyc 0 May 24 23:07 new.txthyc@hcss-ecs-4ce7:~$ chown root new.txt
chown: changing ownership of 'new.txt': Operation not permittedhyc@hcss-ecs-4ce7:~$ chgrp root new.txt
chgrp: changing group of 'new.txt': Operation not permitted

原因:

? ? ? ? 系統并不支持隨意的將文件的擁有者或所屬組修改,這一操作只有root權限才能被允許。所以在要在這句指令前加上sodu,或者切換為root賬號。

下面我切換為root賬號作為演示:

root@hcss-ecs-4ce7:~# ls -l
total 24
-rw-rw--wx 1 root root 22902 May 18 11:51 new.txt
root@hcss-ecs-4ce7:~# chown hyc new.txt
root@hcss-ecs-4ce7:~# ls -l
total 24
-rw-rw--wx 1 hyc root 22902 May 18 11:51 new.txt
root@hcss-ecs-4ce7:~# chgrp hyc new.txt
root@hcss-ecs-4ce7:~# ls -l
total 24
-rw-rw--wx 1 hyc hyc 22902 May 18 11:51 new.txt

目錄權限問題

1.rwx對于目錄來說意味這什么?

沒有r權限,無法查看其內容

hyc@hcss-ecs-4ce7:~$ ls -l
total 4
drwxrwxr-x 2 hyc hyc 4096 May 26 15:41 new
hyc@hcss-ecs-4ce7:~$ chmod u-r new
hyc@hcss-ecs-4ce7:~$ ls -l
total 4
d-wxrwxr-x 2 hyc hyc 4096 May 26 15:41 newhyc@hcss-ecs-4ce7:~$ ls new
ls: cannot open directory 'new': Permission denied

沒有w權限,無法在其內部創建文件

hyc@hcss-ecs-4ce7:~$ ls -l
total 4
drwxrwxr-x 2 hyc hyc 4096 May 26 15:41 new
hyc@hcss-ecs-4ce7:~$ chmod u-w new
hyc@hcss-ecs-4ce7:~$ ls -l
total 4
dr-xrwxr-x 2 hyc hyc 4096 May 26 15:41 new
hyc@hcss-ecs-4ce7:~$ ls
newhyc@hcss-ecs-4ce7:~$ touch ./new/my.txt
touch: cannot touch './new/my.txt': Permission denied

沒有x權限,無法進入目錄

hyc@hcss-ecs-4ce7:~$ ls -l
total 4
drw-rwxr-x 2 hyc hyc 4096 May 26 15:41 new
hyc@hcss-ecs-4ce7:~$ cd new
bash: cd: new: Permission denied

rwx這三個權限都與目錄的正常使用相關,所以我們創建的目錄默認權限這三個都有

2.理解Linux中多用戶是如何相互“隔離”的?

root@hcss-ecs-4ce7:~# ls -l /home
total 8
drwxr-x--- 3 hyc hyc 4096 May 26 15:41 hyc
drwxr-x--- 2 ye  ye  4096 May 26 16:03 ye

所有用戶的other權限都是全部關閉的,任意用戶都無法進入。這就帶來了“隔離”

3.缺省權限

對于普通文件:默認起始權限是666

對于目錄:默認起始權限是777,帶x

但我們看到的默認權限一般都不是我們說所的起始權限 ,這是為什么?

root@hcss-ecs-4ce7:~# ls -l
total 4
drwxr-xr-x 2 root root 4096 May 26 16:59 new
-rw-r--r-- 1 root root    0 May 26 16:40 new.txt

因為Linux中存在一個東西叫做權限掩碼(umask)

root用戶的權限掩碼為:022

普通用戶的權限掩碼為:002

root@hcss-ecs-4ce7:~# umask
0022
(最前面的0表示八進制)

最終的權限=起始權限&(~umask)

umask的目的是什么?

? ? ? ? 凡是出現在umask上的權限,都不會出現在最終的權限上面

umask為什么會出現?

? ? ? ? 可以讓我們自定義默認權限,是一種靈活滿足需求的表現

4.文件的刪除由誰決定?

? ? ? ? 一個文件是否可以被刪除與文件本身無關,而在于目錄的w權限。

粘滯鍵

????????如果有兩個或者多個用戶需要在文件層面上的相互合作,那么所創建的文件就不能在私人目錄下。將目錄創建根目錄下,這樣所有用戶就都可以訪問并寫入自己的內容。

? ? ? ? 但是這里存在一個問題,就是如果在眾多用戶中存在隔壁公式派來的內鬼(bushi),內鬼可以刪除自己的文件也可以刪除被人的文件(文件是否可以被刪除與自己無關,與文件的w權限有關)!

? ? ? ? 這該怎么辦??關閉w權限嗎?不行,這會影響其他用戶的正常使用,那怎么辦?

Linux給粘滯鍵有效的解決這一問題?

chmod +t

給權限加上粘滯位,加上粘滯位的目錄有以下效果

1.文件只能被root刪除

2.文件只能被其擁有者刪除

3.文件只能有該目錄的擁有者刪除

其實系統已經為我們準備好了這一特殊目錄,就是根目錄下的temp目錄

我們可以看到temp的other權限最后一個字母是t,這就代表粘滯位。?

一般需要文件上的多人合作,都是在temp里進行。

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

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

相關文章

前端學習3--position定位(relative+absolute+sticky)

繼上一篇,做下拉菜單的時候,涉及到了position,這篇就來學習下~先看下position在下拉菜單中的應用:一、關鍵代碼回顧:/* 下拉菜單容器 */ .dropdown {position: relative; /* ? 關鍵父級 */ }/* 下拉內容(默…

APP Inventor使用指南

APP Inventor使用指南一、組件介紹二、邏輯設計設計方法:設計實例(參考嘉立創教程)點擊跳轉 : app inventor(點不開的話需要🪄🪄🪄🪄🪄) 一、組…

SpringAI實現保存聊天記錄到redis中

redis相關準備添加依賴我利用redission來實現<dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.37.0</version> </dependency>添加配置文件spring:redis:database: 5host: 127.0.0.1…

Unity中使用EzySlice實現模型切割與UV控制完全指南

引言 在Unity中實現3D模型的動態切割是一個常見的需求&#xff0c;無論是用于游戲特效、建筑可視化還是醫療模擬。本文將全面介紹如何使用EzySlice插件實現高效的模型切割&#xff0c;并深入探討如何通過Shader Graph精確控制切割面的UV映射。 第一部分&#xff1a;EzySlice基…

【c++學習記錄】狀態模式,實現一個登陸功能

狀態模式建議為對象的所有可能狀態新建一個類&#xff0c; 然后將所有狀態的對應行為抽取到這些類中。 原始對象被稱為上下文 &#xff08;context&#xff09;&#xff0c; 它并不會自行實現所有行為&#xff0c; 而是會保存一個指向表示當前狀態的狀態對象的引用&#xff0c;…

Docker 搭建 Harbor 私有倉庫

1 部署 Harbor 注意&#xff1a;docker、docker-compose、Harbor的版本是否適配&#xff0c;這里使用的版本如下表&#xff1a; Docker版本Docker Compose版本Harbor版本v19.09.8v1.29.2v2.8.2 1.1 安裝 docker-compose # 下載 docker-compose 1.29.2 版本 curl -L "h…

C++類模板繼承部分知識及測試代碼

目錄 0.前言 1.類模板基本使用 2.類模板繼承 2.1類模板繼承過程中的模板參數 情況1&#xff1a;父類非模板&#xff0c;子類為模板 情況2&#xff1a;父類模板&#xff0c;子類為非模板 情況3&#xff1a;父類模板&#xff0c;子類為模板 3.STL中的模板類分析 3.1STL中…

Laravel + Python 圖片水印系統:實現與調試指南

前言 本系統通過 Laravel 作為前端框架接收用戶上傳的圖片&#xff0c;調用 Python 腳本處理水印添加&#xff0c;最終返回處理后的圖片。這種架構充分利用了 Laravel 的便捷性和 Python 圖像處理庫的強大功能。 一、Python 水印處理腳本 from PIL import Image, ImageEnhance …

【速通RAG實戰:企業應用】25、從數智化場景看RAG:是臨時方案,還是終局架構?

引言&#xff1a;RAG為何成為數智化場景的"必爭之地"&#xff1f; 當ChatGPT在2023年掀起生成式AI浪潮時&#xff0c;一個矛盾逐漸凸顯&#xff1a;大語言模型&#xff08;LLM&#xff09;能生成流暢文本&#xff0c;卻常陷入"幻覺"&#xff08;虛構事實&a…

[Python] -實用技巧篇1-用一行Python代碼搞定日常任務

在日常開發或數據處理過程中,我們常常為了一些簡單的小任務寫出數行代碼。但實際上,Python 提供了大量強大且簡潔的語法糖和標準庫工具,讓你用“一行代碼”輕松搞定復雜操作。 本文將通過多個典型場景展示如何用“一行 Python 代碼”高效完成常見任務。 一、文件操作:快速…

單細胞入門(1)——介紹

一、單細胞轉錄組測序流程介紹 單細胞測序能夠探索復雜組織中單個細胞的不同生物學特性&#xff0c;幫助我們認識細胞與細胞之間的差異。這些檢測方法有助于研究細胞譜系、細胞功能、細胞分化、細胞增殖和細胞應答&#xff0c;提升我們對復雜生物系統的理解&#xff0c;包括腫…

數據結構與算法之美:跳表

Hello大家好&#xff01;很高興我們又見面啦&#xff01;給生活添點passion&#xff0c;開始今天的編程之路&#xff01; 我的博客&#xff1a;<但凡. 我的專欄&#xff1a;《編程之路》、《數據結構與算法之美》、《題海拾貝》、《C修煉之路》 歡迎點贊&#xff0c;關注&am…

從0設計一個短鏈接服務:如何實現盡可能短、可變長的短網址系統?

從 0 設計一個短鏈接服務&#xff1a;如何實現盡可能短、可變長的短網址系統&#xff1f; 在日常生活中&#xff0c;我們經常在短信、微博、廣告營銷中看到“短鏈接”&#xff0c;如&#xff1a; https://t.cn/EXaQ4xY https://bit.ly/3Yp9zJk相比冗長復雜的原始 URL&#xff0…

Microsoft Word 中 .doc 和 .docx 的區別

Microsoft Word 中 .doc 和 .docx 的區別 解釋 Microsoft Word 中 .doc 和 .docx 文件格式的區別。這些格式都是 Word 處理文檔的標準&#xff0c;但它們在結構、兼容性和功能上存在顯著差異。下面我將詳細說明。 1. 基本定義 .doc&#xff1a;這是 Microsoft Word 的舊格式&am…

Springboot aop面向切面編程

aop:面向切面編程&#xff0c;理解在一個流程中插入一個切面&#xff0c;這樣切面方法會在指定位置執行能無影響的在某些方法前或者后插入一些動作springboot使用1.引入依賴<dependency><groupId>org.springframework.boot</groupId><artifactId>sprin…

手機識別數據集,2628張原始圖片,支持yolo,coco json,pasical voc xml等格式的標注

本文提供手機識別數據集&#xff0c;2628張原始圖片&#xff0c;支持yolo&#xff0c;coco json,pasical voc xml等格式的標注的數據集下載&#xff0c;下載地址在文末手機識別數據集簡介手機識別數據集通常用于訓練和評估機器學習模型&#xff0c;以識別不同手機品牌、型號或功…

ollama - sqlcoder模型:面向提示詞編程(根據用戶信息生成sql語句并執行返回結果)

https://ollama.ac.cn/library/sqlcoderhttps://blog.csdn.net/hzether/article/details/143816042import ollama import sqlite3 import json from contextlib import closingdef generate_and_execute_sql(question: str, db_path: str) -> dict:# 1. 生成 SQL 查詢語句pr…

C語言,結構體指針案例

案例一&#xff1a; #include <stdio.h> #include <stdbool.h> #include <string.h> // 添加string.h頭文件用于strcpy //結構體指針//方式 1 : 先定義結構體 struct Dog {char *name;int age;char weight; };//方式 1 : char *get_dog_info(struct Dog do…

Vue 3 中父子組件雙向綁定的 4 種方式

&#x1f501; Vue 3 中父子組件雙向綁定的 4 種方式 整理不易&#xff0c;點贊 收藏 關注&#xff0c;助你組件通信不再混亂&#xff01;? 場景說明 父組件希望將某個值傳遞給子組件&#xff0c;同時希望子組件能夠修改這個值&#xff08;實現“綁定 反向更新”&#xff0…

阻有形,容無聲——STA 簽核之RC Corner

RC corner&#xff0c;RC指的是gate跟network的寄生參數&#xff0c;寄生參數抽取工具&#xff08;比如Starrc&#xff09;根據電路的物理信息&#xff0c;抽取出電路的電阻電容值&#xff0c;再以寄生參數文件&#xff08;Spef&#xff09;輸入給STA工具&#xff08;PT&#x…