用户管理是日常工作中不可缺少的工作之一。

**用户管理

  1. 用户账密文件管理**
  • /etc/passwd

/etc/passwd文件,以:分隔,共计7段

用户名     密码   uid   gid 说明文字   家目录   shell
tmpuser110x:3022:3022::/home/tmpuser110:/bin/bash
  • /etc/shadow
/etc/shadow 文件,以:分隔,共计9段

用户名   加密密码 密码更动日期   密码可更改日期   密码过期提醒时间 密码过期警告时间   密码失效天数 失效日   保留未使用

test:$6$9BW0o9Sm$3uqDuhr84SjW6AsolWK3sFdZvqxwj1ahpN2F5/:16942:0:99999:7:::

定义如下:
(1) 登录账号

(2) 加密口令,“*”或其他符号表示不能用来登录。

(3) 口令上次更改时间与1970年1月1日相隔的天数

(4) 口令更改后不可以再次更改的天数,0表示可以随时更改

(5) 口令的有效期,即口令更改后必须再次更改的天数,99999表示未设有效期

(6) 口令失效前警告用户的天数

(7) 口令失效后距账号被查封的天数,默认值-1

(8) 账号被封时距1970年1月1日的天数,默认值-1

(9) 保留未用

2. 用户的增删改查 增:

useradd -d 主目录 -g 主组 -G 副组 -s /bin/nologin 指定shell (-M 不建家目录)


-d 指定家目录

-g 指定主组

-G 指定副组

-s 指定shell

改:


usermod  参数 用户名  (更改用户属性)

usermod  -a -G testgroup1 testgroup2 test (增加附属组)       修改副组,增加多个副组要加-a,如不加则修改副组

-c   跟账号说明

-d   跟自定义家目录

-e   跟密码创建日期 YYYY-MM-DD

-f   后跟密码过期警告天数

-g   主组

-G   副组

-a   与-G一起增加多个副组

-l    修改账户名

-s   修改shell(不能登录等shell如/sbin/nologin)

-u   更改uid

-L   账户锁定(即在shadow密码项标记为!)

-U   账户解锁

# 修改账密
chage   修改用户的密码  
chage -d 1 username     第一次登录需要更改密码

# 更新用户账密
echo“username:newpassword”|chpasswd -m (更改并通过md5加密放入shadow文件中)



# 修改密码

passwd  用户名

删:

userdel -r username (连同用户家目录一起删除)

查:

id username (查看用户id情况)

3. 用户的切换


su - username   切换用户

sudo   command     可使用root进行作业 [ 需修改/etc/sudoers]

1.普通用户,不需知道root账密,可通过sudo来切换root,此时切换时只需验证普通用户自己账密

a.如系统没有visudo命令,可通过yum -y install visudo安装

b.通过visudo命令编辑/etc/sudoers

在root ALL=(ALL)ALL下加入test ALL=(ALL)ALL 从而让test用户拥有sudo权利

^     ^       ^   ^

|     |         |     |

账号     账号登入的来源主机名   (可切换的身份) 可下达的指令

或

去掉注释#wheel   ALL=(ALL)     ALL   一行,

然后通过groupmod -G wheel username 将对应用户加入whell组即可用sudo权利



2.只能普通用户登录,无需输入密码即可切换root(通过sudo su -命令切换)

visudo编辑配置文件/etc/sudoers,加入

User_Alias USER_SU = test,test1,test2

Cmnd_Alias SU = /bin/su

USER_SU ALL=(ALL) NOPASSWD: SU

完成后可测试:

[test@localhost]$ sudo su -

-----------------------

su 切换root ,需要输入root的账密

  不加“-“时,目录还是在使用者用户下

  加“-” 时即su-   目录转到root下了

sudo切换root ,需要使用者自己的账密

------------------------

3.指定test1用户,只能以root账号改其他账号的密码

test1   ALL=(root) !/usr/bin/passwd ,!/usr/bin/passwd root,/usr/bin/passwd [a-zA-Z]*,---------> 命令的绝对路径(通过which command 可获得)

2.当/etc/nologin.txt文件被创建时,普通用户都无法登陆,只有root可以!!!

4. 扩展:批量创建账号

大量建立账号scrip

#!/bin/bash

#功能有:

#1.检查account1.txt是否存在,并将该档案内的账号取出

#2.建立上述账号

#3.将上述账号的密码修订为【第一次登陆必须修改账密】

#2021-03-01

path=/bin:$PATH

export path

#检查是否存在account1.txt档案

if [ ! -f account1.txt ] ;then

        echo "所有需要的账号档案不存在,请建立account1.txt,每行账号名称“

        exit1

elif [ -f account1.txt ]; then

        echo "存在需要删除其内容:$(echo ‘’> account1.txt)"

fi

usernames=$(cat account1.txt)

for username in $usernames

do

    useradd $username

     echo $username |passwd --stdin $username

    chage -d 0 $username     <==强制登入修改密码

done