useradd 創建用戶,更改用戶信息 1.工作原理流程 使用此命令式,若不加任何參數選項,直接跟用戶名,那麼系統會首先讀取/etc/login.defs(用戶定義文件)和/etc/default/useradd(用戶預設配置文件)文件中所定義的參數和規則,然後進行添加用戶的操作,同時還會讀取/et ...
useradd
創建用戶,更改用戶信息
1.工作原理流程
使用此命令式,若不加任何參數選項,直接跟用戶名,那麼系統會首先讀取/etc/login.defs(用戶定義文件)和/etc/default/useradd(用戶預設配置文件)文件中所定義的參數和規則,然後進行添加用戶的操作,同時還會讀取/etc/passwd(用戶文件)和/etc/group(組文件),添加新用戶和用戶組信息,再向/etc/shadow(用戶密碼文件)和/etc/gshadow(組密碼文件)添加對應的密碼信息。同時根據/etc/default/useradd定義的信息簡歷家目錄,並將/etc/skel中的所有文件複製到新用戶的家目錄中。
2.useradd加-D參數:改變/etc/default/useradd定義的信息,也可以手動修改
例如,用戶賬號的停止日期,過期日期,使用的shell名稱等,具體可參考配置文件
3.useradd不加-D參數:
-c comment # 用戶的說明欄
-d # 新用戶家目錄
-e # 用戶終止日期
-f # 用戶過期幾日後永久停權,0時,用戶立即被停權,-1時,關閉此功能
-g # 指定用戶的用戶組
-G # 定義用戶多個不同組的成員
-m # 用戶目錄若是不存在,自動簡歷
-M # 布簡歷用戶家目錄,一般創建虛擬用戶使用
-s # 指定用戶的shell程式
-u # 用戶的uid值設定
[root@centos7 ~]# useradd ett [root@centos7 ~]# ls -ld /home/ett/ drwx------ 2 ett ett 62 Apr 18 15:52 /home/ett/ [root@centos7 ~]# grep -w ett /etc/passwd ett:x:1000:1000::/home/ett:/bin/bash [root@centos7 ~]# grep -w ett /etc/shadow ett:!!:18004:0:99999:7::: [root@centos7 ~]# grep -w ett /etc/group ett:x:1000: [root@centos7 ~]# grep -w ett /etc/gshadow ett:!:: [root@centos7 ~]# useradd -u 901 -g sa xiaolizi useradd: group 'sa' does not exist [root@centos7 ~]# groupadd sa [root@centos7 ~]# useradd -u 901 -g sa xiaolizi [root@centos7 ~]# id xiaolizi uid=901(xiaolizi) gid=1001(sa) groups=1001(sa) [root@centos7 ~]# useradd -M -s /sbin/nologin xiaolizi2 [root@centos7 ~]# grep -w xiaolizi2 /etc/passwd xiaolizi2:x:1001:1002::/home/xiaolizi2:/sbin/nologin
usermod
用於修改系統已經存在的用戶的賬號信息
用法參數與useradd類似
userdel
刪除用戶 # 工作中及你浪不要隨意刪除用戶,請在/etc/passed裡面採用註釋的方式
-f # 強制刪除用戶,即使用戶當前已登錄
-r # 刪除用戶的同事,刪除與用戶相關的所有文件
[root@centos7 ~]# tail -3 /etc/passwd ett:x:1000:1000::/home/ett:/bin/bash xiaolizi:x:901:1001::/home/xiaolizi:/bin/bash xiaolizi2:x:1001:1002::/home/xiaolizi2:/sbin/nologin [root@centos7 ~]# userdel -r xiaolizi [root@centos7 ~]# userdel -r xiaolizi2 userdel: xiaolizi2 home directory (/home/xiaolizi2) not found [root@centos7 ~]# tail -3 /etc/passwd postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin ett:x:1000:1000::/home/ett:/bin/bash [root@centos7 ~]# id ett uid=1000(ett) gid=1000(ett) groups=1000(ett) [root@centos7 ~]# vim /etc/passwd # 將用戶註釋掉 [root@centos7 ~]# tail -3 /etc/passwd postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin #ett:x:1000:1000::/home/ett:/bin/bash [root@centos7 ~]# id ett id: ett: no such user
[root@centos7 tmp]# cat /tmp/xiaolizi.log |awk '{print $1}'|sed -r 's#(.*)#"userdel -r \1";echo -e "`userdel -r \1`">/tmp/userdel.log#g'|bash
groupadd
用於創建新的用戶組,用途一般不多,主要是因為useradd創建用戶時會預設創建用戶組
-g gid # 指定用戶組的gid,從500開始
-f # 新增一個賬戶,強制覆蓋一個已經存在的組賬號
groupdel
刪除用戶組
後面直接跟用戶組的名稱即可
passwd
修改用戶密碼及密碼過期時間等內容
-k # 為密碼已經過期的用戶更新有效期
-l # 鎖定用戶,被多訂的用戶不能登錄,,只有root許可權才能設置
--stdin # 從標準輸入讀取密碼字元串,免交互
-u # 解除對用戶的鎖定,只有root許可權才能設置
-d # 刪除用戶密碼,使密碼為空,僅root用戶有權使用該選項
-e # 使用戶密碼立即過期,在用戶下次登錄時強制要求用戶修改密碼
-n # 設置修改密碼最短天數
-x # 設置修改密碼最長天數
-w # 設置用戶在密碼過期前收到警告信息天數
-i # 設置密碼過期後多少天後禁用賬戶
-S # 顯示用戶密碼相關的簡單描述
[root@centos7 ~]# passwd # 在當前用戶下修改密碼 Changing password for user root. New password: BAD PASSWORD: The password is shorter than 8 characters # 設置密碼過於簡單會警告,不影響 Retype new password: passwd: all authentication tokens updated successfully. # 成功設置密碼 [root@centos7 ~]# useradd xiaolizi01 # 創建個新用戶 [root@centos7 ~]# passwd xiaolizi01 Changing password for user xiaolizi01. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. [root@centos7 ~]# passwd -S xiaolizi01 # 顯示賬號密碼信息 xiaolizi01 PS 2019-04-18 0 99999 7 -1 (Password set, SHA512 crypt.) [root@centos7 ~]# echo "123456"|passwd --stdin xiaolizi01 # 免互動式設置密碼 Changing password for user xiaolizi01. passwd: all authentication tokens updated successfully. [root@centos7 ~]# passwd -n 7 -x 60 -w 10 -i 30 xiaolizi01 # 設置用戶7天內不能更改密碼,60天以後必須修改密碼,過期前10天通知用戶,過期後30天禁止用戶登錄 Adjusting aging data for user xiaolizi01. passwd: Success [root@centos7 ~]# chage -l xiaolizi01 # 查看用戶設置的列表 Last password change : Apr 18, 2019 Password expires : Jun 17, 2019 Password inactive : Jul 17, 2019 Account expires : never Minimum number of days between password change : 7 -n Maximum number of days between password change : 60 -x Number of days of warning before password expires : 10 -w
# 批量創建用戶,隨機設置8位密碼--------,拼湊命令,交給bash執行 [root@centos7 tmp]# echo stu{01..10}|tr " " "\n"|sed -r 's#(.*)#useradd \1;pass=$((RANDOM+10000000));echo "$pass"|passwd --stdin \1;echo -e "\1 `echo "$pass"`">>/tmp/xiaolizi.log#g' |bash Changing password for user stu01. passwd: all authentication tokens updated successfully. Changing password for user stu02. passwd: all authentication tokens updated successfully. Changing password for user stu03. passwd: all authentication tokens updated successfully. Changing password for user stu04. passwd: all authentication tokens updated successfully. Changing password for user stu05. passwd: all authentication tokens updated successfully. Changing password for user stu06. passwd: all authentication tokens updated successfully. Changing password for user stu07. passwd: all authentication tokens updated successfully. Changing password for user stu08. passwd: all authentication tokens updated successfully. Changing password for user stu09. passwd: all authentication tokens updated successfully. Changing password for user stu10. passwd: all authentication tokens updated successfully. [root@centos7 tmp]# cat /tmp/xiaolizi.log stu01 10016083 stu02 10012250 stu03 10018657 stu04 10015755 stu05 10010848 stu06 10016321 stu07 10011326 stu08 10022713 stu09 10028841 stu10 10001627
chage
查看或修改用戶密碼有效期,有些參數用法與passwd相同
-l # 顯示賬號有效期的信息
-M -W -X相當於passwd裡面對應的小寫字母作用
chpasswd
用於從標準輸入中讀取一定格式的用戶名,密碼來批量更新用戶密碼,其格式為“用戶名:密碼”
[root@centos7 tmp]# echo stu{01..10}:$((RANDOM+10000000))|tr " " "\n" >/tmp/chpasswd.xt [root@centos7 tmp]# cat /tmp/chpasswd.xt stu01:10027593 stu02:10031643 stu03:10014680 stu04:10030420 stu05:10002831 stu06:10010814 stu07:10026730 stu08:10015381 stu09:10006139 stu10:10008308 [root@centos7 tmp]# chpasswd </tmp/chpasswd.xt [root@centos7 tmp]# su - stu01 [stu01@centos7 ~]$ su - stu02 Password: [stu02@centos7 ~]$ whoami stu02
su
從當前用戶切換到指定用戶或者以指定用戶的身份執行命令或程式
-c # 向shell傳遞單個命令
- # 切換用戶是,將用戶的家目錄,系統環境等重新按切換後的用戶初始化
[stu02@centos7 ~]$ whoami stu02 [stu02@centos7 ~]$ su - root Password: Last login: Thu Apr 18 16:40:08 CST 2019 from 10.0.0.1 on pts/2 [root@centos7 ~]# whoami root # 使系統在每一次開機時都能自動以普通用戶啟動指定的服務腳本 [root@centos7 ~]# echo "su - oldboy -c '/bin/sh /service/scripts/deploy.sh'">> /etc/rc.local
visudo
此命令專門用來編輯/etc/sudoers這個文件的,同時提供語法檢查,是sudo命令的配置文件
-c # 手動執行語法檢查
一般用於授權用戶許可權的
## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL
sudo
可以讓普通用戶在執行指定的命令或層序上,擁有超級用戶的許可權,進行分類,並有針對性的命令授予指定的普通用戶
-l # 列出當前用戶可執行的命令
-u # 以指定用戶的身份執行命令
id
顯示指定用戶真實有效的UID和GID等信息
[root@centos7 tmp]# id root uid=0(root) gid=0(root) groups=0(root) [root@centos7 tmp]# id xiaolizi01 uid=1001(xiaolizi01) gid=1002(xiaolizi01) groups=1002(xiaolizi01)
w
顯示已經登錄系統的用戶,並顯示用戶正在執行命令
-h # 不顯示前兩行標題信息
-u # 忽略執行程式的名稱,以及CPU時間的信息
-s # 使用短輸出格式
[root@centos7 tmp]# w 18:03:13 up 4:02, 3 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 13:45 4:17m 0.02s 0.02s -bash root pts/1 10.0.0.1 15:45 1:43m 0.29s 0.02s -bash root pts/2 10.0.0.1 16:40 1.00s 0.12s 0.00s w [root@centos7 tmp]# w -h root tty1 13:45 4:19m 0.02s 0.02s -bash root pts/1 10.0.0.1 15:45 1:44m 0.29s 0.02s -bash root pts/2 10.0.0.1 16:40 3.00s 0.12s 0.00s w -h [root@centos7 tmp]#
who
顯示已登錄用戶的信息,w的精簡版
-a # 顯示所有信息
-b # 顯示系統的啟動時間
-d # 顯示已死的進程
-H # 顯示標題,預設不顯示
-l # 顯示登錄進程
[root@centos7 tmp]# who root tty1 2019-04-18 13:45 root pts/1 2019-04-18 15:45 (10.0.0.1) root pts/2 2019-04-18 16:40 (10.0.0.1) [root@centos7 tmp]# who -b system boot 2019-04-18 13:44 [root@centos7 tmp]# who -d pts/0 2019-04-18 17:57 1679 id=ts/0 term= 0 exit=0 [root@centos7 tmp]# who -l [root@centos7 tmp]# who -H NAME LINE TIME COMMENT root tty1 2019-04-18 13:45 root pts/1 2019-04-18 15:45 (10.0.0.1) root pts/2 2019-04-18 16:40 (10.0.0.1) [root@centos7 tmp]# who -H -a NAME LINE TIME IDLE PID COMMENT EXIT system boot 2019-04-18 13:44 root + tty1 2019-04-18 13:45 04:22 911 run-level 3 2019-04-18 13:45 pts/0 2019-04-18 17:57 1679 id=ts/0 term=0 exit=0 root + pts/1 2019-04-18 15:45 01:47 16283 (10.0.0.1) root + pts/2 2019-04-18 16:40 . 16574 (10.0.0.1) [root@centos7 tmp]#
whoami
顯示當前登錄的用戶名
last
從日誌文件/var/log/wtmp讀取信息並顯示用戶最近的登錄列表
-n num # 指定顯示結果的行數
[root@centos7 ~]# ll /var/log/wtmp -rw-rw-r--. 1 root utmp 29568 Apr 18 17:57 /var/log/wtmp [root@centos7 ~]# less /var/log/wtmp "/var/log/wtmp" may be a binary file. See it anyway? [root@centos7 ~]# last root pts/2 10.0.0.1 Thu Apr 18 16:40 still logged in root pts/1 10.0.0.1 Thu Apr 18 15:45 still logged in
lastb
從/var/log/btmp中讀取信息,並顯示登錄失敗的記錄,用於發現系統異常登錄
[root@centos7 ~]# lastb root tty1 Sat Oct 27 00:26 - 00:26 (00:00) (unknown tty1 Fri Oct 26 23:35 - 23:35 (00:00) btmp begins Fri Oct 26 23:35:31 2018
lastlog
顯示所有用戶的最近登錄記錄,異常記錄,從/var/log/lastlog中讀取信息
[root@centos7 ~]# lastlog Username Port From Latest root pts/2 Thu Apr 18 17:16:05 +0800 2019 bin **Never logged in** daemon **Never logged in** adm **Never logged in** lp **Never logged in** sync **Never logged in** shutdown **Never logged in** halt **Never logged in** mail **Never logged in** operator **Never logged in** games **Never logged in** ftp **Never logged in** nobody **Never logged in** systemd-network **Never logged in** dbus **Never logged in** polkitd **Never logged in** tss **Never logged in** abrt **Never logged in** sshd **Never logged in** postfix **Never logged in** chrony **Never logged in** xiaolizi01 pts/1 Thu Apr 18 16:17:20 +0800 2019