Linux用戶與組管理
Linux系統上,用戶通過內核拷貝程序到內存中,從此發起進程。進程以發起者的身份進行,進程對文件的訪問權限,取決于發起進程的用戶的權限。而有些后臺進程或服務類進程以非管理員身份運行,為此也需要創建多個普通用戶,此類用戶不需登錄。
系統中,用戶類別分為管理員和普通用戶(系統用戶和登錄用戶),組類別分為基本組和附加組。管理系統上的用戶與組主要通過以下四個文件來實現
-
/etc/passwd 用戶的基本信息
-
/etc/shadow 用戶密碼
-
/etc/group 組的基本信息
-
/etc/gshadow 組密碼
生成密碼采用單向加密算法,并借助salt完成。分別用數字1-6來標識md5, sha1, sha225, sha256, sha384, sha512六種加密算法。對用戶與組的管理一般涉及以下幾類工作:用戶/組的創建、修改、刪除、切換、設置密碼四個方面。
用戶管理
創建用戶 useradd
useradd [option] login-name -u 指定UID -g 指定基本的GID,但指定的組必須事先存在 -G 指定用戶所屬的附加組,多個組之間用","隔開 -c 指定注釋信息comment -d /path/to/home-dir 指定用戶家目錄;通過復制/etc/skel目錄并重命名實現;如果指定的及目錄已經存在,不從skel文件夾中復制文件 -s 指定用戶默認shell,可用的所有可選shell存儲在/etc/shells文件中 -r 創建系統用戶 -m 強制創建用戶主目錄 -M 不為用戶創建主目錄 -f 用戶非活動期 -1 永不過期 注意:創建用戶時的諸多默認設定,配置文件為/etc/login.defs useradd -D 顯示創建用戶的配置信息 useradd -D [options] 修改默認選項的值,修改的結果保存在/etc/default/useradd文件中
修改用戶屬性 usermod
usermod [option] login-name -u newUID 修改用戶的UID為此處指定的UID -g 修改用戶的GID,修改用戶所屬的基本組 -G 修改用戶所述的附加組。注意:此處修改只能覆蓋原有附加組設置 -a 與-G共同使用,為用戶添加附加組 -c 修改用戶的注釋信息 -d /path/to/new-home-dir 修改用戶的家目錄,用戶原有的文件不會被轉移至新目錄 -m 只能與-d一同使用,將原有的家目錄轉移為新的家目錄; -l 修改用戶的登錄名 -s 修改用戶的默認shell -L 鎖定用戶的賬號,禁止用戶登錄;即在用戶原來的面字符之前添加一個“!” -U 解鎖用戶的賬號
設置密碼信息 passwd
passwd [option] [login-name] 命令后不指明login-name時,用戶可為自己的賬號修改密碼信息 passwd login-name 只有root能修改其他用戶的密碼信息 -l/-u 鎖定/解鎖用戶賬戶 -d 清除用戶密碼 -e date 指明用戶賬戶過期明確的日期 -n days 密碼最小使用期限 -x days 密碼最長使用期限 -i days 非活動期限 -w days 警告期限 --stdin 從標準輸入讀取密碼
切換用戶 su
登錄式切換:會通過重新讀取用戶的配置文件來重新初始化 su - username su -l username 非登錄式切換: su username 注意:管理員可以無密碼切換至其他任何用戶 su - username -c "COMMAND" 以某用戶的身份運行“COMMAND”
顯示用戶有效ID
id [option] [user] -u 僅顯示UID -g 僅顯示用戶基本組ID -G 僅顯示用戶所屬的所有組ID -n 顯示用戶的名稱而非ID
刪除用戶 userdel
userdel [option] login-name -r 刪除用戶時一并刪除其家目錄
組管理
創建新組 groupadd
groupadd [option] group-name -g GID 指定GID;默認為上一個GID+1 -r 創建系統組
修改組屬性 groupmod
groupmod [option] group-name -g GID修改組ID -u new-group-name 修改組名
修改組密碼 gpasswd
gpasswd [option] group -a username 向組中添加用戶 -d username 從組中移除用戶 -r 刪除指定組的組密碼
組切換 newgrp
newgrp [-] [group-name] 如果命令后不跟group-name,則用戶切換回/etc/passwd文件中記錄的默認組 - 會模擬用戶以新組重新登錄,以實現重新初始化工作環境
刪除組 groupdel
groupdel [option] group-name
權限管理
Linux文件中的權限有9位字符,通過ls命令的-l選項可以查看。
[root@localhost ~]# ls -l . total 8 -rw-------. 1 root root 1624 Nov 13 08:29 anaconda-ks.cfg -rw-------. 1 root root 1672 Nov 13 00:36 initial-setup-ks.cfg
-
左三位是文件屬主的權限,中三位是文件屬組的權限,右三位是其他用戶對該文件的權限。
-
每類用戶的權限共有8種組合“—, –x, -w-, r–, -wx, r-x, rw-, rwx”,r:可讀取文件的內容,w:可以修改文件的數據,x:可將文件運行為進程。8種組合表示為數字分別為:0,1,2,3,4,5,6,7。
Linux中進程對文件的訪問權限遵從以下模型:1 如果進程的屬主與文件的屬主一致,則應用屬主對該文件的權限;2 如果屬主不一致,如果進程的屬主屬于用戶的屬組,則應用該文件的屬組對該文件的權限;3 如果進程的屬主以上兩條都不滿足,則應用other權限。
Linux中權限的管理主要涉及兩個方面:設定文件的屬主、屬組;設定文件屬主、屬組以及其他用戶分別所具有的權限。
設置文件屬主、屬組以及其他用戶的權限 chmod
chmod [option] mode[,mode]... fiel... mode表示法: 賦權表示法:直接操作一類用戶的所有權限位rwx; u/g/o/a= 授權表示法:直接操作一類用戶的一些權限位r,w,x; u+, u- g+, g- o+, o- a+, a- --reference=/path/to/reference 以reference文件的權限作為參考標準 -R 遞歸修改
修改文件的從屬關系 chown
chown [option]... [owener][:group] file --reference=/path/to/reference 以reference文件的屬主屬作為參考標準修改之 -R 遞歸修改
文件的權限反向掩碼,遮罩碼 umask
新建文件:其權限為666-umask;新建目錄:其權限為777-umask。Linux中新建文件默認不能擁有執行權限,如果(666-umask)結果中有執行權限,則自動為其加一。
umask 查看當前命令 umask MASK 設置umask,只對當前shell進程有效
原創文章,作者:N24_fynl,如若轉載,請注明出處:http://www.www58058.com/62961
基礎命令總結的得非常好,希望你能牢記這些基礎知識。加油!