Linux常用命令之用户管理

本篇继续分享Linux中常用命令。主要分享Linux系统的用户管理相关的命令。

useradd命令——创建用户


原理:在使用useradd命令时,若不加任何参数选项,后面直接跟所添加的用户名,那么系统首先会读取/etc/login.defs(用户定义文件)和/etc/default/useradd(用户默认配置文件)文件中所定义的参数和规则,然后根据所设置的规则添加用户,同时还会向/etc/passwd(用户文件)和/etc/group(组文件)文件内添加新用户和新用户组记录,向/etc/shadow(用户密码文件)和/etc/gshadow(组密码文件)文件里添加新用户和组对应的密码信息的相关记录。同时系统还会根据/etc/default/useradd文件所配置的信息建立用户的家目录,并将/etc/skel中的所有文件(包括隐藏的环境配置文件)都复制到新用户的家目录中。

选项:

-r创建用户时不创建家目录
-d指定创建时的家目录位置,默认创建在/home目录,在/etc/default/useradd可修改默认目录。
-M 不建立家目录,虚拟用户一般需要建立家目录。
-s用户登录使用的shell,默认是/bin/bash,可在/etc/default/useradd修改默认值
-g指定用户组,这个用户组必须提前存在。
-G指定多个附属组,可成为不同组的成员,多个使用逗号(,)隔开。
-u uid指定用户的ID值。

常用操作

// 创建用户的同时还会创建一个与用户名相同的用户组
useradd  test  
// 创建用户rudy,属于mysql组,uid为1002 

useradd -g mysql  -u 1002  rudy   
// 创建禁止登陆的用户 ,/sbin/nologin表示禁止登录

useradd -M -s  /sbin/nologin   rudy

usermod命令——修改用户信息


参数大部分和useradd相同,usermod是修改用户,useradd是增加用户。

选项:

-d  家目录修改用户的家目录
-s  shell修改用户登录的shell
-G group修改此用户为多个不同组的成员
-l修改用户的账号名称

常用操作:

// 修改家目录和uid
usermod -d /dataroot/rudy -u 1002 rudy
// 将rudy用户名称更改为zhangsan

usermod -l zhangsan  rudy
// 将rudy添加到这些组里面

usermod -G public,wangluo rudy

userdel命令——删除用户及该用户相关的文件


选项:

-f强制删除用户,即使用户已登录
-r删除用户的同时,删除与用户相关的所有文件

常用操作

// 不加参数删除用户,家目录还存在
userdel rudy
// 加-r参数删除用户,连同家目录一起删除

userdel -r rudy
// 强制删除用户

userdel -l -r  rudy

在实际工作中尽量不要使用userdel删除用户,而是采用在/etc/passwd里注释用户的方法,防止用户误删带来的系统及服务不正常。

groupadd命令——创建新的用户组


groupadd命令的用途一般不大,因为useradd命令在创建用户的同时还会创建与用户同名的用户组。

常用操作:

添加GID为1020的rudy组
groupadd -g 1020  rudy

groupdel命令——删除用户组


groupdel不能删除还有用户归属的主用户组。

常用操作:

groupdel rudy

passwd命令——修改用户密码


说明:

root用户可以修改任何用户的密码,普通用户只能修改自身的密码。

root用户修改密码时,如果不符合系统密码规则,则给出警告信息,但密码设置仍然生效。普通用户修改密码时,如果使用弱密码,则给出告警信息,且修改无效。

选项:

-k为密码已经过期的用户更新有效期
–stdin 从标准输入读取密码字符串
-l锁定用户
-d 删除用户密码,是密码为空

常用操作:

1、修改自身密码
[root@localhost ~]# passwd root
更改用户 root 的密码 。
新的 密码:重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
2、一条命令修改密码,但不安全。

[root@localhost ~]# echo manager |passwd --stdin root
更改用户 root 的密码 。
passwd:所有的身份验证令牌已经成功更新

实战:批量创建10个用户user01-user10,并且设置8位随机密码,要求不能使用Shell的循环(例如:for、while等),只能用Linux命令及管道来实现。

[root@localhost tmp]# echo user{01..10}| tr " " "\n"|sed -r 's#(.*)#useradd \1; pass=$((RANDOM+10000000)); echo "$pass" |passwd --stdin  \1; echo -e "\1 \t  `echo "$pass"`">/tmp/rudyli.txt#g'|bash

su命令——切换用户


将当前用户切换到指定用户或者以指定用户的身份执行命令或程序

选项:

-,-l,–login切换用户的同时,将用户的家目录、系统环境等重新按切换后的用户初始化
-c向Shell传递单个命令

操作

# 只切换用户,不切换家目录su liyb  
# 切换家目录,su - root# 让系统每一次开机时能自动以普通用户启动指定的服务脚本cat  /etc/rc.localsu - liyb -c '/bin/sh  /data/scripts/install.sh'

注意

1、普通用户切换到root用户,需要输入密码

2、root切换到普通用户不需要密码

visudo命令——编辑sudoers文件


-c手动执行语法检查

操作

visudo      # 等价于vi  /etc/sudoers编辑

大约100行下面添加需要提升root权限的普通用户名及对应权限

root    ALL=(ALL)       ALLliyb    ALL=(ALL)     /usr/sbin/useradd, /usr/sbin/userdelrudyli  ALL=(ALL)       NOPASSWD:ALL

检查语法

visudo -c/etc/sudoers:解析正确
待授权的用户或组机器=(授权角色)可以执行的命令
userMACHING=COMMANDS
liybALL=(ALL)/usr/sbin/useradd, /usr/sbin/userdel

sudo命令——以另一个用户身份执行命令


可以让普通用户在执行指定的命令或程序上,拥有超级用户的权限。普通用户不需要知道root用户密码。这个授权在visudo配置管理。

who命令——显示已登录用户信息

[root@harbor ~]# who -a           
系统引导 2023-12-25 09:55
运行级别 3 2023-12-25 09:55
登录 tty1
2023-12-25 10:03 2894 id=tty1root + pts/0 2023-12-29 11:36 . 94994 (172.16.1.203)

last命令——显示用户登录列表


last命令能够从日志文件/var/log/wtmp读取信息并显示用户最近的登录列表

[root@harbor ~]# lastroot     
pts/0 172.16.1.203 Fri Dec 29 11:36 still logged inroot
pts/0 172.16.1.203 Thu Dec 28 13:58 - 14:09 (00:11)root
pts/0 172.16.1.203 Thu Dec 28 13:06 - 13:11 (00:05)root
pts/0 172.16.1.203 Thu Dec 28 11:47 - 12:07 (00:19)root
pts/0 172.16.1.203 Thu Dec 28 10:23 - 10:38 (00:14)root
pts/0 172.16.1.203 Thu Dec 28 10:12 - 10:17 (00:05)

lastb命令——显示用户登录失败的记录


lastb命令可以从日志文件/var/log/btmp中读取信息,并显示用户登录失败的记录,用于发现系统登录异常

[root@harbor ~]# lastbrudyli   
pts/0 Fri Dec 29 12:46 - 12:46 (00:00)Administ
ssh:notty 172.16.1.203 Thu Dec 28 13:58 - 13:58 (00:00)Administ
ssh:notty 172.16.1.203 Thu Dec 28 11:47 - 11:47 (00:00)Administ
ssh:notty 172.16.1.203 Mon Dec 25 11:19 - 11:19 (00:00)Administ
ssh:notty 172.16.1.203 Mon Dec 25 11:19 - 11:19 (00:00)Administ
ssh:notty 172.16.1.203 Mon Dec 25 11:19 - 11:19 (00:00)Administ
ssh:notty 172.16.1.203 Mon Dec 25 11:18 - 11:18 (00:00)Administ
ssh:notty 172.16.1.203 Mon Dec 25 11:18 - 11:18 (00:00)(unknown
tty1 Sat May 6 17:12 - 17:12 (00:00)

btmp begins Sat May 6 17:12:19 2023

lastlog命令:显示所有用户的最近登录记录


从日志文件/var/log/lastlog中读取信息,并显示所有用户的最近登录记录,用于查看系统是否有异常登录

[root@harbor ~]# lastlog
用户名 端口 来自 最后登陆时间
root pts/0 172.16.1.203 五 12月 29 11:36:08 +0800 2023
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
lp **从未登录过**
sync **从未登录过**
shutdown **从未登录过**
halt **从未登录过**

此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注