超級用戶:UID=0,root
普通用戶:UID 500起,由超級用戶或具有超級用戶權限的用戶創建的用戶。
虛擬用戶:UID 1—499,為了滿足文件或服務啟動的需要而存在,一般都不能登錄,只是傀儡用戶。
用戶關聯的四個文件:
/etc/passwd:用戶的賬號文件
/etc/shadow:用戶的密碼文件
/etc/group:組的賬號文件
/etc/gshadow:組的密碼文件
useradd(增):同adduser命令,執行此命令可在系統中添加用戶。
userdel(刪):執行此命令可刪除用戶及相關用戶的配置或文件。
usermod(改):修改用戶的命令,可以通過usermod來修改登錄名、用戶的家目錄等。
usermod -s /sbin/nologin oldboy
usermod -s /bin/bash oldboy
id(查):查看用戶的UID、GID及所歸屬的用戶組。
passwd:執行此命令可為用戶設置密碼,更改/etc/shadow。
chage:修改用戶密碼有效期限,管理/etc/shadow。
su:用戶角色切換工具。
sudo:sudo是通過另一個用戶來執行命令,su是用來切換用戶,然後通過切換到的用戶來完成相應的任務,但sudo能在命令後面直接接命令執行,比如sudo ls /root,不需要root密碼就可以執行只有root才能執行相應的命令或具備的目錄權限;這個權限需要通過visudo命令或直接編輯/etc/sudoers來實現。
visudo:visudo配置sudo權限的編輯命令,也可以直接用vi編輯/etc/sudoers實現,推薦使用visudo來操作(會自動檢查語法)。
/etc/skel目錄是用來存放新用戶配置文件的目錄,當我們添加新用戶時,這個目錄下的所有文件會自動被復制到新添加的用戶的家目錄下;默認情況下,/etc/skel目錄下的所有文件都是隱藏文件(以點開頭的文件);通過修改、添加、刪除/etc/skel目錄下的文件,可以為新建的用戶提供統一的、標准的、初始化用戶環境。
刪除/home/用戶家目錄 中的.bash_logout、.bash_profile、.bashrc產生的效果:-bash-4.1$
解決辦法:
從/etc/skel中拷貝.bash_logout、.bash_profile、.bashr到用戶家目錄即可解決。
/etc/login.defs文件是用來定義創建用戶時需要的一些用戶的配置信息。如創建用戶時,是否需要家目錄,UID和GID的范圍,用戶及密碼的有效期限等。
/etc/default/useradd文件是在使用useradd添加用戶時的一個需要調用的一個默認文件,可以使用"useradd -D 參數",這樣的命令格式來修改文件裡面的內容。
useradd參數選項
注釋說明
-c comment
新賬號passwd擋的說明欄
-d home_dir
新賬號每次登入時所使用的home_dir。預設值為default_home內login名稱,並當成登入時目錄名稱。
-e expire_date
賬號終止日期。日期的指定格式為MM/DD/YY。
-f inactive_days
賬號過期幾日後永久停權。當值為0時賬號則立刻被停權。而當值為-1時則關閉此功能,預設值為-1。
-g initial_group
group名稱或以數字來做為用戶登入起始用戶組(group)。用戶組名須為系統現有存在的名稱。用戶組數字也須為現有存在的用戶組。預設的用戶組數字為1。
-G group,[…]
定義此用戶為多個不同groups的成員。每個用戶組使用","逗號分隔。用戶組名同-g選項的限制。默認值為用戶的起始用戶組。
-m
用戶目錄如不存在則自動建立。如使用-k選項,skeleton dir內的檔案將復制至用戶目錄下。然而在/etc/skel目錄下的檔案也會復制過去。任何在skeleton_diror /etc/skel的目錄也相同會在用戶目錄下一一建立。The-k同-m不建立目錄以及不復制任何檔案為預設值。
-M
不建立用戶家目錄,優先於/etc/login.defs文件的設定。一般創建虛擬用戶時不建立家目錄,部署服務時需要創建虛擬用戶。
-n
默認情況下用戶的用戶組與用戶的名稱會相同。如果命令加了-n參數就不會生成和用戶名的用戶組了。
-s shell
用戶登入後使用的shell名稱。默認值為不填寫,這樣系統會指定預設的登入shell(根據/etc/default/useradd預設的值)。
-u uid
用戶的ID值。這個值必須是唯一的,除非用-o選項。數字不可為負值。
useradd -e、-u、-G、-s、-d多參數組合的例子:
添加用戶oldboy,並設置用戶注釋信息為HandsomeBoy,UID指定為806,歸屬為用戶組root、oldboy、sa成員,其shell類型為/bin/sh,設置家目錄為/oldboy。
groupadd參數選項
注釋說明
-g gid
指定用戶組GID值。除非接-o參數(如:groupadd -g gid)否則ID值必須是唯一的數字(不能為負數)。如果不指定會從500開始。
passwd參數選項
注釋說明
--stdin
從stdin讀入密碼
-k --keep-tokens
保留即將過期的用戶在期滿後仍能使用
-d --delete
刪除用戶密碼,僅能以root權限操作
-l --lock
鎖住用戶無權更改其密碼,僅能通過root權限操作
-u --unlock
解除鎖定
-f --force
強制操作,僅root權限才能操作
-x --maximum=DAYS
兩次密碼修改的最大天數,後面接數字,僅能root權限操作
-n --mininum=DAYS
兩次密碼修改的最小天數,後面接數字,僅能root權限操作
-w --warning=DAYS
在距多少天提醒用戶修改密碼,僅能root權限操作
-i --inactive=DAYS
在密碼過期後多少天,用戶被禁掉,僅能root權限操作
-S --status
查詢用戶的密碼狀態,僅能root權限操作
oldboy用戶7天內不能更改密碼,60天以後必須修改密碼,過期前10天提示,過期後30天後禁止用戶登錄。
/etc/shadow中查看
批量創建10個用戶stu01-stu10,並且設置隨機8位密碼,要求不能用shell循環(for、while等),只能用命令及管道實現。
useradd stu{1..10};
使用SHA算法來加密日期,並輸出結果的前8個字符:
date +%s | sha256sum | base64 | head -c 8 ; echo
echo "123456"|passwd test --stdin
用法:chage [選項] 用戶名
chage參數選項
注釋說明
-d --lastday
最近日期,將最近一次密碼設置時間設為"最近日期"
-E --expiredate
將賬戶過期時間設為"過期日期",日期寫法:MM/DD/YY
-h --help
顯示此幫助信息並退出
-l --list
顯示賬戶年齡信息
-m --mindays
最小天數,將兩次改變密碼之間相距的最小天數設為"最小天數"
-M --maxdays
最大天數,將兩次改變密碼之間相距的最大天數設為"最大天數"
-W --warndays
警告天數,將過期警告天數設為"警告天數"
-I --inactive
失效天數,在密碼過期後多少天,用戶被禁掉
修改賬戶過期時間:
查看賬戶的狀態:
oldboy用戶8天內不能更改密碼,61天以後必須修改密碼,過期前11通知用戶,過期後31天後禁止用戶登錄。
與passwd -n 8 -x 61 -w 11 -i 31 oldboy、chage -m8 -M61 -W10 -I30 oldboy功能相同只是參數不一樣。
語法格式:userdel 用戶名 或語法格式:userdel 用戶名 -r
在生產場景中,不要輕易使用-r參數,這會在刪除用戶的同時刪除用戶家目錄下的所有的文件和目錄。如果一定要刪除家目錄,那麼在刪除前先備份。直接在/etc/passwd中注釋要刪除的用戶記錄是生產場景中常用的方法。
groupdel是用來刪除用戶組的,要求用戶組名必須是已存在的。用groupdel刪除用戶組實際修改/etc/group(用戶組文件)和/etc/gshadow(用戶組加密文件)。
語法格式:groupdel 用戶組
查看用戶組:
grep 用戶組 /etc/group
grep 用戶組 /etc/gshadow
usermod參數選項
注釋說明
-e expire_date
加上用戶賬號停止日期。日期格式為MM/DD/YY。
-g initial_group
更新用戶新的起始登入用戶組。用戶組名必須已存在。
-U
取消凍結用戶的密碼,使恢復登錄,實際同樣是修改/etc/shadow的
-G group,[…]
定義用戶為一堆groups的成員。每個用戶組只用","逗號隔開。
-l login_name
變更用戶login時的名稱為login_name。其余信息不變。usermod -l newname oldname
-s shell
指定新登入shell。
-u uid
指定用戶UID只。這個值必須是唯一的,除非接-o參數,如usermod -u 505 -o oldboy(不能為負數)
-L
凍結用戶的密碼,使無法登陸。
-c
修改用戶賬號的備注信息
-d
修改用戶家目錄
-f
修改在密碼過期後多少天關閉該賬號
將oldboy用戶的注釋信息修改為OldBoy,UID修改為1806,歸屬修改為用戶組root、sa成員,其shell類型修改為/bin/tcsh,設置家目錄為/tmp/oldboy。
使用戶在2012-01-22後過期
http://xxxxxx/Linuxjc/1183619.html TechArticle