一般來講,添加用戶時常使用“useradd ”命令,系統即可默認添加用戶並設置UID,GID等信息,其實這背後都是可以通過手動修改系統文件實現的。
我們知道,在/etc目錄下有/etc.passwd, /etc/shadow, /etc/group等文件。這3個文件分別存放系統用戶的用戶名(UID,GID,家目錄,使用的shell版本等),用戶密碼和系統內用戶組信息。所以我們就手動修改這些文件來達到添加用戶的目的。
步驟如下:(以添加suse為例)
1 /etc.passwd, /etc/shadow, /etc/group 內追加內容。格式可通過查看原有文件得 到。
① echo "suse:x:527:527::/home/suse:/bin/bash" >> /etc/passwd
② echo "suse:x:527:" >> /etc/group
③ echo "$1$fegjjfefa$fwlgd8768fUbWF97o./geUnC.:15089:0:99999:7:::" >> /etc/shadow
其中③較難理解,“fegjjfefa$fwlgd8768fUbWF97o./geUnC”為MD5加密生成的用戶密 碼,15089為建立時間,0表示密碼最短期限,99999表示密碼最長期限。所以我們 要手動生成這樣的字段值。可通過以下命令實現:
#openssl passwd -1 -salt XXXXXXXX 實際密碼 (-salt XXXXXXXX未添加的8為雜 質,passwd -1 一MD5加密方式生成)
# 而15089表示從linux元年至創建用戶事的天數。用此命令實現: z=$[`date'+%s'`/86400] → z=15089
2
現在我們仍然不能登錄新用戶,因為還沒有家目錄
# mkdir /home/suse
#chown -R suse:suse /home/suse (更改家目錄的屬主屬組並限定此目錄下的文件為此屬主屬組)
#chmod 700 /home/suse
但此時仍不能登錄,系統並沒有此用戶的框架信息,環境屬性信息等。
3 拷貝 /etc/skel 下的.bash*至 用戶家目錄。
# cp /etc/skel/.bash* /home/suse/
接下還要確認這些文件的權限,屬主屬組。
至此,手動添加用戶完成,可以以suse身份登錄主機了。