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

来源:https://www.cnblogs.com/flashfish/archive/2019/04/18/10731365.html
-Advertisement-
Play Games

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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一.概述 在前二篇中講到了客戶端授權的二種方式: GrantTypes.ClientCredentials憑據授權和GrantTypes.ResourceOwnerPassword密碼授權,都是OAuth2.0協議。本篇使用OpenID Connect添加用戶認證,客戶端授權是GrantTypes. ...
  • 現在我們的類庫項目大多是 NETStandard2.0 項目,但是 netstandard2.0 只是一個標準介面定義,具體的實現還是要看實際運行的框架,如 netfx47 或 netcoreapp2.1,可能在大部分情況下,對外表現是一致的,但是,某一些 API 可能會不一致,這裡就開一篇文章收集... ...
  • 在上一篇文章《C#/.NET基於Topshelf創建Windows服務程式及服務的安裝和卸載》中,我們瞭解發C#/.NET創建基於Topshelf Windows服務程式的大致流程,參數配置以及服務的安裝和卸載。同時,我們也使用一個簡單的定時任務演示了Topshelf服務的執行情況。 今天我將繼續... ...
  • 一、簡要說明 本篇文章主要剖析與講解 Abp vNext 在 Web API 項目下的啟動流程,讓大家瞭解整個 Abp vNext 框架是如何運作的。總的來說 ,Abp vNext 比起 ABP 框架更加精簡。因為在 vNext 版本當中,原來歸屬於 Abp 庫的許多內置的基本組件 (組織單元、攔截 ...
  • 以前做MES項目遇到過這個情況,一個項目有7到8個大模塊,生產、質量、物耗、電子看板、設備等,每個模塊都有大量業務,這樣使用mvc結構如果所有模塊放在一個目錄中,那麼勢必會產生很多問題,各模塊代碼不好管理,每個模塊不能單獨發佈,這時候如果能夠將每個模塊單獨成一個項目,那麼感覺會方便很多。 可能很多人 ...
  • 飛凌 FET6818核心板 解壓編譯器: tar zxvf arm-cortex_a9_eabi-4.7-eglibc-2.18.tar.gz -C/opt 設置預設編譯環境: vi /etc/profile 在打開的profile文件中加入編譯器路徑: export PATH=/opt/arm-c ...
  • -(void) animationAlert:(UIView *)view { CAKeyframeAnimation *popAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; popAnimation.dura... ...
  • 1、安裝yum yum update 2、安裝nginx源: yum localinstall http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm yum repolis ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...