【AWSL】之Linux账号和权限管理(/etc/passwd、/etc/shadow、useradd、passwd、usermod、groupadd、gpasswd...chmod、chown)
序言
作為一個多用戶、多服務的服務器操作系統,Linux提供了嚴格的權限管理機制,主要從用戶身份、文件權限兩方面對資源訪問進行限制。
Linux最優秀的地方之一就在于它的多人多任務環境,如果你首次接觸Linux的話,那么在Linux下面這么多的目錄和文件,到底每個目錄和文件代表什么意義呢?下面我就來就此做個總結。
Linux賬號和權限
- 序言
- 一.管理用戶賬號和組賬號
- 1.概述
- 2.用戶賬號文件/etc/passwd
- 3.用戶賬號文件/etc/shadow
- 4.添加用戶賬號useradd
- 5.設置/更改用戶口令passwd
- 6.修改用戶賬號的屬性usermod
- 7.刪除用戶賬號userdel
- 8.用戶賬號的初始配置文件
- 9.組賬號文件
- ①.添加組賬號groupadd
- ②.添加/刪除組成員gpasswd
- ③.刪除組賬號groupdel
- 二.管理目錄和文件的屬性
- 1.查詢賬號信息
- 2.文件/目錄的權限和歸屬
- 3.設置文件/目錄的權限chmod
- 4.設置文件/目錄的歸屬chown
- 5.權限掩碼umask
- 總結
一.管理用戶賬號和組賬號
1.概述
①用戶賬號
- 超級用戶
- 普通用戶
- 程序用戶
②組賬號 - 基本組(私有組)
- 附加組(公共組)
③UID和GID - UID(用戶標識符)
- GID(組標識符)
2.用戶賬號文件/etc/passwd
功能:保存用戶名稱、宿主目錄、登錄Shell等基本信息
- 文件位置: /etc/passwd
- 每一行對應一個用戶的賬號記錄👇
例:
第二行: root用戶賬號 x密碼占位符 0用戶賬號ID 0組賬號ID root用戶說明 /root宿主目錄 /bin/bash登錄shell
3.用戶賬號文件/etc/shadow
功能:保存用戶的密碼、賬號有效期等信息
- 文件位置: /etc/shadow
- 每一行對應一個用戶的密碼記錄👇
例:
第二行:一字段root用戶賬號 二字段$6$OuUbuwimLtddNnJx$H2ZqO4izXjefcWNo6gFYjW/60AXG6qqgJcCSDRXU2ra/SB0IkjtNMJkawW5Ha89ogVFVMbZomjJ74pmA3fqTC密文密碼 三字段:14374:上次修改的時間(從Linux誕生時間點開始計算) 四字段:0:密碼的最短有效天數(也就是定義多少天之后可以再次修改密碼) 五字段:99999:密碼最長有效天數(也就是密碼可以存在多少天) 六字段:7:提前多少天警告用戶密碼過期時間 七字段密碼過期后多少天內禁用此用戶 八字段賬號時間(空的代表賬號永久可用) 九字段保留字段(沒有特殊用途)
擴展 :*!!:表示此用戶不能登錄到系統
這里如果是空的::表示用戶無需密碼登錄
4.添加用戶賬號useradd
常用選項:
- -u:指定用戶的UID號,要求該UID號碼未被其他用戶使用。
- -d:指定用戶的宿主目錄位置(當與-M一起使用時,不生效)
- -e:指定用戶的賬戶失效時間,可使用YYYY-MM-DD的日期格式。
- -g:指定用戶的基本組名(或使用GID號)
- -G:指定用戶的附加組名(或使用GID號)
- -M:不建立宿主目錄,即使/etc/login.defs系統配置中已設定要建立宿主目錄。
- -s:指定用戶的登錄Shell (-s /sbin/nologin禁止用戶登錄)
附加1:
/etc/login.defs 是設置用戶帳號限制的文件。該文件里的配置對root用戶無效。
如果/etc/shadow文件里有相同的選項,則以/etc/shadow里的設置為準,也就是說/etc/shadow的配置優先級高于/etc/login.defs
#REQUIRED required
#Directory where mailboxes reside, or name of file, relative to the
#home directory. If you do define both, MAIL_DIR takes precedence.
#QMAIL_DIR is for Qmail
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#創建用戶時,要在目錄/var/spool/mail中創建一個用戶mail文件
#MAIL_FILE .mail
#Password aging controls:
#PASS_MAX_DAYS Maximum number of days a password may be used.
#PASS_MIN_DAYS Minimum number of days allowed between password changes.
#PASS_MIN_LEN Minimum acceptable password length.
#PASS_WARN_AGE Number of days warning given before a password expires.
PASS_MAX_DAYS 99999
#密碼最大有效期
PASS_MIN_DAYS 0
#兩次修改密碼的最小間隔時間
PASS_MIN_LEN 5
#密碼最小長度,對于root無效
PASS_WARN_AGE 7
#密碼過期前多少天開始提示
#Min/max values for automatic uid selection in useradd
#創建用戶時不指定UID的話自動UID的范圍
UID_MIN 500
#用戶ID的最小值
UID_MAX 60000
#用戶ID的最大值
#Min/max values for automatic gid selection in groupadd
#自動組ID的范圍
GID_MIN 500
#組ID的最小值
GID_MAX 60000
#組ID的最大值
#If defined, this command is run when removing a user.
#It should remove any at/cron/print jobs etc. owned by
#the user to be removed (passed as the first argument).
#USERDEL_CMD /usr/sbin/userdel_local
#當刪除用戶的時候執行的腳本
#If useradd should create home directories for users by default
#On RH systems, we do. This option is overridden with the -m flag on
#useradd command line.
CREATE_HOME yes
#使用useradd的時候是夠創建用戶目錄
#The permission mask is initialized to this value. If not specified,
#the permission mask will be initialized to 022.
UMASK 077
#This enables userdel to remove user groups if no members exist.
USERGROUPS_ENAB yes
#用MD5加密密碼
附加2:
chage命令:用來修改帳號和密碼的有效期限,針對目前系統已經存在的用戶
chage [選項] 用戶名
-m:密碼可更改的最小天數。為零時代表任何時候都可以更改密碼。
-M:密碼保持有效的最大天數。chage -M 60 root
-w:用戶密碼到期前,提前收到警告信息的天數。
-E:帳號到期的日期。過了這天,此帳號將不可用。
-d:上一次更改的日期。
-i:停滯時期。如果一個密碼已過期這些天,那么此帳號將不可用。
-l:例出當前的設置。由非特權用戶來確定他們的密碼或帳號何時過期。
例:chage -E 2019-04-29 test //其中,test為用戶,用戶將在2019年4月29日失效(不可登錄)
chage -d 2019-06-30 test //設置test用戶最后一次修改密碼的日期為2019年6月30日
chage -d 0 test //則代表該test用戶需立即修改密碼
date -d “+45 days” -u //如果不知道時間可以用date查看
-u:UTC時間
[root@localhost ~]# chage -l root
最近一次密碼修改時間 :從不
密碼過期時間 :從不
密碼失效時間 :從不
帳戶過期時間 :從不
兩次改變密碼之間相距的最小天數 :0
兩次改變密碼之間相距的最大天數 :99999
在密碼過期之前警告的天數 :7
總結:
第三個字段為:密碼最后一次修改的時間 (chage -d)
第四個字段為:密碼最小修改間隔時間 (chage -m)
第五個字段為:密碼的有效期 (chage -M)
第六個字段為:密碼需要變更前的警告天數 (chage -W)
第七個字段為:密碼過期后的寬限天數 (chage -I)
第八個字段為:賬號失效時間 (chage -E)
5.設置/更改用戶口令passwd
常用選項:
- -d 清空指定目錄密碼
- -l(passwd -l 用戶名)鎖定用戶賬號 (即登錄不了賬號)
- -S 查看用戶的狀態(有無被鎖定)
- -u 解鎖用戶賬號
6.修改用戶賬號的屬性usermod
常用選項:
-l 更改用戶的登錄名稱(Login Name)
-L 鎖定用戶賬號
-U 解鎖用戶賬號
-u、-d、-e、-g、-G、-s與useradd命令中的含義相同
7.刪除用戶賬號userdel
- userdel -r 表示連用戶的宿主目錄一并刪除
8.用戶賬號的初始配置文件
文件來源
- 新建用戶賬號時,從/etc/skel目錄中復制而來
主要的用戶配置文件
- ~/.bash_profile(文件中命令,啟動文件)
- ~/.bashrc(文件中命令,啟動文件)
- ~/.bash_logout(每次用戶退出exit時執行這個文件)
9.組賬號文件
與用戶賬號文件相類似
- /etc/group:保存組賬號基本信息
- /etc/gshadow:保存組賬號的密碼信息
①.添加組賬號groupadd
命令:groupadd【-g GID號】 組賬號名
②.添加/刪除組成員gpasswd
gpasswd:設置組賬號密碼(極少用)、添加/刪除組成員
命令:gpasswd 【選項】… 組賬號名
常用選項:
-a:向組內添加一個用戶
groupadd -g 1200 market
useradd mike
gpasswd -a mike market 將mike加入到market組中
-d:從組內刪除一個用戶成員
-M:定義組成員列表,以逗號分開
③.刪除組賬號groupdel
命令:groupdel 組賬號名
二.管理目錄和文件的屬性
1.查詢賬號信息
- group 用戶名 查詢用戶所屬的組
- id 用戶名 查詢用戶身份標識
- finger 用戶名 查詢用戶賬號的詳細信息
- w、who、users 查詢已登錄到主機的用戶信息
2.文件/目錄的權限和歸屬
■訪問權限
- 讀取r:允許查看文件內容、顯示目錄列表
- 寫入w:允許修改文件內容,允許在目錄中新建、移動、刪除文件或子目錄
- 可執行x:允許運行程序、切換目錄
■歸屬(所有權) - 屬主:擁有該文件或目錄的用戶帳號
- 屬組:擁有該文件或目錄的組帳號
3.設置文件/目錄的權限chmod
命令:chmod 【ugoa】 【+ - =】【rwx】文件或目錄
u、g、o、a分別表示屬主、屬組、其他用戶、所有用戶
+、-、=分別表示增加、去除、設置權限
r. w, x分別表示讀、寫、運行權限
或
chmod nnn 文件或目錄
nnn 三位八進制數
常用選項:
-R:遞歸修改指定目錄下所有子項的權限
4.設置文件/目錄的歸屬chown
■命令:
chown 屬主 文件或目錄
chown :屬組 文件或目錄
chown屬主:屬組 文件或目錄
■常用選項:
-R:遞歸修改指定目錄下所有文件、子目錄的歸屬
5.權限掩碼umask
■umask作用
- 控制新建的文件或者目錄的權限
- 默認權限去除umask的權限為新建的文件或者目錄的權限
■umask設置: umask 022 =chmod 755
■umask查看: umask
■示例 - 將umask設為000, 新建目錄或者文件,查看權限
- 將umask設為022,新建目錄或者文件,再查看權限
總結
- Linux操作系統資源可以被不同用戶使用,每個用戶對自己的資源有特定的權限,互不影響。
- 我們在使用命令的時候,其實有很多地方是相通的,比如查找命令ls 的選項-R 和設置權限命令 chmod 的選項-R ,都是表示以遞歸的方式去執行某種操作。所以說,在Linux系統中,沒有絕對的方法,解決一個問題是有很多種方案的。
- 希望能給正在學習Linux的朋友帶來幫助
總結
以上是生活随笔為你收集整理的【AWSL】之Linux账号和权限管理(/etc/passwd、/etc/shadow、useradd、passwd、usermod、groupadd、gpasswd...chmod、chown)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【AWSL】之Linux源代码编译及配置
- 下一篇: 【AWSL】之Linux磁盘管理与文件系