早期的計算機的使用場景,通常都是多用戶,多任務下( Multi-task,Multi-Users)。爲了區別不一樣的使用者,隔離每一個人對計算機資源的訪問,引入了用戶的概念。linux
不一樣的使用者經過用戶標識和密碼加以區別,算法
認證:Authenticationdocker
受權:Authorizationshell
審計:Audition(Account)安全
這就是3A認證bash
Linux下的用戶標識就是:用戶app
組,即用戶組,用戶容器。ide
用戶分爲管理用戶和普通用戶,其中普通用戶又包括系統用戶和登陸用戶測試
系統用戶:爲了可以讓後臺進程或服務類進程以非管理員身份運行,一般須要爲此建立多個普通用戶,這類用戶從不登陸系統ui
一、管理用戶 二、普通用戶 a.系統用戶 b.登陸用戶
用戶標識:UserID,UID 16bits二進制數字:0+65535 管理員:0 普通用戶:1-65535 系統用戶:1-499(CentOS6),1-999(CentOS7) 登陸用戶:500-60000(CentOS6),1000-60000(CentOS7) 名稱解析:名稱轉換 Username <--> UID 根據名稱解析庫進行: /etc/passwd
和用戶相對應的,組分爲管理員組和普通用戶組,普通用戶組又包括系統組和登陸組
一、管理員組 二、普通用戶組 a、系統組 b、登陸組
組標識:GroupID,GID 管理員組:0 普通用戶組:1-65535 系統用戶組:1-499(CentOS6),1-999(CentOS7) 登陸用戶組:500-60000(CentOS6),1000-60000(CentOS7) 名稱解析:groupname <--> GID 解析庫: /etc/group
A、用戶的基本組:primary group,也叫主組
B、用戶的附加組
A、私有組:組名同用戶名且包含一個用戶:privite group
B、公共組:組內包含了多個用戶:public group
認證信息:經過比對事先存儲的,與登陸時提供的信息是否一致;
password的存儲位置:
/etc/shadow 用戶密碼 /etc/gshadow 組密碼
密碼的使用策略 1:使用隨機密碼: 2:最短長度不要低於8位 3:應該使用大寫字母,小寫字母、數字和標點符號四類字符中至少三類 4:按期更換 密碼存儲格式:單向加密,並藉助於salt完成 加密算法: 一、對稱加密:加密和解密使用同一個祕鑰 二、非對稱加密:加密和解密使用的一對兒祕鑰; 祕鑰對兒: 公鑰:public key 私鑰:privita key 三、單向加密:只能加密,不能解密;提取數據特徵碼; 定長輸出 雪崩效應 單向加密經常使用算法: md5: message digest, 128bits sha: secure hash algorithm,160bits 安全的哈希算法 sha224 sha256 sha384 sha512
/etc/passwd: 用戶信息庫 name:password:UID:GID:GECOS:directory:shell name: 用戶名 password: 能夠是加密的密碼,也但是佔位符 UID: GID: 用戶所屬的主組的ID號; GECOS: 用戶的註釋信息,可選 directory: 用戶的家目錄; shell: 用戶的默認shell,登陸時默認shell程序 /etc/shadow: 用戶密碼 用戶名:加密的密碼:最近一次修改密碼的時間:密碼最短使用期限:最長使用期限:警告期段:過時期限:保留字段 查看幫助文檔:man 5 shadow etc/group:組的信息庫 group_name:password:GID:user_list user_list:該組的用戶成員;以此組爲附加組的用戶的用戶列表: etc/gshadow group_name:password:admin_list:user_list 組名:密碼:管理員列表:組成員列表 查看幫助文檔:man 5 gshadow 在計算之時加salt,添加的隨機數
groupadd [選項] group_name -g GID: 指定GID;如不指定會默認,上一個組的GID+1 -r:建立系統組;
groupmod [選項] GROUP -g GID, 修改GID -n new_name: 修改組名
groupdel [選項] GROUP
組密碼文件: /etc/gshadow
gpasswd [選項] group (1)gpasswd group: 修改指定組的密碼,默認狀況下組建立以後沒有密碼,設定密碼主要用途在用newgrp命令臨時切換用戶到某個組做爲本身的基本組時使用,若是用戶實現不屬於該組,切該組沒有設定密碼,用戶將沒法切換到此沒有設定密碼的組 -a USERNAME:向組中添加用戶 -d USERNAME:從組中移除用戶
example.
添加peter爲users羣組的管理員 gpasswd -A peter users 添加一個用戶到一個組,同時保留之前添加的組時,可使用gpasswd這個命令來添加操做用戶 gpasswd -a user_name group_name
newgrp [-] [group] -:會模擬用戶從新登陸以實現從新初始化其工做環境
useradd [選項] 登陸名 -u, --uid UID: 指定UID;如不指定默認爲上一個UID+1 -g, --gid GROUP:指定用戶基本組ID或組名,此組得事先存在 -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]: 指定用戶所屬的附加組(能夠是組ID也能夠是組名),多個組之間用逗號分隔; -c, --comment COMMENT:指明註釋信息 任何字符串。一般是關於登陸的簡短描述,當前用於用戶全名。 -d, --home HOME_DIR:以指定的路徑做爲用戶的家目錄:經過複製/etc/skel此目錄並重命名實現;指定的家目錄路徑若是事先存在,則不會爲用戶複製環境配置文件 -s, --shell SHELL: 指定用戶的默認shell,可用的全部shell列表存儲在/etc/shells文件中; -r,建立一個系統用戶 -M, --no-create-home 不建立用戶主目錄,即便系統在 /etc/login.defs中的設置(CREATE_HOME)爲yes -f, --inactive INACTIVE 密碼過時到帳戶被禁用以前的天數。0表示當即禁用,-1表示禁用這個功能 若是未指定,useradd將使用在 /etc/default/useradd 中 INACTIVE 變量指定的默認禁用週期,或者默認爲-1. 注意:建立用戶是的諸多默認設定配置文件爲/etc/login.defs -d選項指定家目錄時,家目錄的父目錄須要事先存在,例如指定家目錄爲/users/username 父目錄/users需事先存在(被建立) useradd -D:顯示建立用戶的默認配置; useradd -D 選項:修改默認選項的值; 修改的結果保存於/etc/default/useradd文件中;也能夠經過直接編輯此文件實現
usermod [選項] 登陸名 -u,--uid UID: 修改用戶的ID爲此處指定的新的UID; -g, --gidGROUP: 修改用戶所屬的基本組;此組必須存在; -G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]: 修改用戶所屬的附加組;原來的附加組會被覆蓋; -a, --append: 與-G一同使用,用於爲用戶追加新的附加組; -aG -c, --comment COMMENT: 修改註釋信息; -d, --home HOME_DIR: 修改用戶的家目錄: 用戶原有的文件不會被轉移至新位置; -m, --move-home: 只能與-d選項一同使用,用於將原來的家目錄裏面的全部文件移動到新的家目錄,目前的家目錄路徑必須存在,不然新家目錄不會被建立; -l, --login NEW_LOGIN:修改用戶名; -s, --shell SHELL:修改用戶的默認shell; -L,--lock:鎖定用戶密碼;即在用戶原來的密碼字符串以前添加一個"!"; -U,--unlock:解鎖用戶的密碼;
userdel [選項] 登陸名 -r: 刪除用戶是一併刪除其家目錄
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username] (1)passwd:修改用戶本身的密碼; (2)passwd USERNAME:修改指定用戶的密碼,但默認狀況下僅root有此權限; -l,-u: 鎖定和解鎖用戶密碼 -d:刪除用戶密碼 -e DATE: 過時期限,日期 -i DAYS: 非活動期限;密碼過時以後還能活動幾天 -n DAYS: 密碼的最短使用期限 -x DAYS: 密碼的最長使用期限 -w DAYS: 警告期限 --stdin: echo "PASSWORD" | passwd --stdin USERNAME
chage [選項] 登陸名 -d -E -W -M -m
id - print real and effective user and group IDs id [OPTION]... [USER] -u: 僅顯示有效的UID -g: 僅顯示用戶的基本組ID -G: 顯示用戶所屬的全部組的ID,包括基本組和附加組 -n: 顯示名字而非ID
a.登陸式切換:會經過讀取目標用戶的配置文件來從新初始化 su - USERNAME su -l USERNAME b.非登錄式切換:不會讀取目標用戶的配置文件進行初始化 su USERNAME 注意:管理員(root)可無密碼切換至其餘任何用戶; -c 'COMMAND': 僅以指定用戶的身份運行此處指定的命令;運行一次以後直接退回
chsh, 更改默認shell chfn,finger 更改finger信息,顯示finger信息 whoami pwck,檢查用戶密碼 grpck,檢查組
權限的概念:rwx
r:readable,可讀 w:writeable,可寫 x:excuteable,可Z執行
linux權限的表示結構
rwxrwxrwx: 左三位:定義user(owner)的權限 中三位:定義group的權限 右三位:定義other的權限
進程安全上下文(Security Context)
進程對文件的訪問權限應用模型: 前提:進程有屬主和屬組,文件有屬主和屬組 一、任何一個可執行程序文件能不能運行,取決於發起者對程序文件是否有執行權限。 二、啓動爲進程以後,其進程的屬主爲發起者,屬組爲進程發起者所屬的屬組。 三、進程訪問文件的權限,取決於進程的發起者: (1)進程的發起者同文件的屬主,則應用文件屬主權限 (2)進程的發起者屬於文件屬組,則應用文件屬組權限 (3)應用其它權限。
rwx對文件和目錄的含義
文件: r:可獲取文件的數據 w:可修改文件的數據 x:可將此文件發起運行爲進程 目錄: r:可以使用ls命令獲取其下的全部文件列表;(不能獲取詳細信息,即不包括ls -l) w:可修改此目錄下的文件列表:即建立或刪除文件; x:可cd至此目錄中,且可以使用ls -l來獲取全部文件的詳細屬性信息;
權限的兩種表現形式
權限組合機制和八進制表示法
權限的rwx因爲在每一個位置上只有2種形式,-和其餘(r,w,x)即有或沒有權限
所以rwx能夠用3位二進制來表示,3位二進制又能夠轉換爲8進制,組合關係以下
權限 | 二進制表示 | 8進製表示 | 註釋 |
---|---|---|---|
--- | 000 | 0 | 沒有權限 |
--x | 001 | 1 | 可執行 |
-w- | 010 | 2 | 可寫 |
-wx | 011 | 3 | 可寫可執行 |
r-- | 100 | 4 | 可讀 |
r-x | 101 | 5 | 可讀可執行 |
rw- | 110 | 6 | 可讀可寫 |
rwx | 111 | 7 | 可讀可寫可執行 |
用八位進制權限表示法來表示:如rxwrwxrwx可表示爲777,表示屬主屬組和其餘用戶都具備讀寫執行的權限
chmod - change file mode bits chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --reference=RFILE FILE... 三類用戶: u:屬主 g:屬組 o:其餘 a:全部 chmod [OPTION]... MODE[,MODE]... FILE... (1)MODE表示法: A、賦權表示法:直接賦予用戶對應權限,能夠操做一類用戶的全部權限位, u= g= o= a= 兩種用戶能夠合併書寫:ug=,uo=,go=, 權限可合併書寫,r,w,x,rw,rwx,rx,wx, B、受權表示法:直接增長或刪除一類用戶的現有權限r,w,x; u+,u- g+,g- o+,o- a+,a- (有時候可省略a,直接寫成+,-) 兩種用戶能夠合併書寫:ug=,uo=,go=, 權限也可合併書寫,r,w,x,rw,rwx,rx,wx, 儘可能符合邏輯書寫,不符合邏輯也不會報錯(例如其餘用戶沒有w權限用o-x也不會報錯) 分別加不一樣權限時能夠用逗號隔開,如:chmod u+w,g+r FILE ps:全局+w操做只會匹配到u(屬主用戶) (2)八進制表示法 chmod [OPTION]... OCTAL-MODE FILE... example: chmod 660 /etc/shadow (3)引用權限命令 chmod [OPTION]... --reference=RFILE FILE... 修改文件FILE的權限與被引用的文件RFILE的權限相同 選項 : -R,--recurisive:遞歸修改,會將目錄以及目錄下的子目錄和全部文件一塊兒修改 (此選項只建議受權表示法使用,避免影響目錄內部的文件擁有其餘不須要的權限,例如錯誤的將x權限給不可執行的文件) 注意:用戶僅能修改屬主爲本身的那些文件的權限 exmaple. 賦權表示 [root@bogon ~]# ls 00-02-17 a_c a_d anaconda-ks.cfg b_c b_d Desktop Documents Downloads Music Pictures Public Templates Videos 桌面 [root@bogon ~]# ll anaconda-ks.cfg -rw-------. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod g=rw anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rw-rw----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod ug=r anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -r--r-----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod a=rwx anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rwxrwxrwx. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod u=rwx,g=rw,o= anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rwxrw----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg 受權表示 [root@bogon ~]# ll anaconda-ks.cfg ----------. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod u+w anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg --w-------. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod ug+r anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rw-r-----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod a+x anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rwxr-x--x. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod -x anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rw-r-----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod u-w anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -r--r-----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg [root@bogon ~]# chmod +w anaconda-ks.cfg [root@bogon ~]# ll anaconda-ks.cfg -rw-r-----. 1 root root 1257 3月 19 19:05 anaconda-ks.cfg //全局+w操做只會匹配到u(屬主用戶),由於全局+w很危險 權限引用 [root@bogon tmp]# ll | head -3 總用量 276 -rw-r--r--. 1 root root 0 4月 19 19:16 a -rw-r--r--. 1 root root 0 4月 19 19:16 b [root@bogon tmp]# chmod 766 a [root@bogon tmp]# ll | head -3 總用量 276 -rwxrw-rw-. 1 root root 0 4月 19 19:16 a -rw-r--r--. 1 root root 0 4月 19 19:16 b [root@bogon tmp]# chmod --reference=a b [root@bogon tmp]# ll | head -3 總用量 276 -rwxrw-rw-. 1 root root 0 4月 19 19:16 a -rwxrw-rw-. 1 root root 0 4月 19 19:16 b -R選項 root@bogon tmp]# ls -la skel 總用量 16 drwxr-xr-x. 3 root root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:43 .. -rw-r--r--. 1 root root 18 4月 19 19:43 .bash_logout -rw-r--r--. 1 root root 193 4月 19 19:43 .bash_profile -rw-r--r--. 1 root root 231 4月 19 19:43 .bashrc drwxr-xr-x. 4 root root 39 4月 19 19:43 .mozilla [root@bogon tmp]# chmod -R go= skel [root@bogon tmp]# ls -la skel 總用量 16 drwx------. 3 root root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:43 .. -rw-------. 1 root root 18 4月 19 19:43 .bash_logout -rw-------. 1 root root 193 4月 19 19:43 .bash_profile -rw-------. 1 root root 231 4月 19 19:43 .bashrc drwx------. 4 root root 39 4月 19 19:43 .mozilla [root@bogon tmp]# chmod -R g+r skel/ [root@bogon tmp]# ls -la skel 總用量 16 drwxr-----. 3 root root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:45 .. -rw-r-----. 1 root root 18 4月 19 19:43 .bash_logout -rw-r-----. 1 root root 193 4月 19 19:43 .bash_profile -rw-r-----. 1 root root 231 4月 19 19:43 .bashrc drwxr-----. 4 root root 39 4月 19 19:43 .mozilla
僅管理員可修改文件的屬主和屬組,
chown命令: 既能修改屬主也能修改屬組
chown [OPTION]... [OWNER][:[GROUP]] FILE... //修改屬主 chown [OPTION]... --reference=RFILE FILE... //引用(參考修改) 選項: -R:遞歸修改
chgrp命令: 只能用於修改屬組
chgrp [OPTION]... GROUP FILE... chgrp [OPTION]... --reference=RFILE FILE... exmple. 修改屬主 root@bogon tmp]# ls -la skel 總用量 16 drwxr-----. 3 root root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:45 .. -rw-r-----. 1 root root 18 4月 19 19:43 .bash_logout -rw-r-----. 1 root root 193 4月 19 19:43 .bash_profile -rw-r-----. 1 root root 231 4月 19 19:43 .bashrc drwxr-----. 4 root root 39 4月 19 19:43 .mozilla [root@bogon tmp]# chown -R docker skel [root@bogon tmp]# ll -d skel drwxr-----. 3 docker root 78 4月 19 19:43 skel [root@bogon tmp]# ll -a skel 總用量 16 drwxr-----. 3 docker root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:45 .. -rw-r-----. 1 docker root 18 4月 19 19:43 .bash_logout -rw-r-----. 1 docker root 193 4月 19 19:43 .bash_profile -rw-r-----. 1 docker root 231 4月 19 19:43 .bashrc drwxr-----. 4 docker root 39 4月 19 19:43 .mozilla 修改屬主和屬組 [root@bogon tmp]# ll -a skel/ 總用量 16 drwxr-----. 3 docker root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:55 .. -rw-r-----. 1 docker root 18 4月 19 19:43 .bash_logout -rw-r-----. 1 docker root 193 4月 19 19:43 .bash_profile -rw-r-----. 1 docker root 231 4月 19 19:43 .bashrc drwxr-----. 4 docker root 39 4月 19 19:43 .mozilla [root@bogon tmp]# chown -R jacky:docker skel/ [root@bogon tmp]# ll -a skel/ 總用量 16 drwxr-----. 3 jacky docker 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:57 .. -rw-r-----. 1 jacky docker 18 4月 19 19:43 .bash_logout -rw-r-----. 1 jacky docker 193 4月 19 19:43 .bash_profile -rw-r-----. 1 jacky docker 231 4月 19 19:43 .bashrc drwxr-----. 4 jacky docker 39 4月 19 19:43 .mozilla [root@bogon tmp]# chown -R root.root skel/ [root@bogon tmp]# ll -a skel/ 總用量 16 drwxr-----. 3 root root 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 19:57 .. -rw-r-----. 1 root root 18 4月 19 19:43 .bash_logout -rw-r-----. 1 root root 193 4月 19 19:43 .bash_profile -rw-r-----. 1 root root 231 4月 19 19:43 .bashrc drwxr-----. 4 root root 39 4月 19 19:43 .mozilla 引用(參考)修改 [root@bogon tmp]# ll a -rwxrw-rw-. 1 tom tom 0 4月 19 19:16 a [root@bogon tmp]# chown -R --reference=a /tmp/skel/ [root@bogon tmp]# ll -a skel/ 總用量 16 drwxr-----. 3 tom tom 78 4月 19 19:43 . drwxrwxrwt. 24 root root 4096 4月 19 20:02 .. -rw-r-----. 1 tom tom 18 4月 19 19:43 .bash_logout -rw-r-----. 1 tom tom 193 4月 19 19:43 .bash_profile -rw-r-----. 1 tom tom 231 4月 19 19:43 .bashrc drwxr-----. 4 tom tom 39 4月 19 19:43 .mozilla
思考:用戶對目錄有寫權限,但對目錄下的文件沒有寫權限時,
(1)可否修改目錄下的文件? 不能。
(2)可否刪除目錄下的文件? 能夠
umask:文件權限反向掩碼,遮罩碼
用戶擁有本身的umask,用戶建立文件後,文件的默認權限以下:
文件的權限: 666-umask 目錄的權限: 777-umask 注意:之因此文件用666去減,表示文件默認不能擁有執行權限;若是減得的結果中有執行權限,則須要將其加1; umask:023 666-023=643+1=644 777-023=754
umask命令:
umask: 查看當前umask
umask MASK:設置umask
注意:此類設定僅對當前shell進程有效;
install - copy files and set attributes--複製文件並設置屬性 單源複製: install [OPTION]... [-T] SOURCE DEST 多源複製: install [OPTION]... SOURCE... DIRECTORY... install [OPTION]... -t DIRECTORY SOURCE... 建立目錄: install [OPTION]... -d DIRECTORY... 經常使用選項: -m, --mode=MODE: 設定目標文件權限,默認爲755 -o, --owner=OWNER: 設定目標文件屬主; -g, --group=GROUP: 設定目標文件屬組; example. [root@bogon tmp]# install /etc/inittab /tmp [root@bogon tmp]# ls -l inittab -rwxr-xr-x. 1 root root 511 4月 19 20:37 inittab [root@bogon tmp]# ls -l /etc/inittab -rw-r--r--. 1 root root 511 8月 4 2017 /etc/inittab [root@bogon tmp]# rm inittab rm:是否刪除普通文件 "inittab"?y [root@bogon tmp]# install -m 640 /etc/init init.d/ inittab [root@bogon tmp]# install -m 640 /etc/inittab /tmp [root@bogon tmp]# ls -l inittab -rw-r-----. 1 root root 511 4月 19 20:42 inittab [root@bogon tmp]# install -o jacky -g docker /etc/inittab /root [root@bogon tmp]# ls -l /root/inittab -rwxr-xr-x. 1 jacky docker 511 4月 19 20:44 /root/inittab
-d選項建立目錄 [root@bogon tmp]# install -d hello [root@bogon tmp]# ll -d hello drwxr-xr-x. 2 root root 6 4月 19 20:45 hello
mktemp - create a temporary file or directory 建立臨時文件或臨時目錄 命令格式:mktemp [OPTION]... [TEMPLATE] TEMPLATE must contain at least 3 consecutive 'X's in last component(模板文件名中至少包含3個X,(自定義名稱.xxx)) -d --directory 建立臨時目錄 -u --dry-run 僅作測試,不會實際建立文件 -q --執行若發生錯誤,不會顯示任何信息 注意:mktemp會將建立的臨時文件名直接返回,所以,可直接經過命令引用保存起來; 使用mktemp 命令生成臨時文件時,文件名參數應當以"文件名.XXXX"的形式給出,mktemp 會根據文件名參數創建一個臨時文件。 例如:mktemp tmp.xxxx #生成臨時文件