這一節咱們介紹Linux的用戶以及權限管理的前半段,包括:一、權限管理介紹; 二、用戶管理; 三、常見命令linux
權限管理:shell
爲了訪問計算機資源,咱們須要對其進行受權才能訪問,根據什麼東西來進行受權呢?這樣就有了用戶的概念;通常狀況下咱們都是基於用戶來進行計算機資源的受權,而爲了更好的管理這些用戶,具備同一屬性的用戶咱們歸爲同一組,這就是用戶組;對於一個文件而言,它有本身的屬主(也就是某一個用戶),也有它本身的屬組(也就是該用戶所在的用戶組),也有即不是他的屬主也不是屬組的其餘用戶的權限,這段權限咱們統稱爲其餘用戶;安全
屬主、屬組和其餘用戶就是咱們Linux系統下文件的三個權限段;bash
而用戶與用戶組的概念則是爲了方便人類識別而取名的,對於計算機而言,則是查看用戶與用戶組對應的UID以及GID來識別用戶與用戶組;spa
安全上下文關係(secure context):blog
進程啓動是依託於用戶的!!!每一個進程啓動是要藉助於這個用戶,而這個用戶啓動的這個進程的權限也來源於這個用戶的權限!!!;進程
而對應進程調用的文件而言,文件又有它本身自己的權限,這個權限;md5
整個任務是否能完成,就取決於兩點:(對上)啓動該進程用戶的權限,(對下)程序調用的文件的權限。而這兩點就是咱們所說的安全上下文關係(secure context);ci
權限:資源
到底什麼是權限呢?常見的權限有rwx,讀寫執行(還有一些特殊權限位在以後介紹);
rwx對於文件而言:可讀,表明可使用相似於cat等命令查看文件內容;可寫,表明能夠經過vi或者echo編輯以及rm刪除此文件;可執行,exacutable,表示能夠將該文件當作命令提交給kernel執行;
rwx對於目錄而言:可讀,表明能夠對此目錄執行ls來列出內部的全部文件;可寫,表明能夠在此目錄下建立子目錄;可執行,表示可使用cd來切換進此目錄,也可使用ls -l查看文件內部子目錄以及子文件的詳細信息;
文件權限分爲三段:在介紹ls命令的時候咱們提到過,如上圖:查看a這個目錄的權限--rwx表明屬主,中間r-x表明屬組,最後r-x表明其餘用戶;
其中,這些權限位能夠經過8進製表示顯示顯示出來:
000 | 0 | --- | 無權限 |
001 | 1 | --x | 僅能執行 |
010 | 2 | -w- | 僅能寫 |
011 | 3 | -wx | 可寫可執行 |
100 | 4 | r-- | 僅能讀 |
101 | 5 | r-x | 讀執行權限 |
110 | 6 | rw- | 讀寫權限 |
111 | 7 | rwx | 讀寫執行權限 |
上圖中a的權限則爲:對於屬主有讀寫執行權限,對於屬組有讀和執行權限,對於其餘用戶也是讀和執行權限;
用戶分爲兩類:管理員與普通用戶,管理員則是root用戶,而普通用戶又分爲系統用戶和通常用戶,root這裏咱們不用過多介紹,只須要知道root的UID爲0不能修改,它具備最大的權限便可,咱們重點介紹普通用戶;
一、系統用戶:系統用戶的UID通常爲1-499(linux6到了7版本爲1-999),這些用戶時系統後臺進程運行的時候所須要的用戶,這類用戶不用來登陸系統,因此咱們看到的shell程序定義爲了/bin/nologin;
二、通常用戶:這類用戶的UID通常爲500-60000,這類用戶就是用來作系統管理,作計算機資源的分配;
用戶通常屬於用戶組!而每個用戶都會屬於一個組或者多個組,而這些組對於用戶而言,則分爲基本組和額外組(額外組也叫作附加組),通常建立用戶的時候,若是沒有指定組,則會自動爲這個用戶建立一個同名的組,咱們叫這個組爲私有組;
/etc/passwd、/etc/group、/etc/shadow、/etc/gshadow
/etc/passwd:用來存放用戶的相關信息;:爲分割符(cut -d指定分割符)
第一列:用戶名
第二列:密碼,而這裏用x代替,這裏叫作填充符,真正的密碼存放於/etc/shadow文件中
第三列:UID,用戶ID號(0爲root用戶,1-499爲系統用戶,500-60000爲通常用戶)
第四列:GID,組ID號
第五列:描述,若是一個用戶又多個描述內容,用 「,」隔開
第六列:用戶的家目錄
第七列:用戶使用的shell程序,通常爲/bin/bash,若是是/sbin/nologin,則這個用戶時不能登陸的
/etc/shadow:「影子文件」,用來存放密碼相關內容,重點爲密碼自己以及密碼的過時時間的定義,它一樣是以「:」做爲分割符;同時,經過man shadow文件能夠查看相關文檔說明;
第一列:用戶名
第二列:密碼,密碼列又以$符號作爲分割,分爲幾個內容(以hive用戶爲例)
這裏的6表明md5的hash方式
/toyUKZI 則爲隨機產生的「鹽」,用來使相同的密碼在作hash後能獲得不一樣的128位字符;
最後一段亂碼爲「密碼+鹽」進行md5 hash後的結果存放在這裏;
md5sum 文件名 #生成一段MD5的hash碼
(從第三列開始則是對密碼一系列的時間定義)
第三列:(date of last password change)從系統元年(1970-01-01)到最近一次修改密碼的時間;
第四列:(minimum password age)密碼的最短使用期限,讓你的密碼先用兩天才能去改;
第五列:(maximum password age)密碼使用的最長期限,這個密碼用了多少天之後必須修改;
第六列:(password warning period)密碼過時警告時間,還有多少天密碼就要過時了,警告用戶須要修改密碼了;
第七列:(password inactivity period)在密碼過時之後,還寬限幾天,而這幾天以登陸就必須修改密碼,沒法作其餘的操做;
第八列:(account expiration date)從1970-01-01開始算起,到達目標時間之後就直接過時,不能再使用;
其中99999表示永不過時;
【reserved field,在文件的最後還有一列保留位】
/etc/group:組文件,裏面存放了Linux系統下組信息;包括組名、組密碼(佔位符)、GID、和存放在這個組中的用戶(若是對於用戶而言,這個組時它的私有組,則不會顯示在這裏,只有是附加組的時候纔會顯示);
/etc/gshadow:組密碼文件,在用戶須要臨時組權限的時候,這時,咱們就須要切換組(newgrp 組名),這時就須要爲組設置密碼;
用戶管理:useradd、userdel、usermod、passwd、chsh、chfn、finger、id、chage
組管理:groupadd、groupdel、groupmod、gpasswd
權限管理:chown、chgrp、chmod、umask