說明:
1、這篇博文記錄的是CentOS 7 用戶賬戶的配置,包括添加用戶、添加用戶組、刪除用戶、刪除用戶組等。其中包括分析用戶的配置文件、目錄以及對安全的思考。
2、用戶配置方面CentOS 7與以往版本感覺沒有差別。
第一部分 認識用戶
Centos 7 系統最小化安裝,默認配置,是沒有創建其他用戶的。作為服務器操作系統,為了安全起見,一般是使用一般用戶。這就牽涉到用戶、用戶組的創建以及刪除。
此外,CentOS 7 和其他版本的linux一樣,都具有相應用戶的配置文件及目錄,如下:
/etc/passwd //用戶賬戶信息,可以看出用戶名稱 /etc/shadow //用戶賬戶加密后信息,包括但不限于/etc/passwd中的信息 /etc/group //組賬戶信息,可以看出組名稱 /etc/gshadow //組賬戶安全信息,包括但不限于/etc/group中的信息 /etc/default/useradd //賬戶創建時默認值 /etc/skel/ //包含默認文件的目錄,具體作用尚不清楚 /etc/login.defs //安全性的默認配置,與上面/etc/default/useradd有區別
我們看一下比較重要的配置文件/etc/default/useradd,內容如下:
# useradd defaults fileGROUP=100 //起始GID值HOME=/home //家目錄位置INACTIVE=-1 //有效時間,負值為永久,正數代表天數EXPIRE=SHELL=/bin/bash //shell路徑SKEL=/etc/skel //默認配置文件路徑CREATE_MAIL_SPOOL=yes //是否創建郵件池,具體作用待以后學習
我們再來看一下/etc/login.defs文件,重點內容如下:
MAIL_DIR /var/spool/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 99999PASS_MIN_DAYS 0PASS_MIN_LEN 8PASS_WARN_AGE 7...# Min/max values for automatic uid selection in useradd 最小/最大UID設置#UID_MIN 1000 //我們創建的用戶的UID從1000開始UID_MAX 60000....# Min/max values for automatic gid selection in groupadd#GID_MIN 1000GID_MAX 60000....CREATE_HOME yes //是否創建家目錄...# Use SHA512 to encrypt password. //采用SHA512加密ENCRYPT_METHOD SHA512
從文件內容可見,/etc/login.defs 是比較宏觀的進行偏重安全方面的配置。
下面是一些實際過程中常用的命令:
useradd //添加用戶passwd //為用戶設置密碼 userdel //刪除用戶usermod //修改用戶信息groupadd //添加用戶組groupdel //刪除用戶組groupmod //修改用戶組信息groups //顯示當前進程用戶所屬的用戶組
第二部分 創建用戶
例子一: 最簡單的創建用戶
執行如下命令:
useradd test
passwd test
實例如圖,并且系統會對密碼做限制,比如長度、復雜度,但是不影響創建。可以理解為“溫馨提示”。
這樣一個用戶名為test的用戶已經創建好了。我們看一下屬性。
執行命令:id test //查看用戶信息
我們發現test的uid=1000,gid=1000,位于test用戶組,說明缺參數的新建用戶,會默認新建一個與用戶名同名的用戶組并加入其中,我們也注意到UID、GID的值與默認的配置文件中保持一致,可見配置文件是生效的,同樣也可以再新建一個用戶,看一下UID、GID的值,會看到是1001.可以嘗試一下。我們可以切到/home目錄下,會看到用戶目錄,與配置文件設定一致。
例子二:帶參數的創建賬戶
上個例子我們采用默認配置,只是設置了用戶名和密碼。這次我們手動設置UID、GID等。首先我們看一下,useradd的參數,如下:
-b, --base-dir BASE_DIR 新賬戶的主目錄的基目錄 -c, --comment COMMENT 新賬戶的 GECOS 字段 -d, --home-dir HOME_DIR 新賬戶的主目錄 -D, --defaults 顯示或更改默認的 useradd 配置 -e, --expiredate EXPIRE_DATE 新賬戶的過期日期 -f, --inactive INACTIVE 新賬戶的密碼不活動期 -g, --gid GROUP 新賬戶主組的名稱或 ID -G, --groups GROUPS 新賬戶的附加組列表 -h, --help 顯示此幫助信息并推出 -k, --skel SKEL_DIR 使用此目錄作為骨架目錄 -K, --key KEY=VALUE 不使用 /etc/login.defs 中的默認值 -l, --no-log-init 不要將此用戶添加到最近登錄和登錄失敗數據庫 -m, --create-home 創建用戶的主目錄 -M, --no-create-home 不創建用戶的主目錄 -N, --no-user-group 不創建同名的組 -o, --non-unique 允許使用重復的 UID 創建用戶 -p, --password PASSWORD 加密后的新賬戶密碼 -r, --system 創建一個系統賬戶 -R, --root CHROOT_DIR chroot 到的目錄 -s, --shell SHELL 新賬戶的登錄 shell -u, --uid UID 新賬戶的用戶 ID -U, --user-group 創建與用戶同名的組 -Z, --selinux-user SEUSER 為 SELinux 用戶映射使用指定 SEUSER
新建一個UID=501,GID=600,30天有效期,家目錄為/home/test5的用戶test4.
命令 :
groupadd -g 600 test3 //創建GID=600的用戶組test3 useradd -u 501 -g 600 -f 30 -m -d /home/test5 test4
當我們再次打開用戶文件/etc/passwd或者id test4會看到我們自己的配置。
uid=501(test4) gid=600(test3) 組=600(test3)第三部分 更改用戶設置
不同的 用戶需要不同的權限,擁有不同的SHELL,是否允許登錄。這個部分,就需要用到usermod命令修改用戶配置。我們上個例子中創建過一個test賬戶,默認SHELL是/bin/bash,是可以登錄的。
禁止登錄:
usermod -s /sbin/nologin test //-s 指定shell
修改用戶名:
usermod -l test88 test //-l 新的用戶名
此外還可以家目錄、過期天數、更換組、鎖定用戶、解鎖用戶等功能,可以查看參數實踐。
第四部分刪除用戶/組
當我們創建用戶/組有錯誤時,可能會刪除用戶/組,然后再重新創建。我們使用userdel命令來刪除用戶。
執行命令:
[root@localhost home]# userdel test[root@localhost home]# useradd testuseradd:警告:此主目錄已經存在。不從 skel 目錄里向其中復制任何文件。正在創建信箱文件: 文件已存在
出現這個問題是因為我們刪除用戶時,系統為了安全起見并沒有刪除相關的文件以及目錄。我們查看一下userdel參數:
用法:userdel [選項] 登錄選項: -f, --force force some actions that would fail otherwise e.g. removal of user still logged in or files, even if not owned by the user -h, --help 顯示此幫助信息并推出 -r, --remove 刪除主目錄和郵件池 -R, --root CHROOT_DIR chroot 到的目錄 -Z, --selinux-user 為用戶刪除所有的 SELinux 用戶映射
我們可以使用參數-rf來刪除相關文件目錄,這一步具有危險性,是否有回滾操作,不是特別清楚。
執行命令:
[root@localhost home]# userdel -rf test[root@localhost home]# useradd test
這樣,就不會出現提示了。
第五部分 用戶安全配置
在操作系統安全中,用戶權限、文件權限也是非常重要。現在就幾個小點記錄一下。這次目的主要有禁止root用戶連接、一般用戶使用sudo命令提權。我們在上個步驟中,創建了一個test用戶,當我們輸入sudo命令時,會提示如下:
test不在 sudoers 文件中。此事將被報告。
解決這個問題,我們只需要在/etc/sudoers 中添加用戶test即可,代碼如下:
//找到如下一行,在下面添加即可.....root ALL=(ALL) ALLtest ALL=(ALL) ALL //這一行是添加的
到這里應該就可以解決問題了。
新增:在虛擬機里面重新安裝了一個CentOS 7,實驗了一下,確實可以成功。下面是/etc/sudoers 屬性:
可以看到擁有setUID權限,任何用戶都有x(執行)權限,故可以執行sudo命令。下面的內容就當作是對setUID權限的理解。
ps.因為之前按照網上的資料對其他部分進行了設置,但是感覺并不影響,下面貼出修改的部分及其目的
//修改文件 /usr/bin/sudo 用戶及用戶組chown root:root /usr/bin/sudo//修改權限為4755,其中4代表以文件所有者執行chmod 4755 /usr/bin/sudo
上面的命令意思是,將文件/usr/bin/sudo擁有者改為root,當執行時以root身份執行,這也是‘4’的含義。如果設置權限時,勿把“4755” 配置為755,就會出現這個錯誤。
sudo:有效用戶 ID 不是 0,sudo 屬于 root 并設置了 setuid 位嗎?
解決方法呢,就是剛才說的以root(uid=0)身份運行。
在實際環境中,為了防止黑客對root賬戶進行暴力破解,我們通常禁止root賬戶SSH遠程連接。操作如下:
//修改 /etc/ssh/sshd.config 文件,將#PermitRootLogin yes修改為PermitRootLogin no//重啟sshd服務systemctl restart sshd.service
備注:CentOS 7 取消了service 用法,盡管部分情況下還可以使用,但是我就先使用systemctl吧。
除此之外,我覺得最重要的還是不同用戶間的權限分配問題。先暫時留下來,以后根據實際情況添加筆記。
大家,還可以根據參數,依據實際情況配置。大家可以相互交流。
新聞熱點
疑難解答