Linux權限詳解

Linux權限

文章目錄

  • Linux權限
      • 一、root賬號與普通賬號
      • 二、Linux權限管理
      • 三、權限權值表示方法
      • 四、文件訪問權限的設置方法
      • 五、粘滯位
      • 六、權限總結

前言:

??我們在學習Linux的時候,我們知道在Linux下一切皆文件,而不同的文件對于不同的用戶有不同的操作權限,有些重要的東西不能讓別人隨意修改,所以我們就需要給文件加上權限,保證文件的私密性,那么話不多說,開啟我們今天的主題!

在這里插入圖片描述


一、root賬號與普通賬號



??在Linux下有兩種用戶:一種是 超級用戶(root),一種是 普通用戶

區別 超級用戶普通用戶
操作范圍可以在Linux系統下做任何事情在Linux系統下做有限的事情
命令行提示符‘#’‘$’

在這里插入圖片描述

??如果我們當前賬號是root賬號,想要切換為普通用戶,我們只需要這個命令:

su 普通用戶名//登錄普通用戶

在這里插入圖片描述

??這樣就能切換用戶了,但是如果我們當前用戶是普通用戶,我們想要切換到root賬戶只需要:

su root//使用后要加上密碼

在這里插入圖片描述

??我們從普通用戶切換為root賬號時,需要輸入root的密碼,且在輸入密碼的時候,我們是看不到密碼的。當密碼輸入完成時,回車就可以切換為root賬號了。

??我們還有一種方法可以從普通用戶切換為root賬號:

su -//切換root賬號

在這里插入圖片描述

??在普通賬號中,我們只能查看操作自己的工作目錄,我們不能看到別人賬號下的工作目錄,同樣,更不能查看root賬號的工作目錄。

在這里插入圖片描述
??如果我們并不想要在root賬號下執行命令,但是我們還想要root賬號的權限,這個時候我們就可以使用:

sudo 命令//進行root級別權限的指令

在這里插入圖片描述
??但是sudo命令在普通賬號下并不是默認就有的,需要在root賬號下添加可使用sudo命令的成員名單。這個部分目前我們有所了解即可,以后我們會詳談。

總結:

??1、Linux下賬號分為root用戶和普通用戶,root用戶的權限最大,可以做任何事情,而普通用戶只能做有限的事情。
??2、root切換普通用戶使用su + 用戶名,普通用戶切換為root賬號時,需要su root或者su - 然后輸入root密碼回車即可切換。
??3、普通用戶想執行更高權限的命令需要在使用命令前加上sudo


二、Linux權限管理


  • Linux當中,權限的類型一般有r(讀),w(寫),x(執行)
  • 日常生活中不同身份的人干不同的事,在Linux當中,有著 擁有者,所屬組,其他組 三類用戶對象,每個文件都可以對這三類用戶設置不同的權限。

在這里插入圖片描述

??為了區分這個文件屬于誰,在我們圈出來的地方,第一個表示擁有者第二個就表示所屬組。但是這里并沒有顯示other組,這是因為我們不清楚other是誰,如果將來有用戶來訪問我的文件,那么在這個文件當中other就會顯示出來。

??一般我們在詳細查看系統文件的時候會很容易發現這些:

在這里插入圖片描述

??其實前面的這些字母與-就是一個 文件的屬性,表示 文件的類型和訪問權限,屬性的 第一位表示文件類型

??文件屬性的第2-10位,表示 文件的權限,權限的前三位 表示文件所有者的權限,權限的 中間三位 表示文件所屬組的權限,而權限的最后三位表示其他用戶的權限。

在這里插入圖片描述

文件類型分類:

d:文件夾
-:普通文件
l:軟鏈接(類似Windows的快捷方式)
b:塊設備文件(例如硬盤、光驅等)
p:管道文件
c:字符設備文件(例如屏幕等串口設備)
s:套接口文件


三、權限權值表示方法


文件的基本權限:

1、讀權限(r),r也就是READ的首字母,具有讀取文件內容的權限;對于目錄來說,具有瀏覽該目錄信息的權限。
2、寫權限(w),w也就是WRITE的首字母,具有修改文件內容的權限;對于目錄來說具有刪除移動目錄內文件的權限。
3、執行權限(x),Execute的第二個字母,具有執行文件的權限;對目錄來說具有進入目錄的權限。
4、“ - ”表示不具有該權限。

我們知道了權限三三為一組,一般權限分為如下幾種情況:

  • ?r-- 表示只讀
  • ?--x 表示僅可執行
  • ?-wx 表示可寫可執行
  • ?rwx 表示可讀可寫可執行
  • ?-w- 表示僅可寫
  • ?rw- 表示可讀可寫
  • ?r-x 表示可讀可執行
  • ?--- 表示無權限

??文件的權限也可以用二進制來表示,比如一個文件的權限為:rw-,那么該權限對應的二進制就是110。權限為rwx那么二進制就是111,無權限二進制表示為000。而3位比特位也可以使用8進制來表示一位數,那么我們也可以根據不同權限列出不同進制的表示方式:

權限符號八進制二進制
r4100
w2010
x1001
rw6110
rx5101
wx3011
rwx7111
---0000

??有了以上這些我們就能很輕易的分析出我們對一個文件擁有哪些權限。從而可以做具體的事情了。


四、文件訪問權限的設置方法



??有一些文件我們不想讓別人看到,或者不想讓別人對本文件進行操作,也就是說,我們想要對文件的權限進行更改,達到我們想要的效果。其實在Linux當中有這樣一條命令:

chmod命令

功能: 設置文件的訪問權限。
格式: chmod[選項] 權限 文件名

常用選項:

  • R -> 遞歸修改目錄文件的權限
  • 說明:只有文件的擁有者和root才可以改變文件的權限

用戶標識符與權限字符:

  • u:擁有者
  • g:所屬組
  • o:其他用戶
  • a:所有用戶
  • +:向權限范圍增加權限代號所表示的權限
  • -:向權限范圍取消權限代號所表示的權限
  • =:向權限范圍賦予權限代號所表示的權限

我們有如下文件:

在這里插入圖片描述

??現在我們想要對file.txt的other組的可讀權限給刪除,我們只需要:

chmod o-r file.txt//將其他組的可讀權限刪除

在這里插入圖片描述
??如果我們又想要將other組的可讀權限恢復,且還想加上可執行權限,我們只需要:

chmod o+rx file.txt

在這里插入圖片描述

??這時我們突然又想要將file.txt文件所有權限都置為空,我們只需要:

chmod u-rw,g-rw,o-rx file.txt

在這里插入圖片描述

??我們想要恢復權限,僅僅將上面命令的-改為+即可。

??如果我們要對一個文件的三個組有相同的權限管理請求,則我們可以使用a選項來進行批量處理文件權限:

chmod a+r file.txt

在這里插入圖片描述

??我們看到所有文件都具有是否可執行這個選項,那么我們的文件擁有了可執行權限就一定能執行嗎?我們將file.txt文件屬性全部開放,再對該文件寫入一些內容:

在這里插入圖片描述

??那么我們執行這個文件:

在這里插入圖片描述

??我們會發現文件并不能執行,所以我們可以得出結論:一個文件具有可執行的權限,但是這個文件并不一定是可執行的,還需要保證這個文件是一個可執行程序。

??除此之外,我們還可以使用8進制來對一個文件的權限進行管理,按照上面給出的8進制數進行對文件的權限的管理:

在這里插入圖片描述


??如果我們需要修改一個文件的擁有者,我們就需要用到下面的命令了:

一、chown命令

功能:修改文件或目錄的所屬組
格式:chown [參數] 用戶組名 文件名

??使用方法也很簡單,只需要:

sudo chown 用戶組名 文件名

在這里插入圖片描述

注意: 普通用戶在使用chown命令時,需要使用sudo命令。原因也很簡單,我們想要將自己的文件給別人,別人也是需要確認的,不然怎么知道你給的是不是什么病毒?但是你是root賬號或者使用sudo命令可以強制將文件 擁有者更改。

二、chgrp命令

功能:修改文件或目錄的所屬組
格式:chgrp [參數] 用戶組名 文件名

常用選項:

  • ?-R 遞歸修改文件或目錄的所屬組

在這里插入圖片描述

??要更改所屬組也需要進行sudo或者在root賬號下使用該命令。

??我們有對應的更改所屬組與擁有者的命令,但是并沒有更改other組的命令,這是因為我們在更改擁有者與所屬組的同時,other是在不斷變化的,說白了,其實更改擁有者與所屬組就已經將other更改,所以不需要更改other的命令。

如果我們感覺一個一個更改擁有者與所屬組很麻煩,我們也可以使用:

chown 擁有者:所屬組 文件名

在這里插入圖片描述
??這樣更改就方便了許多。

??我們前面說了,文件屬性的首尾表示文件的類型,但是文件的類型這么多,可能會記混,有沒有什么辦法能詳細查看該文件到底是什么文件的命令呢?Linux下有一個file命令:

file命令

功能:查看文件類型的詳細信息
格式:file [選項] 文件或目錄

常用選項:

  • ?-c 詳細顯示指令執行過程,便于排錯或程序執行的情況。
  • ?-z 嘗試去解讀壓縮文件的內容。

在這里插入圖片描述

??使用file命令就可以顯示文件的詳細類型。


五、粘滯位

??關于Linux的權限問題,我們有這樣三個問題:

一、對于一個目錄而言,如果要進入一個目錄,需要什么權限?

答案:

  • ?x決定我們是否可以進入目錄。
  • ?r決定我們是否可以對目錄信息進行查看。
  • ?w決定是否可以在目錄下新建和刪除文件。

二、為什么我們創建的普通文件默認權限不是777而是664,目錄文件默認權限不是777而是775?

??我們在創建一個普通文件時,我們的默認權限轉化為8進制就是664,當我們創建一個目錄文件時,我們的默認權限是775,為什么他們的默認權限不是777?

在這里插入圖片描述

??這是因為我們系統根據不同種類的文件進行了分類,有些文件不需要的屬性就不會去加,或者由其他應用程序來加,或者由用戶需要時自己添加,一般我們的普通文件里是不需要進行可執行的,所以在創建普通文件時就默認沒有這個選項,目錄同理。

??那么按理來說,我們的普通文件的權限應該是666,目錄文件權限應該是777,但是我們看到的目錄文件權限是775,普通文件權限是664啊。其實這是因為Linux存在一種叫做權限掩碼————umask

umask命令

功能:
??查看或修改文件掩碼
??新建文件夾默認權限=0666
??新建目錄默認權限=0777
??但實際上你所創建的文件和目錄,看到的權限往往不是上面這個值。原因就是創建文件或目錄的時候還要受到umask的影響。假設默認權限是mask,則實際創建的出來的文件權限是:mask & ~umask
格式: umask 權限值(8進制)

注意將現有的存取權限減去權限掩碼后,即可產生建立文件時預設權限。超級用戶默認掩碼值為0022,普通用戶默認為0002。

??實際上,起始權限去掉umask值,就是我們的默認權限了,這里的去掉并不是單純的減法,而是 按位與運算(&)

在這里插入圖片描述
??當然,umask值是可變的,可調整的,直接使用:

umask 3位8進制數

在這里插入圖片描述
??我們將兩個新建文件屬性翻譯為8進制對比,也就說明了umask的值修改成功。

??我們將一個普通文件全部的權限置為0,再將文件擁有者和所屬組全部置為root,但是我們在普通用戶下卻能將root的文件給刪除了:

在這里插入圖片描述
??我們發現居然可以刪除這個文件,普通用戶可以刪除root文件,這是很嚴重的問題,這很不科學。
??為了解決這個問題,在Linux中引入了粘滯位:

粘滯位:

??給目錄中的other設置的一個權限位,具有x的意義,同時也進一步對目錄權限就進行特殊限定:
給目錄的文件,只有root或者文件的擁有者有權利進行刪除,其他人一概不允許。

??使用形式:

chmod +t 目錄名

??如果我們想要將粘滯位刪除,我們只需要將+改為-即可:

chmod -t 目錄名

六、權限總結

  • 目錄的可執行權限是表示你可否在目錄下執行命令。
  • 如果目錄沒有-x權限,則無法對目錄執行任何命令,甚至無法cd 進入目, 即使目錄仍然有-r 讀限(這個地方很容易犯錯,認為有讀權限就可以進入目錄讀取目錄下的文件)
  • 如果目錄具有-x權限,但沒有-r權限,則用戶可以執行命令,可以cd進入目錄。但由于沒有目錄的讀權限所以在目錄下,即使可以執行ls命令,但仍然沒有權限讀出目錄下的文檔。

在這里插入圖片描述
??如果對你有幫助的話,還望能留下三連支持一下博主~~

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

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

相關文章

第二十一章總結。。

計算機網絡實現了墮胎計算機間的互聯,使得它們彼此之間能夠進行數據交流。網絡應用程序就是再已連接的不同計算機上運行的程序,這些程序借助于網絡協議,相互之間可以交換數據,編寫網絡應用程序前,首先必須明確網絡協議…

掌握iText:輕松處理PDF文檔-基礎篇

關于iText iText是一個強大的PDF處理庫,可以用于創建、讀取和操作PDF文件。它支持PDF表單、加密和簽署等操作,同時支持多種字體和編碼。maven的中央倉庫中的最新版本是5.X,且iText5不是完全免費的,但是基礎能力是免費使用的&…

2023-12-10 LeetCode每日一題(爬樓梯)

2023-12-10每日一題 一、題目編號 70. 爬樓梯二、題目鏈接 點擊跳轉到題目位置 三、題目描述 假設你正在爬樓梯。需要 n 階你才能到達樓頂。 每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? 示例 1: 示例 2: 提…

gin投票系統2

投票系統 數據庫的建立 先分析需求,在sql中建立數據庫,關于項目數據庫如何建立可以在“goweb項目創建流程分析中看如何去建表” 成功后目前有四個表: vote,user,vote_opt,vote_opt_user 建立數據庫,可以…

Flink基本轉換算子map/filter/flatmap

map map是大家非常熟悉的大數據操作算子,主要用于將數據流中的數據進行轉換,形成新的數據流。簡單來說,就是一個“一一映射”,消費一個元素就產出一個元素。 我們只需要基于DataStream調用map()方法就可以進行轉換處理。方法需要…

案例026:基于微信小程序的原創音樂系統的設計與實現

文末獲取源碼 開發語言:Java 框架:SSM JDK版本:JDK1.8 數據庫:mysql 5.7 開發軟件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序開發軟件:HBuilder X 小程序…

什么是Restful?

Rest簡介 REST是英文representational state transfer(表象性狀態轉變)或者表述性狀態轉移。Rest是web服務的一種架構風格。使用HTTP,URI,XML,JSON,HTML等廣泛流行的標準和協議。輕量級,跨平臺,跨語言的架構設計。它是一種設計風格,不是一種標準,是一種思想。 Rest架構的主要…

java程序定時器

目錄 1.java定時器原生方法 1.java定時器原生方法 實現每天早上8點執行任務的示例代碼 import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit;public class TimeTest{pub…

汽車網絡安全--關于UN R155認證的思考

1.UN R155概述 2020年6月25日,聯合國頒布了全球首個汽車網絡安全強制性法規 -- UN 155,詳細規定了關于評估網絡安全措施的審核條款、制造商和供應商降低網絡安全風險的方法以及實施風險評估的義務等。 法規適用于與信息安全相關的M類(4輪及以上載客汽車)、N類(四輪載貨汽車)…

SpringBoot項目連接Graylog

直接用logback將控制臺輸出的日志發送到graylog上 1.導入logback依賴 <dependency> <groupId>de.siegmar</groupId> <artifactId>logback-gelf</artifactId> <version>1.1.0</version> </dependency> 2.創建logback-spring.x…

淺談低代碼

低代碼開發是近年來迅速崛起的軟件開發方法&#xff0c;讓編寫應用程序變得更快、更簡單。有人說它是美味的膳食&#xff0c;讓開發過程高效而滿足&#xff0c;但也有人質疑它是垃圾食品&#xff0c;缺乏定制性與深度。你認為低代碼到底是美以下方向僅供參考。味的膳食還是垃圾…

SpringBoot - 四種常見定時器

常見實現方案 Scheduled注解&#xff1a;基于注解Timer().schedule創建任務&#xff1a;基于封裝類Timer線程&#xff1a;使用線程直接執行任務即可&#xff0c;可以與thread、線程池、ScheduleTask等配合使用quartz配置定時器&#xff1a;基于spring的quartz框架 Scheduled注…

golang學習筆記——編寫最簡單的命令行工具

編寫最簡單的命令行工具 用戶輸入bufio 使用go語言編寫最簡單的命令行工具 mkdir hello-cli-demo cd hello-cli-demo # 查看環境變量 go envgo mod初始化 go mod init gitcode.com/m打開vscode&#xff0c;創建main.go package mainimport ("fmt""bufio&qu…

RK3568 CIF和ISP的關聯

1. 引言 在本文檔中&#xff0c;我們將介紹RK3568芯片的CIF&#xff08;Camera Interface&#xff09;和ISP&#xff08;Image Signal Processor&#xff09;模塊。這兩個模塊是RK3568芯片的關鍵組成部分&#xff0c;用于圖像采集和處理。 CIF是一個標準接口&#xff0c;用于…

快速測試 3節點的redis sentinel集群宕機2個節點以后是否仍能正常使用

有同事問我&#xff0c;三個redis sentinel節點&#xff0c;宕機兩個節點以后&#xff0c;是否還能夠正常的通過redis sentinel正常訪問redis的數據。我想了想&#xff0c;理論上是可以的&#xff0c;但是我沒試過&#xff0c;今天有時間就測試了一下。搭建環境和測試代碼的過程…

Java并發(十七)----變量的線程安全分析

1、成員變量和靜態變量是否線程安全 如果它們沒有共享&#xff0c;則線程安全 如果它們被共享了&#xff0c;根據它們的狀態是否能夠改變&#xff0c;又分兩種情況 如果只有讀操作&#xff0c;則線程安全 如果有讀寫操作&#xff0c;則這段代碼是臨界區&#xff0c;需要考慮線…

深入了解Python pydash庫

更多資料獲取 &#x1f4da; 個人網站&#xff1a;ipengtao.com 在數據處理和分析領域&#xff0c;Python一直是一種強大的編程語言。然而&#xff0c;在處理大規模數據集和執行復雜操作時&#xff0c;有時候需要更高效的工具。在本文中&#xff0c;我們將深入探討pydash庫&am…

語義分割 簡介及數據集簡介

參考文章 MS COCO數據集介紹以及pycocotools簡單使用-CSDN博客

[MySQL--進階篇]存儲引擎的體系結構、簡介、特點、選擇

前言 ?Hello!這里是歐_aita的博客。 ?今日語錄&#xff1a;不要在乎別人怎么看你&#xff0c;因為他們根本就沒有時間&#xff0c;他們只關心他們自己。 ?個人主頁&#xff1a;歐_aita ψ(._. )>?個人專欄&#xff1a; 數據結構與算法 MySQL數據庫 存儲引擎 前言MySQL體…

代碼隨想錄算法訓練營第四十一天|343. 整數拆分、96.不同的二叉搜索樹

代碼隨想錄算法訓練營第四十一天|343. 整數拆分、96.不同的二叉搜索樹 整數拆分 343. 整數拆分 文章講解&#xff1a;https://programmercarl.com/0343.%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.html 題目鏈接&#xff1a;https://leetcode.cn/problems/integer-break/ 視頻講解…