Linux用戶管理及用戶信息查詢


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM