Linux學習記錄(8)Linux基本許可權設定

2021-07-05 00:00:06 字數 1943 閱讀 9520

今天學習了linux的許可權相關的知識,在linux下,有三種「身份」:檔案的所屬者,與該檔案所屬者相同組的成員,其他成員。

這裡說一下組的概念,組相當於我小時候做值日,每週每天都會有不同的人來打掃衛生,那每天打掃衛生的那批人,就是乙個組,在linux上,假設我們新建乙個組a,裡邊有成員a,b,c。這就構成了乙個最簡單的組。

其他的兩個,很好理解,從詞語上來看就能明白意思,這裡就不做解釋了。

既然有組和使用者,那麼我們怎麼去新建乙個組合使用者呢?這裡用到了useradd和groupadd,介紹這兩個命令之前,要先明確uid和gid。

我們都知道,系統在使用使用者登入的時候,不可能是用使用者名稱操作的,有過程式設計經驗的人都知道,我們要給每個使用者分配乙個唯一的id,系統進行任何操作的時候,都使用這個id,這樣就進行了統一。

在linux下,uid由32位組成從0開始,60000以內。

其中:0為root使用者;

1-499為系統使用者;

500之後為普通使用者。

下邊我們介紹命令的使用方式:

1、useradd:增加使用者

例:useradd  zw

這樣就建立了乙個名為zw的使用者。

有以下幾個引數:

-d 家目錄

-s 指定登入的shell

-u 指定userid

-g 指定主組

-g 指定附屬組

2、userdel:刪除使用者

userdel 使用者名稱

-r引數,在刪除使用者的同時,一起刪除家目錄

3、groupadd:增加組

groupadd 組名

4、groupdel:刪除組

groupdel 組名

講完了使用者和組的概念之後我們來說一下許可權

linux是根據ugo這三種不同的身份來限制我們的許可權的

許可權分為3種,r可讀,w可寫,x可執行

5、chmod命令:chmod 模式 檔案路徑

例:為名為test的檔案的同族使用者增加可執行許可權:chmod g+x test

同樣的,我們減去乙個許可權:chmod g-x test

使用者和其他也是一樣的。

除了這種方式外,我們還可以用數字來代表許可權,其中,r=4,w=2,x=1

假設我們現在有這樣一組許可權

u         g         o

rwx      r-x       ---

那麼我們可以這樣表示

u g o

7  5  0

很簡單吧,就是將這些代表的數字相加就ok了。

例:chmod 750 test,就ok了

6、除了這3x3的許可權之外,linux還有3個特殊許可權,名字叫做suid,sgid,sticky。

suid:以檔案所屬者的身份執行,而不是當前操作的使用者。

這個許可權存在的意義是:假如我們現在有乙個可執行的檔案,裡邊有一條命令,要訪問根目錄的「test」資料夾,假設這個資料夾裡邊有很重要的東西,只能root使用者訪問,其他人都不能看,我們還想使用這個可執行檔案,怎麼辦?如果我們以當前使用者去執行這個檔案,那肯定會出錯的,最好的辦法就是,我使用這個檔案,以這個檔案的所屬使用者的身份去執行,但我們並沒有切換使用者,我還是我,但是執行檔案卻認為我是root,這樣一來,我就有許可權訪問test資料夾了。就可以解決這個問題了。

sgid:在該目錄下所新建的所有檔案和目錄都屬於這個組。

sticky:使用者只能刪除屬於自己的檔案。

假如我們有乙個資料夾test,裡邊是公司的一些檔案,同乙個使用者組的人對這個資料夾都有讀寫的權利,假如員工a建立了乙個檔案,員工b與員工a有矛盾,b看見a的檔案就刪,阻止a正常工作,這樣可是很不好的。那麼設定sticky許可權,就可以阻止這種事情的發生,假如檔案的建立者不是b,那麼b就不能對這個檔案進行操作了。

其中,suid=4,sgid=2,sticky=1

那麼我們設定的時候就可以變成4位了,順序是:特殊位,u,g,o

所以命令可以這樣寫:chmod 1750 test

8 Linux練習小指令碼

1 顯示統計占用系統記憶體最多的程序,並排序。3 每週的工作日1 30,將 etc備份至 backup目錄中,儲存的檔名稱格式 為 etcbak yyyy mm dd hh.tar.xz 其中日期是前一天的時間 1 寫測試備份命令 root c76 data tar jcvf data bak et...

vim學習日誌(8) linux檢視和修改檔案編碼

檢視檔案的編碼 方法一 1.在vim中可以直接檢視檔案編碼 set fileencoding 即可顯示檔案編碼格式。注 如果你只是想檢視其它編碼格式的檔案或者想解決用vim檢視檔案亂碼的問題,那麼你可以在 vimrc 檔案中新增以下內容 set encoding utf 8 fileencoding...

8 linux程序間通訊之訊息佇列

訊息佇列 定義 unix早期的通訊機制之一的訊號能夠傳送的資訊量有限,管道則只能傳 送無格式的位元組流,這無疑會給應用程式的開發帶來不便。訊息佇列 也叫報文佇列 則克服了這些缺點。發展 訊息佇列就是乙個訊息的鍊錶。可以把訊息看作乙個記錄,具有特定的格式。程序可以向其中按照一定的規則新增新訊息 另一些...