CentOS Stream 8用戶權限管理指南
在CentOS Stream 8中,用戶權限管理需遵循“最小權限原則”,通過用戶與組管理、文件/目錄權限控制、sudo權限配置及SELinux增強等步驟,確保系統安全與穩定性。
useradd
命令,可指定家目錄、默認shell等選項(如-m
自動創建家目錄、-s
設置shell)。sudo useradd -m -s /bin/bash newuser
(創建名為newuser
的用戶,附帶家目錄,使用bash shell)。passwd
命令為用戶設置強密碼(需包含大小寫字母、數字、特殊字符,長度≥10位)。sudo passwd newuser
。usermod
命令調整用戶屬性,如更改家目錄、shell或追加組。sudo usermod -d /new/home/newuser -s /bin/zsh newuser
(修改家目錄與shell);sudo usermod -aG developers newuser
(將用戶追加到developers
組,-a
避免移除原有組)。userdel
命令,-r
選項可同時刪除家目錄及內容。sudo userdel -r olduser
(徹底刪除olduser
)。groupadd
命令創建新組。sudo groupadd admins
(創建admins
組)。usermod
(添加)或gpasswd
(移除)調整用戶組歸屬。sudo usermod -aG admins newuser
(將newuser
加入admins
組);sudo gpasswd -d newuser admins
(從admins
組移除newuser
)。groupdel
命令。sudo groupdel admins
(刪除admins
組)。使用chmod
命令設置文件/目錄的**讀(r)、寫(w)、執行(x)**權限,格式為chmod [權限值] 文件/目錄
。常見權限值:
755
:所有者(rwx)、組(r-x)、其他用戶(r-x)(適用于目錄,如/var/www
);644
:所有者(rw-)、組(r–)、其他用戶(r–)(適用于普通文件,如/etc/passwd
)。sudo chmod 755 /opt/myapp
(設置/opt/myapp
目錄權限為755)。chown
命令更改文件/目錄的所有者。sudo chown newuser /path/to/file
(將/path/to/file
的所有者改為newuser
)。chown
(同時改屬主與屬組)或chgrp
(僅改屬組)命令。sudo chown newuser:developers /path/to/file
(將屬主設為newuser
,屬組設為developers
);sudo chgrp admins /path/to/dir
(將/path/to/dir
的屬組改為admins
)。使用ls -l
命令查看文件/目錄的權限詳情(如-rw-r--r--
表示所有者可讀寫,組與其他用戶僅可讀)。
示例:ls -l /etc/passwd
(查看/etc/passwd
的權限與歸屬)。
默認情況下,wheel
組的用戶可使用sudo
執行管理員命令。將用戶加入wheel
組即可授予權限:
sudo usermod -aG wheel username
。
使用visudo
命令編輯/etc/sudoers
文件(避免語法錯誤導致系統無法使用sudo),通過用戶/組別名與命令別名限制sudo權限范圍。
示例:
# 允許developers組的用戶執行所有命令(無需密碼)
%developers ALL=(ALL) NOPASSWD: ALL
# 限制admin用戶僅能重啟httpd服務
admin ALL=(ALL) /usr/bin/systemctl restart httpd
SELinux(Security-Enhanced Linux)提供強制訪問控制(MAC),進一步限制進程權限。
使用sestatus
命令查看SELinux是否啟用(Enforcing
表示強制模式,Permissive
表示寬松模式)。
示例:sestatus
。
sudo setenforce 0
(立即生效,重啟后恢復)。/etc/selinux/config
文件,將SELINUX=enforcing
改為SELINUX=disabled
(需重啟系統)。若應用無法訪問特定目錄(如Apache訪問/data/web
),需修改SELinux上下文:
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/data/web(/.*)?"
(將/data/web
及其子目錄的SELinux類型設為httpd_sys_rw_content_t
)。sudo restorecon -Rv /data/web
(遞歸恢復目錄的SELinux上下文)。編輯/etc/login.defs
文件,調整以下參數:
PASS_MIN_LEN 12 # 密碼最小長度(建議≥12位)
PASS_MIN_DAYS 1 # 密碼修改間隔(至少1天)
PASS_WARN_AGE 7 # 密碼過期前警告天數(提前7天)
使用awk
命令查找/etc/shadow
中的空口令賬戶(第二字段為空),并強制設置密碼:
awk -F: '($2 == "") {print $1}' /etc/shadow
(列出空口令用戶);sudo passwd username
(為username
設置密碼)。
使用chattr
命令將/etc/passwd
、/etc/shadow
等文件設為不可修改(防止非授權刪除或篡改):
sudo chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow
;若需修改,可先取消不可修改屬性(sudo chattr -i 文件
)。
/etc/ssh/sshd_config
,禁用root遠程登錄、限制允許登錄的用戶:PermitRootLogin no
AllowUsers your_username
PermitEmptyPasswords no
重啟SSH服務使配置生效:sudo systemctl restart sshd
。sudo yum update
命令更新系統與軟件包,修補安全漏洞。通過以上步驟,可實現CentOS Stream 8用戶權限的精細化管理,平衡系統可用性與安全性。操作前需確認具備root權限,避免誤操作影響系統運行。