1. 程式人生 > >linux學習—權限管理

linux學習—權限管理

理解 fault wan 註釋 user creat create lin pan

用戶、組和權限(一)--為了讓每個用戶具有較安全的管理機制,文件的權限管理是很重要的。Linux通常將文件的訪問方式分為三個類別(owner/group/other),並且具有Read/Write/eXecute等的權限。



目錄

  • 用戶

  • 用戶組

  • 安全上下文

  • 組的類別

  • passwd,shadow,group,gshadow文件

  • useradd,userdel,groupadd,groupdel命令

  • passwd,usermod,gpasswd,groupmod命令

  • groupmems,newgrp,groups命令


一、用戶

Linux是多用戶的系統,經常會出現多個用戶同時使用主機,考慮到每個人的隱私以及個人愛好,文件擁有者(用戶)就相當重要了。


用戶類別 UID
管理員root ,0
系統用戶1-499(centos6) ,1-999(centos7)

普通用戶

1—65535

登錄用戶500+(centos6) , 1000+(centos7)

二、用戶組

用戶組多用於團隊開發,每個團隊的成員需要同時可以修改自己團體內任何人文件,且不能讓其他團體的人看到自己文件的內容,這時通過用戶組的權限設置可以實現。


管理員組 root 0
系統組
普通組






現在用家庭的概念做一個形象的比喻:

假設有一家人,家裏有三兄弟,分別是王大毛、王二毛、王三毛,這個家庭屬於王大毛門下,所以,王大毛家有三個人(王大毛、王二毛、王 三毛),而且這三個人分別擁有自己的房間,共同擁有一個客廳,王大毛家相當於用戶組,三兄弟相當於3個用戶;

有一個人叫做張小豬,他對於王大毛家的人就是其他人。

技術分享圖片


三、安全上下文

進程發起者 命令 對象

進程所能夠訪問資源的權限取決於進程的運行者的身份


四、組的類別

主要組(也叫私有組) 用戶創建的時候,組名自動創建//組名同用戶名

附加組(真正常用的)


思考:多個用戶可以屬於一個主要組嗎?

答:可以手動設置,但是最好不要這樣設置,安全考慮


五、passwd,shadow,group,gshadow文件

/etc/passwd

pwconv 將passwd中的密碼映射到/etc/shadow

pwunconv 取消映射

/etc/shadow

用戶名

密碼位

密碼上一次的修改時間

密碼的最小存活期

密碼的最大存活期

密碼過期之前提前多少天提醒用戶將會過期

密碼過期之後在用戶仍不改密碼後多少天觸發帳戶過期

帳戶過期時間

保留位

/etc/group

組名 組密碼組ID 以當前組為附加組成員列表(,為分隔符)

grpconv 將組密碼映射到/etc/gshadow

grpunconv 取消組密碼的映射

/etc/gshadow

組名 組密碼 管理員列表 以當前組為附加組成員列表


六、useradd,userdel,groupadd,groupdel命令

1、useradd + [選項] + 用戶名

useradd 用戶創建 adduser也可以(其實adduser就是useradd的軟鏈接)

-u+UID 指定UID創建用戶

-o 配合-u 指定已存在的UID創建用戶

例如:useradd -u 600 lisi

useradd -u 600 wangwu -o

cat /etc/passwd 查看lisi和wangwu的UID相同

技術分享圖片

(以:為分隔符,第三列為UID)

-g+GID或組名 指定已存在的主要組創建用戶

-G+附加組號或者附加組名 指定已存在的附加組創建用戶,以,為分隔符可以同時指定多個

-c+註釋信息 附加註釋信息創建用戶

-d+目錄路徑 指定目錄路徑,創建用戶(目錄名已存在,基名不存在)

-s 指定登錄shell創建用戶

例如:useradd -s /sbin/nologin wangwu 創建不可交互式登錄用戶wangwu

之後輸入su - wangwu ,顯示登錄失敗

-N 不創建私有組作為主組,即使用users組作主組

-r 創建系統用戶

2、/etc/default/useradd 創建用戶的默認配置文件

GROUP=100 表示使用useradd -N時默認使用的組為GIP為100的組

HOME=/home 自動創建家目錄時,從哪個目錄下創建與用戶同名的家目錄

INACTIVE=-1 用戶是否設置 密碼過期後,多少天帳戶過期,為-1時,不會觸發帳戶過期

EXPIRE= 是否指定一個帳戶過期時間,為空表示帳戶默認永不過期

SHELL=/bin/bash 使用useradd創建用戶時,如不使用-s 指定則默認的用戶shell為/bin/bash

SKEL=/etc/skel 家目錄的內容數據參考目錄,自動創建家目錄時,從哪個目錄拷貝模板文件

(利用useradd新增用戶後,新增用戶家目錄下的各項數據都是由/etc/skel 復制過去的)

CREATE_MAIL_SPOOL=yes 創建用戶時是否在/var/spool/mail下為用戶與用戶同名的郵箱文件。

手工創建家目錄的方法(加深理解)

mkdir /home/machao

chmod 700 /home/machao/

cp -r /etc/skel/.[^.]* /home/machao/

chown -R machao.machao /home/machao

3、userdel -r +用戶名 刪除用戶名連同家目錄以及郵箱文件一起刪除

4、groupadd + [選項] + 組名 創建組 (創建的組不分主要組和附加組,因為沒有用戶)

-g+GID或者組名 創建指定GID的組

-r 創建系統組

5、groupdel+ 組名 刪除組


七、passwd,usermod,gpasswd,groupmod命令

1、passwd + username 指定要修改密碼的用戶名(僅root運行,普通用戶不輸入用戶名,可直接修改自己的密碼)

-l 鎖定用戶 實際就是在密碼位前加!!

-u 取消用戶鎖定

-e 強制用戶下次登錄時更改密碼

-n + mindays: 指定最短使用期限

-x + maxdays: 最大使用期限

-w + warndays:提前多少天開始警告

-i + inactivedays:非活動期限

--stdin 從標準輸入接收用戶密碼(常用)

2、usermod + username 用戶屬性修改

-u+UID 修改用戶ID

-g+GID或者組名 修改用戶主要組

-G+GID或者組名[,組名] 設定用戶的附加組為哪些組,之前的附加組信息被覆蓋

-aG 增加用戶的附加組,不會覆蓋之前的附加組

-s+shell 修改用戶的登錄shell

-c+註釋信息 修改用戶的描述信息

-d+目錄路徑 新家目錄不會自動創建;若要創建新家目錄並移動原家數據,同時使用-m選項

-l+目標用戶名+原始用戶名 更改用戶名

-L+用戶名 鎖定指定用戶,在/etc/shadow密碼欄增加!

-U+用戶名 解鎖指定用戶,將/etc/shadow密碼欄的!拿掉

-e+年月日 指明賬戶過期的日期

-f 設定非活動期限

3、gpasswd + [選項] + 組名 (重點難點)

gpasswd + 組名 設置組密碼

gpasswd -a + 用戶名 添加指定用戶到指定組名的附加組

gpasswd -d + 用戶名 刪除用戶

gpasswd -M + 用戶名(多個用戶用,分隔) 僅root執行,設置用戶列表到指定用戶組名的組

(可以用命令groupmems -l -g +組名 查看指定組下用戶列表)

gpasswd -A + 用戶名(多個用戶用,分隔) 設置指定組的管理員 僅root執行

管理員只可以修改組密碼,單個踢出組成員,單個添加組成員;管理員可能不是組成員,也就不能訪問組內的文件,但是管理員可以 把自己加入該組內,然後訪問文件)

4、groupmod

-n+目標組名+原始組名 修改組名

-g+目標GID+原始組名 修改組ID


八、groupmems,newgrp,groups命令

1、groupmems 僅限於root

-g + 組名 -a + 用戶名 添加指定用戶到指定組名的附加組

-g + 組名 -d + 用戶名 刪除指定用戶

-g + 組名 -p 清空所有指定組成員

-g + 組名 -l 查看指定組有那些成員(僅附加組)

2、newgrp + 組名(普通用戶執行)

非附加組成員的普通用戶在正確輸入組密碼後臨時變更指定組名為主要組,原主要組臨時變成附加組

附加組成員的普通用戶無須輸入密碼就可以臨時變更指定組名為主要組,原主要組臨時變成附加組

*******************

使用newgrp之後實質就是進入了一個子shell,在這個子shell環境下的主要組為指定組,使用exit後,只是退出了子shell,當前用戶沒有變(註意理解)

技術分享圖片技術分享圖片

進入guanyu用戶下,查看用戶的主要組和附加組,使用了newgrp命令之後,主要組和附加組發生變化;exit退出之後,用戶並沒有變

*********************

3、groups + 用戶名 查看指定用戶屬於那些組(包含主要組和附加組)


小總結:添加刪除組成員可以用usermod -G,gpasswd -d,groupmems -g + 組 -d +用戶




linux學習—權限管理