作業(yè)-第05周--課堂-Day18-linux用戶管理知識(shí)與應(yīng)用實(shí)踐

Day18 課堂筆記

1. 調(diào)試cron定時(shí)任務(wù)的技巧總結(jié)

1)、查看錯(cuò)誤日志

/var/log/cron

學(xué)會(huì)最小化排除:先清空

>/var/log/cron

然后在測(cè)試和觀察。

2)、增加執(zhí)行任務(wù)頻率調(diào)試任務(wù)

把頻率調(diào)快。比如:每天執(zhí)行的任務(wù),可以修改為每分鐘等執(zhí)行。

3)、把定時(shí)任務(wù)執(zhí)行時(shí)間比當(dāng)前時(shí)間拖后幾分鐘

比如需要凌晨三點(diǎn)執(zhí)行定時(shí)任務(wù),而當(dāng)前系統(tǒng)時(shí)間為15:00,咱們就把定時(shí)任務(wù)時(shí)間調(diào)整15:05執(zhí)行 ,有個(gè)5分鐘的提前量。

4)、調(diào)整系統(tǒng)時(shí)間(測(cè)試環(huán)境還湊合,不要用于生產(chǎn)環(huán)境)
比如需要凌晨三點(diǎn)執(zhí)行定時(shí)任務(wù),就把系統(tǒng)時(shí)間調(diào)整到2:55。

5)、通過(guò)腳本日志輸出調(diào)試定時(shí)任務(wù)

定時(shí)任務(wù)輸出

* * * * *  /bin/sh /server/scripts/bak.sh &>/tmp/bak.log

腳本輸出:

tar zcvf oldboy.tar.gz  ./data &>/tmp/tar.log

注意:
有時(shí)候程序只能執(zhí)行一次。一定要在測(cè)試環(huán)境測(cè)試好,然后直接復(fù)制到正式。

一般企業(yè)代碼發(fā)布流程:
辦公室測(cè)試環(huán)境===>IDC機(jī)房測(cè)試環(huán)境===>IDC機(jī)房正式環(huán)境

這樣可以防止在正式環(huán)境發(fā)生錯(cuò)誤,從而影響用戶體驗(yàn),業(yè)務(wù)穩(wěn)定。

2. crontab生產(chǎn)故障案例分析及解決

2.1 No space left on device常見(jiàn)企業(yè)故障案例

磁盤(pán)滿的報(bào)錯(cuò),原因往往是inode被占滿了。查看用df -i
因?yàn)槎〞r(shí)任務(wù)沒(méi)有加&>/dev/null,定時(shí)任務(wù)執(zhí)行的時(shí)候把輸出給系統(tǒng)root發(fā)郵件。
郵件服務(wù)器postfix服務(wù)默認(rèn)不開(kāi),這些給系統(tǒng)發(fā)的郵件就會(huì)堆在臨時(shí)目錄(大量小文件存在)

CentOS6 /var/spool/clientmqueue/     
CentOS7 /var/spool/postfix/maildrop/ 

預(yù)防方法:
1)、盡量將cron任務(wù)里面的命令或腳本中的結(jié)尾加上&>/dev/null,或在寫(xiě)定時(shí)任務(wù)執(zhí)行腳本時(shí),把輸出定向到文件中(適合所有的情況)

2)、開(kāi)啟郵件服務(wù),不過(guò)最好不做,因?yàn)猷]件服務(wù)會(huì)帶來(lái)額外的安全問(wèn)題

3)、加定時(shí)清理任務(wù),比如,將find /var/spool/postfix/maildrop/ -type f -mtime +30|xargs rm -f放入定時(shí)任務(wù),每周處理一次。

2.2 crond export變量生產(chǎn)故障案例

程序通過(guò)手動(dòng)可以執(zhí)行,放定時(shí)任務(wù)里不執(zhí)行

定時(shí)任務(wù)在執(zhí)行腳本的時(shí)候,多數(shù)情況沒(méi)辦法加載環(huán)境變量,特別是/etc/profile。
登錄后怎么操作都對(duì),但是就是放到定時(shí)任務(wù)不行。那是因?yàn)橐韵略颍?br> 命令行中:bash登錄方式
1.手工登錄后,加載所有環(huán)境變量(~/.bash_profile,~/.bash_rc,/etc/profile,/etc/bashrc

2.定時(shí)任務(wù)執(zhí)行腳本屬于非登錄狀態(tài),可能加載環(huán)境變量(/etc/bashrc)。

所有運(yùn)維都會(huì)把變量放到此文件/etc/profile,把這個(gè)文件里的變量定義

解決方法:
在執(zhí)行的腳本中 重新定義。

具體為crond執(zhí)行Shell時(shí)只能識(shí)別為數(shù)不多的系統(tǒng)環(huán)境變量,普通環(huán)境變量一般是無(wú)法識(shí)別的,如果在編寫(xiě)的腳本中需要使用變量,最好使用export重新聲明下該變量,以確保腳本正確執(zhí)行。以后要將其作為一個(gè)開(kāi)發(fā)基本規(guī)范寫(xiě)上。

定時(shí)任務(wù)的編寫(xiě)及調(diào)試邏輯圖-58期-王俊超

3 用戶管理知識(shí)與應(yīng)用實(shí)踐

3.1 信息文件相關(guān)

3.1.1 存儲(chǔ)用戶信息文件/etc/passwd

作用:存儲(chǔ)系統(tǒng)用戶的信息,/etc/passwd文件實(shí)際內(nèi)容如下(前五行):

[root@oldboyedu  ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

下面以root一行為例介紹各個(gè)字段的作用:

root :x :0 :0 :root :/root :/bin/bash
用戶名稱 :用戶密碼 :用戶UID :用戶GID :用戶說(shuō)明 :用戶家目錄 :shell解釋器

3.1.2 存儲(chǔ)用戶密碼信息文件/etc/shadow

/etc/shadow文件的權(quán)限:

[root@oldboyedu  ~]# ll /etc/shadow
---------- 1 root root 750 Mar 28 21:00 /etc/shadow

其文件內(nèi)容為(前5行):

[root@oldboyedu  ~]# head -5 /etc/shadow
root:$6$ti9fY3/V$dyKX77ydwxj1FgU1IdITVrn/F//SrQPWtKLX04.qQp2ce20BvGuvs.gC0YyMZepScy9ittLiOU12X7rhM5DRf0:17972:0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::

下面以bin為例對(duì)各個(gè)字段的詳細(xì)說(shuō)明:

字段名稱 注釋說(shuō)明
bin 用戶名稱
:* 用戶密碼(如果有密碼,是加密過(guò)的字符串)
:17834 最近更改密碼的時(shí)間
:0 禁止修改密碼的天數(shù)
:99999 用戶必須更改口令的天數(shù)
:7 警告更改密碼的期限
: 不活動(dòng)時(shí)間
: 失效時(shí)間
: 標(biāo)志,保留

提示:

  • 使用useradd命令添加用戶會(huì)更改/etc/passwd、/etc/shadow、/etc/group、//etc/gshadow文件。
  • 使用passwd為用戶設(shè)置密碼會(huì)更改/etc/shadow文件。

3.1.3 用戶組信息文件/etc/group

/etc/group文件時(shí)存儲(chǔ)用戶組相關(guān)信息的文件,實(shí)際內(nèi)容格式為下:

[root@oldboyedu  ~]# head -5 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:

下面以root一行為例介紹各個(gè)字段的作用:

字段名稱 注釋說(shuō)明
root 用戶組的名稱
:x 用戶組密碼,通常不設(shè)置密碼
:0 用戶組ID
: 用戶組成員

提示:

  • 使用groupadd添加用戶組會(huì)更改/etc/group、/etc/gshadow文件。

3.1.4 用戶組密碼文件/etc/gshadow

/etc/gshadow是存儲(chǔ)用戶組密碼信息的文件,在實(shí)際運(yùn)維工作中,一般不用這個(gè)功能,因此了解即可,在此略過(guò)。

md5sum 給文件設(shè)置指紋(計(jì)算和檢查MD5數(shù)字信息)

[root@oldboyedu ~]# md5sum /etc/passwd /etc/shadow /etc/group /etc/gshadow
2fe9f002726ed0a138d67cd44722f1a6  /etc/passwd
c2ca41415dca17f1a3dc3c286a9b9bff  /etc/shadow
c475144a13d87a400b5e16fe6bd70baf  /etc/group
659ef4f533df0fa7e457f87755fb1c27  /etc/gshadow

文件發(fā)生變化:

[root@oldboyedu ~]# useradd bingbing
[root@oldboyedu ~]# md5sum /etc/passwd /etc/shadow /etc/group /etc/gshadow
39d60eff90ecd0326fe59e6464b464ad  /etc/passwd
0aa8d3b157f042876ec0190a2808a377  /etc/shadow
cee8bc6e85f9dfb9dc0a04e452e834f4  /etc/group
cdfd26351f409ee32fca53a22ad15912  /etc/gshadow

3.2 常見(jiàn)命令匯總

3.2.1 有關(guān)用戶管理的常見(jiàn)命令匯總

1)和用戶直接相關(guān)的命令

  • useradd 添加用戶
  • usermod 修改用戶信息
  • userdel 刪除用戶及和用戶相關(guān)聯(lián)的配置或文件

2)和用戶密碼直接相關(guān)的命令
passwd 為用戶設(shè)置密碼
chage 修改用戶密碼屬性信息

3)其他用戶相關(guān)命令
id 查看用戶的UID、GID及所歸屬的用戶信息
su 切換用戶角色工具
sudo 以一個(gè)其它用戶身份(主要是root用戶)執(zhí)行命令的工具,普通用戶用來(lái)提權(quán)的工具
visudo 用來(lái)編輯suders配置文件(sudo授權(quán)文件)的工具

3.2.2 有關(guān)用戶組管理的常見(jiàn)命令匯總

命令 注釋說(shuō)明
groupadd 添加用戶組
groupdel 刪除用戶組
groupmod 修改用戶組信息
gpasswd 為用戶組設(shè)置密碼
groups 顯示用戶組所屬的用戶組
newgrp 更改用戶所屬的有效用戶組

3.3 添加用戶命令useradd

1. useradd命令的工作原理介紹

不帶參數(shù)添加用戶時(shí),首先會(huì)讀取/etc/login.defs/etc/default/useradd配置文件中的預(yù)定義規(guī)則,并根據(jù)設(shè)置的規(guī)則添加用戶,同時(shí)會(huì)向/etc/passwd/etc/group文件添加新建的用戶和用戶組記錄。當(dāng)然,/etc/shadow/etc/gshadow也會(huì)同步生成記錄,同時(shí)系統(tǒng)還會(huì)根據(jù)/etc/login.defs/etc/default/useradd配置文件中的信息建立用戶的家目錄,并復(fù)制/etc/skel中的所有隱藏的環(huán)境配置文件到新用戶的家目錄中,以完成對(duì)用戶環(huán)境的初始化設(shè)置。

1.1)和創(chuàng)建用戶組相關(guān)的文件/etc/login.defs

下面是CentOS 7.6版本的/etc/login.defs文件內(nèi)容及注釋說(shuō)明

[root@oldboyedu  ~]# cat /etc/login.defs|grep -v "^$"
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR  Maildir
MAIL_DIR    /var/spool/mail          <-->設(shè)定用戶對(duì)應(yīng)的mail文件所在路徑
#MAIL_FILE  .mail
# Password aging controls:
#
#   PASS_MAX_DAYS   Maximum number of days a password may be used.
#   PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#   PASS_MIN_LEN    Minimum acceptable password length.
#   PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999                <-->密碼最長(zhǎng)可以使用的天數(shù)
PASS_MIN_DAYS   0                    <-->更換密碼的最小天數(shù)
PASS_MIN_LEN    5                    <-->密碼的最小長(zhǎng)度
PASS_WARN_AGE   7                    <-->密碼失效前提前多少天開(kāi)始警告
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                  1000        <-->普通用戶默認(rèn)最小UID為1000
UID_MAX                 60000        <-->普通用戶默認(rèn)最大UID為60000
# System accounts
SYS_UID_MIN               201        <-->系統(tǒng)用戶默認(rèn)最小UID為201
SYS_UID_MAX               999        <-->系統(tǒng)用戶默認(rèn)最大UID為999
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                  1000        <-->普通用戶組默認(rèn)最小GID為1000
GID_MAX                 60000        <-->普通用戶組默認(rèn)最大GID為60000
# System accounts
SYS_GID_MIN               201        <-->系統(tǒng)用戶組默認(rèn)最小GID為201
SYS_GID_MAX               999        <-->系統(tǒng)用戶組默認(rèn)最大GID為999
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local 
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes                      <-->是否創(chuàng)建用戶家目錄
# The permission mask is initialized to this value. If not specified, 
# the permission mask will be initialized to 022.
UMASK           077                  <-->家目錄對(duì)應(yīng)的umask默認(rèn)值
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes                  <-->刪除用戶同時(shí)刪除用戶組(該組沒(méi)有其他成員)
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512                <-->密碼加密算法SHA512

1.2)和創(chuàng)建用戶相關(guān)的文件/etc/default/useradd

內(nèi)容如下:

[root@oldboyedu  ~]# 
[root@oldboyedu  ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100                <-->依賴于/etc/login.defs的USERGROUPS_ENAB參數(shù),如果為no,則此處控制
HOME=/home               <-->把用戶的家目錄建在/home目錄下
INACTIVE=-1              <-->是否啟用用戶過(guò)期停權(quán),-1表示不啟用
EXPIRE=                  <-->用戶終止日期,不設(shè)置表示不啟用
SHELL=/bin/bash          <-->新用戶默認(rèn)所用的shell解釋器類型
SKEL=/etc/skel           <-->配置新用戶家目錄的默認(rèn)環(huán)境變量存放路徑
CREATE_MAIL_SPOOL=yes    <-->創(chuàng)建mail文件

1.3)和創(chuàng)建用戶相關(guān)的目錄/etc/skel

內(nèi)容如下:

[root@oldboyedu  ~]# ls -lA /etc/skel/
total 12
-rw-r--r--. 1 root root  18 Oct 31 01:07 .bash_logout  <-->用戶環(huán)境變量,退出時(shí)加載
-rw-r--r--. 1 root root 193 Oct 31 01:07 .bash_profile <-->用戶環(huán)境變量,登錄時(shí)加載
-rw-r--r--. 1 root root 231 Oct 31 01:07 .bashrc       <-->用戶環(huán)境變量,登錄時(shí)加載

企業(yè)面試案例:

使用oldboy用戶登錄到Linux系統(tǒng)后,發(fā)現(xiàn)提示符為如下所示異常情況,請(qǐng)問(wèn)該如何恢復(fù)到正常的Linux命令行提示符情況?

-bash-4.2$
-bash-4.2$

解答:
首先模擬故障重現(xiàn),如下步驟:

[root@oldboyedu  ~]# su - oldboy          <--> 切換oldboy用戶下
Last login: Sat Mar 30 09:42:31 CST 2019 from 10.0.0.1 on pts/0
[oldboy@oldboyedu  ~]$ rm -f .bash*       <-->故障原因就是用戶家目錄下的環(huán)境變量不存在了
[oldboy@oldboyedu  ~]$ logout             <-->快捷鍵(Ctrl+d)退出當(dāng)前環(huán)境
[root@oldboyedu  ~]# su - oldboy          <-->重新切到oldboy用戶下
Last login: Sat Mar 30 12:19:06 CST 2019 on pts/0
-bash-4.2$                                <-->故障重現(xiàn)

下面是故障恢復(fù)方案及步驟:
方法1:永久生效(正確方法)

-bash-4.2$ cp /etc/skel/.bash* ~/            <-->從/etc/skel中將所有環(huán)境變量文件復(fù)制回來(lái),注意用戶
-bash-4.2$ logout                            <-->快捷鍵(Ctrl+d)退出當(dāng)前環(huán)境
[root@oldboyedu  ~]# su - oldboy             <-->重新切到oldboy用戶下
Last login: Sat Mar 30 12:19:55 CST 2019 on pts/0
[oldboy@oldboyedu  ~]$                       <-->故障排除
-bash-4.2$ source ./.bash_profile ./.bashrc  <-->若還未生效,則執(zhí)行此命令。
[oldboy@oldboyedu  ~]$                       <-->故障排除
-bash-4.2$ cp /etc/skel/.bash* .             <-->沒(méi)權(quán)限拷貝怎么辦
cp: cannot create regular file ‘./.bash_logout’: Permission denied
cp: cannot create regular file ‘./.bash_profile’: Permission denied
cp: cannot create regular file ‘./.bashrc’: Permission denied
-bash-4.2$ logout                            <-->重新切到oldboy用戶下
[root@oldboyedu  ~]# cd /home/oldboy
[root@oldboyedu  /home/oldboy# cp /etc/skel/.bash* .
[root@oldboyedu  /home/oldboy]# su - oldboy
Last login: Sat Mar 30 17:00:52 CST 2019 on pts/0
[oldboy@oldboyedu  ~]$ 

方法2:臨時(shí)生效(不推薦)
執(zhí)行以下命令:

export PS1='[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\] \w\[\e[0m\]]\$'

useradd命令的常用參數(shù)介紹

如表所示:

參數(shù)選項(xiàng) 注釋說(shuō)明
-c 設(shè)置新用戶在passwd文件中的說(shuō)明字段的信息
-d 新用戶每次登入時(shí)使用的家目錄
-e 用戶終止日期。日期指定格式為MM/DD/YY
-f 用戶過(guò)期幾日后永久停權(quán)
-g 指定新用戶所屬的用戶組(須系統(tǒng)存在)
-G 指定新用戶所屬的多個(gè)不同的用戶組,用“,”隔開(kāi)
-m 創(chuàng)建并指定用戶家目錄
-M 不建立用戶的家目錄
-s 指定解釋器
-u 指定用戶ID

范例1: 不加任何參數(shù),添加用戶alex

[root@oldboyedu  ~]# useradd alex
[root@oldboyedu  ~]# ls -ld /home/alex/
drwx------ 2 alex alex 62 Mar 30 14:56 /home/alex/
[root@oldboyedu  ~]# ls -la /home/alex/
total 12
drwx------  2 alex alex  62 Mar 30 14:56 .
drwxr-xr-x. 4 root root  32 Mar 30 14:56 ..
-rw-r--r--  1 alex alex  18 Oct 31 01:07 .bash_logout
-rw-r--r--  1 alex alex 193 Oct 31 01:07 .bash_profile
-rw-r--r--  1 alex alex 231 Oct 31 01:07 .bashrc
[root@oldboyedu  ~]# grep -w 'alex' /etc/passwd
alex:x:1001:1001::/home/alex:/bin/bash
[root@oldboyedu  ~]# tail -1 /etc/group
alex:x:1001:
[root@oldboyedu  ~]# tail -1 /etc/shadow
alex:!!:17985:0:99999:7:::
[root@oldboyedu  ~]# tail -1 /etc/gshadow
alex:!::

范例2: useradd的-g、-u參數(shù)的使用示例

[root@oldboyedu  ~]# useradd zuma -u 1111 -g root
[root@oldboyedu  ~]# id zuma
uid=1111(zuma) gid=0(root) groups=0(root)

范例3: useradd的-M、-s參數(shù)的使用示例

[root@oldboyedu  ~]# useradd mysql -s /sbin/nologin -M
[root@oldboyedu  ~]# tail -1 /etc/passwd
mysql:x:1112:1112::/home/mysql:/sbin/nologin

范例4: useradd的-e參數(shù)的使用示例

[root@oldboyedu  ~]# date +%F
2019-03-30
[root@oldboyedu  ~]# useradd pig -e "2019/04/30"
[root@oldboyedu  ~]# chage -l pig
Last password change                : Mar 30, 2019
Password expires                    : never
Password inactive                   : never
Account expires                     : Apr 30, 2019                <-->修改成功
Minimum number of days between password change      : 0
Maximum number of days between password change      : 99999
Number of days of warning before password expires   : 7

范例5: useradd的-c、-u、-G、-s、-d、-m參數(shù)的使用示例

[root@oldboyedu  ~]# useradd -c "good training" -u 2222 -G root,oldboy,sa -s /bin/sh -d /home/luffy oldboyedu
[root@oldboyedu  ~]# grep 'oldboyedu' /etc/passwd
oldboyedu:x:2222:2222:good training:/home/luffy:/bin/sh
[root@oldboyedu  ~]# id oldboyedu
uid=2222(oldboyedu) gid=2222(oldboyedu) groups=2222(oldboyedu),0(root),1000(oldboy),1114(sa)
[root@oldboyedu  ~]# ls -ld /home/luffy/
drwx------ 2 oldboyedu oldboyedu 62 Mar 30 15:09 /home/luffy/

useradd命令的-D參數(shù)介紹

useradd -D的作用是改變配置文件/etc/default/useradd文件的默認(rèn)設(shè)置值,也可直接編輯。

范例1:設(shè)置添加用戶時(shí)的默認(rèn)解釋器類型為/sbin/nologin

[root@oldboyedu  ~]# cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
[root@oldboyedu  ~]# grep -w "SHELL" /etc/default/useradd 
SHELL=/bin/bash
[root@oldboyedu  ~]# useradd -D -s /sbin/nologin
[root@oldboyedu  ~]# grep -w "SHELL" /etc/default/useradd 
SHELL=/sbin/nologin
[root@oldboyedu  ~]# useradd newuser
[root@oldboyedu  ~]# grep 'newuser' /etc/passwd
newuser:x:2223:2223::/home/newuser:/sbin/nologin
[root@oldboyedu  ~]# useradd -D -s /bin/bash
[root@oldboyedu  ~]# grep -w "SHELL" /etc/default/useradd 
SHELL=/bin/bash

2.usermod:用戶信息修改相關(guān)命令

usermod命令的功能很強(qiáng)大,但在生產(chǎn)場(chǎng)景中使用的頻率并不是很高,參數(shù)和useradd參數(shù)大多數(shù)相同。

范例1: usermod的-c、-u、-G、-s、-d、參數(shù)的使用示例

[root@oldboyedu  ~]# grep 'oldboyedu' /etc/passwd
oldboyedu:x:2222:2222:good training:/home/luffy:/bin/sh
[root@oldboyedu  ~]# id oldboyedu
uid=2222(oldboyedu) gid=2222(oldboyedu) groups=2222(oldboyedu),0(root),1000(oldboy),1114(sa)
[root@oldboyedu  ~]# ls -ld /home/luffy/
drwx------ 2 oldboyedu oldboyedu 62 Mar 30 15:09 /home/luffy/

[root@oldboyedu  ~]# usermod -c "good" -u 3333 -G sa -s /sbin/nologin -d /home/oldboyedu oldboyedu 
[root@oldboyedu  ~]# grep 'oldboyedu' /etc/passwd
oldboyedu:x:3333:2222:good:/home/oldboyedu:/sbin/nologin
[root@oldboyedu  ~]# id oldboyedu
uid=3333(oldboyedu) gid=2222(oldboyedu) groups=2222(oldboyedu),1114(sa)
[root@oldboyedu  ~]# ls -l /home/
total 0
drwx------  2 alex    alex      62 Mar 30 14:56 alex
drwx------  2    2222 oldboyedu 62 Mar 30 15:09 luffy
drwx------  2 newuser newuser   62 Mar 30 15:23 newuser
drwx------. 3 oldboy  oldboy    95 Mar 26 11:25 oldboy
drwx------  2 pig     pig       62 Mar 30 15:04 pig
drwx------  2 zuma    root      62 Mar 30 15:00 zuma
[root@oldboyedu  ~]# 

從上面可以發(fā)現(xiàn)-d參數(shù)并未創(chuàng)建新的家目錄,下圖為演示效果:


演示效果

可以理解為:-m -d 參數(shù)將原家目錄改個(gè)名字而已

[root@oldboyedu  ~]# ll /home/
total 0
drwxr-xr-x  2 root   root   80 Mar 30 17:02 abc
drwx------. 3 oldboy oldboy 95 Mar 26 11:25 oldboy
[root@oldboyedu  ~]# ll /home/abc/
total 0
-rw-r--r-- 1 root root 0 Mar 30 16:14 oldboy.txt
[root@oldboyedu  ~]# usermod -md /home/123 oldboyedu 
[root@oldboyedu  ~]# ll /home/
total 0
drwxr-xr-x  2 root   root   80 Mar 30 17:02 123
drwx------. 3 oldboy oldboy 95 Mar 26 11:25 oldboy
[root@oldboyedu  ~]# ll /home/123/
total 0
-rw-r--r-- 1 root root 0 Mar 30 16:14 oldboy.txt
[root@oldboyedu  ~]# usermod -md /home/456 oldboyedu 
[root@oldboyedu  ~]# ll /home
total 0
drwxr-xr-x  2 root   root   80 Mar 30 17:02 456
drwx------. 3 oldboy oldboy 95 Mar 26 11:25 oldboy
[root@oldboyedu  ~]# ll /home/456/
total 0
-rw-r--r-- 1 root root 0 Mar 30 16:14 oldboy.txt

3.userdel:刪除用戶相關(guān)命令

參數(shù):

  • -f 強(qiáng)制刪除用戶,即使用戶當(dāng)前已登錄
  • -r刪除用戶的同時(shí),刪除與用戶相關(guān)的所有文件

提示:在生產(chǎn)環(huán)境中,最好不要直接刪除用戶,而是修改/etc/passwd配置文件,將要?jiǎng)h除的用戶用#號(hào)注釋掉即可,從而防止出現(xiàn)無(wú)法彌補(bǔ)的錯(cuò)誤。

4.groupadd:添加用戶組命令

參數(shù):

  • -g gid 指定用戶組的gid
  • -f 新增一個(gè)賬戶,強(qiáng)制覆蓋一個(gè)已存在的用戶組

5.groupdel:刪除用戶組命令

6.passwd:修改用戶密碼命令

參數(shù):

  • -stdin 從標(biāo)準(zhǔn)輸入讀取密碼字符串

使用范例:
范例1:修改用戶密碼示例:
(1)修改自身用戶:

root用戶修改自身,不需要提供原始密碼
[root@oldboyedu  ~]# 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用戶修改自身,需要提供原始密碼
[oldgirl@oldboyedu  ~]$ whoami 
oldgirl
[oldgirl@oldboyedu  ~]$ passwd 
Changing password for user oldgirl.
Changing password for oldgirl.
(current) UNIX password:                                     <-->提供原始密碼
New password: 
BAD PASSWORD: The password is too similar to the old one     <-->密碼太簡(jiǎn)單
New password: 
BAD PASSWORD: The password is shorter than 8 characters      <-->密碼短
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

(2)修改普通用戶:

[root@oldboyedu  ~]# useradd oldgirl
[root@oldboyedu  ~]# passwd oldgirl 
Changing password for user oldgirl.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

范例2:顯示賬號(hào)密碼信息示例:

[oldgirl@oldboyedu  ~]$ passwd -S oldgirl 
Only root can do that.            <-->只有root用戶才能執(zhí)行
[oldgirl@oldboyedu  ~]$ logout
[root@oldboyedu  ~]# passwd -S oldgirl 
oldgirl PS 2019-03-30 0 99999 7 -1 (Password set, SHA512 crypt.)

范例3:一條命令非人工交互式設(shè)置密碼(生產(chǎn)使用技巧)

[root@oldboyedu  ~]# echo "12345678" |passwd --stdin oldgirl 
Changing password for user oldgirl.
passwd: all authentication tokens updated successfully.

范例4:多個(gè)參數(shù)的示例

[root@oldboyedu  ~]# chage -l oldgirl 
Last password change                    : Mar 30, 2019
Password expires                    : never
Password inactive                   : never
Account expires                     : never
Minimum number of days between password change      : 0
Maximum number of days between password change      : 99999
Number of days of warning before password expires   : 7
[root@oldboyedu  ~]# passwd -n 7 -x 60 -w 10 -i 30 oldgirl
Adjusting aging data for user oldgirl.
passwd: Success
[root@oldboyedu  ~]# chage -l oldgirl 
Last password change                    : Mar 30, 2019
Password expires                    : May 29, 2019
Password inactive                   : Jun 28, 2019
Account expires                     : never
Minimum number of days between password change      : 7
Maximum number of days between password change      : 60
Number of days of warning before password expires   : 10

企業(yè)場(chǎng)景下用戶及密碼管理思路

  • 用戶密碼要足夠復(fù)雜,多種字符組合
  • 統(tǒng)一管理(采用微軟活動(dòng)目錄或openLDAP開(kāi)源工具)
  • 動(dòng)態(tài)密碼:動(dòng)態(tài)口令等

7.chpasswd:批量更新用戶的密碼命令

范例1:批量修改密碼的實(shí)踐

系統(tǒng)存在的用戶:oldboy1和oldboy2(沒(méi)有需創(chuàng)建)

[root@oldboyedu  ~]# useradd oldboy1
[root@oldboyedu  ~]# useradd oldboy2
[root@oldboyedu  ~]# id oldboy1
uid=3335(oldboy1) gid=3335(oldboy1) groups=3335(oldboy1)
[root@oldboyedu  ~]# id oldboy2
uid=3336(oldboy2) gid=3336(oldboy2) groups=3336(oldboy2)

方法1:命令行直接輸入并執(zhí)行

[root@oldboyedu  ~]# chpasswd 
oldboy1:123456                    <-->一行一行輸入
oldboy2:123456                    <-->一行一行輸入
                                  <-->空行處,按Ctrl+d結(jié)束輸入
[root@oldboyedu  ~]# 

方法2:把用戶和密碼寫(xiě)入文件里執(zhí)行

[root@oldboyedu  ~]# cat >user.txt <<EOF
> oldboy1:12345678
> oldboy2:12345678   <-->格式:用戶名:密碼,一行一個(gè)用戶
> EOF
[root@oldboyedu  ~]# cat user.txt 
oldboy1:12345678
oldboy2:12345678
[root@oldboyedu  ~]# chpasswd <user.txt 

范例2:批量創(chuàng)建用戶、批量修改密碼、批量刪除用戶(不需腳本實(shí)現(xiàn))。

批量創(chuàng)建用戶:

[root@oldboyedu  ~]# ls /home/
oldboy
[root@oldboyedu  ~]# seq -w 20|sed -nr 's#(.*)#useradd oldboy\1#gp'|bash
[root@oldboyedu  ~]# ls /home/|xargs -n7
oldboy oldboy01 oldboy02 oldboy03 oldboy04 oldboy05 oldboy06
oldboy07 oldboy08 oldboy09 oldboy10 oldboy11 oldboy12 oldboy13
oldboy14 oldboy15 oldboy16 oldboy17 oldboy18 oldboy19 oldboy20
[root@oldboyedu  ~]# tail -2 /etc/passwd
oldboy19:x:3355:3355::/home/oldboy19:/bin/bash
oldboy20:x:3356:3356::/home/oldboy20:/bin/bash

批量修改密碼:

[root@oldboyedu  ~]# tail -2 /etc/shadow
oldboy19:!!:17985:0:99999:7:::
oldboy20:!!:17985:0:99999:7:::
[root@oldboyedu  ~]# seq -w 20|sed -nr 's#(.*)#oldboy\1:123456#gp'|chpasswd
[root@oldboyedu  ~]# tail -2 /etc/shadow
oldboy19:$6$jFht4/j7xhsJBX5$HVD1fg2y5rxwlNmZIAvZehgp.klwt5WEE7Mh6x67ASgpsK3o12sOfdplfqbmlA6Rpzq7JOGHysdqI7rvryb1L/:17985:0:99999:7:::
oldboy20:$6$WYEUw/WyJ$vrGmOtFniEnHSgcWVGZZfcmci/KJ9.MWzO3OkjI74aRiU/UUzbZ0W2h/n1LanHxFGURRfC.538n2DJ04zQR0D.:17985:0:99999:7:::

or

[root@oldboyedu  ~]# seq -w 20|sed -nr 's#(.*)#echo "123456"|passwd --stdin oldboy\1#gp'|bash &>1.txt
[root@oldboyedu  ~]# tail -6 1.txt 
Changing password for user oldboy18.
passwd: all authentication tokens updated successfully.
Changing password for user oldboy19.
passwd: all authentication tokens updated successfully.
Changing password for user oldboy20.
passwd: all authentication tokens updated successfully.

批量刪除用戶:

[root@oldboyedu  ~]# ls /home/|xargs -n7
oldboy oldboy01 oldboy02 oldboy03 oldboy04 oldboy05 oldboy06
oldboy07 oldboy08 oldboy09 oldboy10 oldboy11 oldboy12 oldboy13
oldboy14 oldboy15 oldboy16 oldboy17 oldboy18 oldboy19 oldboy20
[root@oldboyedu  ~]# seq -w 20|sed -nr 's#(.*)#userdel -r oldboy\1#gp'|bash
[root@oldboyedu  ~]# ls /home/|xargs -n7
oldboy
[root@oldboyedu  ~]# tail /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
alex:x:1001:1001::/home/alex:/bin/bash
zuma:x:1111:0::/home/zuma:/bin/bash
mysql:x:1112:1112::/home/mysql:/sbin/nologin
pig:x:1113:1113::/home/pig:/bin/bash
oldboyedu:x:3333:2222:good:/home/456:/bin/bash
newuser:x:2223:2223::/home/newuser:/sbin/nologin
oldgirl:x:3334:3334::/home/oldgirl:/bin/bash
oldboy1:x:3335:3335::/home/oldboy1:/bin/bash
oldboy2:x:3336:3336::/home/oldboy2:/bin/bash

8.chage:修改用戶密碼有效期命令

參數(shù):

  • -l 顯示用戶有效期信息

范例1:多個(gè)參數(shù)示例

[root@oldboyedu  ~]# useradd range
[root@oldboyedu  ~]# chage -m7 -M60 -w10 -I30 range 
[root@oldboyedu  ~]# chage -l range 
Last password change                    : Mar 30, 2019
Password expires                    : May 29, 2019
Password inactive                   : Jun 28, 2019
Account expires                     : never
Minimum number of days between password change      : 7
Maximum number of days between password change      : 60
Number of days of warning before password expires   : 10

9 用戶查詢相關(guān)命令

演示效果

演示效果

演示效果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容