Linux用户管理

创建用户的配置项

创建用户配置项/etc/login.defs
如果想自定义创建用户,编辑/etc/login.defs文件.

配置/etc/login.defs https://blog.csdn.net/omaidb/article/details/122560846

配置文件信息文件名称
用户信息文件/etc/passwd
密码文件/etc/shadow
用户组文件/etc/group
用户组密码文件/etc/gshadow
用户配置文件/etc/default/useradd
系统广义设置文件/etc/login.defs
新用户home目录模板/etc/skel
登录前欢迎语/etc/motd
登录后欢迎语/etc/issue

/etc/skel目录下的文件主要包括shell配置文件(如.bashrc.bash_profile)、桌面图标示例文件等。当系统管理员创建新用户时,这些文件子目录就会被复制新用户家目录中,并作为这个新用户默认环境


创建用户是是否创建home文件

# RHEL系统默认是创建home目录的
[localhost root ~] #cat /etc/login.defs |grep -i home
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
# If useradd should create home directories for users by default
CREATE_HOME     yes

用户UID

用户的作用:

  • 1.登录操作系统
  • 2.利于访问控制

UID指的是用户的ID(User ID),一个用户UID标示一个给定用户,UID是用户的唯一标示符,通过UID可以区分不同用户的类别(用户在登录系统时是通过UID来区分用户,而不是通过用户名来区分):

UID范围: 0---60000
管理员root的UID永远为0
系统用户UID一般为1---999

  • 创建的第二个系统用户UID就是1,第三个就是2

普通用户UID 一般(Centos7/RHEL8)从1000开始,再创建的普通用户UID就是1001;
创建用户后默认会有一个邮件用户邮件/var/spoolmail/用户名


超级用户的UID

也称为root用户,它的UID为0,超级用户拥有系统的完全控制权,可以进 行修改、删除文件等操作, 也可以运行各种命令,所 以在使用root用户时要十分谨慎;


普通用户的UID

普通用户:也称为一般用户, 它的UID为1000-60000 之间,普通用户可以对自己目录下的文件进行访问 和修改,也可以对经过授权的文件进行访问;


虚拟用户(系统用户)的UID

虚拟用户:也称为系统用户,它的UID为1-999 之间,虚拟用户最大的 特点是不提供密码登录系统,它们的存在主要是为了方便系统的管理。


添加用户

新建用户时,系统自动从 /etc/skel 模板目录复制到/hom新用户目录下;
用户信息保存在/etc/passwd 文件中
用户密码保存在/etc/shadow 文件中

在这里插入图片描述


useradd参数详解

在这里插入图片描述

选项含义
-o配合"-u"属性,允许UID重复
-g指明用户所属基本组,既可为用户组名,也可为GID(该组必须已存在)
-d指定用户的home目录,并自动创建用户home目录
-s指明用户的默认shell程序
-D显示或更改默认配置
- 添加用户:useradd test1
         - 新建用户会创建以用户名命名的组
         - -g 指定该用户的主属组
            - 一个用户永远只有一个主属组
               - 创建的时候可以指定,也可以后期修改
         - -G 指定该用户的附属组
            - 一个用户可以有多个附属组
               - 同时主属组也会添加到附属组
         - -d<登入目录>
            - 指定用户登入时的起始目录。
               - useradd -d </home/addusername>
         - -c<备注>
            - 加上备注文字。备注文字会保存在passwd的备注栏位中。
         - -D  变更预设值.
         - -e<有效期限>
            - 指定帐号的有效期限。
         - -f<缓冲天数>
            - 指定在密码过期后多少天即关闭该帐号
         - -m
            - 自动建立用户的登入目录。
         - -M
            - 不要自动建立用户的登入目录。
         - -n
            - 取消建立以用户名称为名的群组.
         - -r
            - 建立系统帐号。
         - -s
            指定用户登入后所使用的shell,可以使用的所有常规shell列表存储在/etc/shells文件当中
         - -u
            - 指定用户ID。
         - 也可以这样写useradd -g ko -G ls Augus<br />*** Augus是所添加的用户
         - 常见语法
            - useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ]
            - useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号]

指定用户shell—重点

useradd -s /bin/指定shell
正常账户的默认终端是 /bin/bash
不允许登陆tty的终端是 /sbin/nologin,只允许以服务运行
useradd -s 指明用户所使用的shell,可以使用的所有常规shell列表存储在/etc/shells文件当中


useradd示例


创建普通用户

# 正常账户的默认终端是 /bin/bash
# 创建正常账户user1
useradd user1

# 创建user3并为账户添加备注
useradd -c 用户3 user3

# 查看用户的备注信息
[root@localhost ~]# cat /etc/passwd |grep user3
user3:x:1000:1000:用户3:/home/user3:/bin/bash

创建服务用户

不允许登陆tty的终端是 /sbin/nologin,只允许以服务运行

useradd创建服务用户/创建服务账户/创建服务账号/

# 创建服务账户user2
## -M:不创建家目录
## -s:指定用户登陆时使用的shell,nologin就是登陆不了
useradd -M -s /sbin/nologin user2

## --no-create-home 是 —M 参数的全拼
## -shell 是-s 参数的全拼
## /sbin/nologin 和/bin/false 作用相同
useradd --no-create-home --shell /bin/false prometheus

创建系统用户----还没理解实际用途

参考: https://www.linuxcool.com/useradd
https://wangchujiang.com/linux-command/c/useradd.html
系统用户一般用于用于运行服务,无需登录,所以分配nologinfalse,限制其登录系统,以隔离服务进程,提高系统安全性。防止恶意用户登录系统。
-r创建系统用户不会创建home目录

# 新建一个系统用户,指定shell为nologin
## -r, --system        创建一个系统帐户,不会创建home目录
## -s 指定shell
useradd -r -s /sbin/nologin newuser

# 实战示例:创建Node_Exporter的用户
useradd -rs /bin/false nodeusr

实验结果显示:
-r 不会创建home目录,如果有大佬发现其他不一样的对方请留言告诉我.

# 查看newuser的shadow和passwd中的信息
cat /etc/shadow /etc/passwd|grep newuser

在这里插入图片描述

# 删除newuser用户
userdel -rf newuser

在这里插入图片描述


添加用户:adduser

Ubuntu下有adduser命令,可以交互式创建用户
Centos下的adduseruseradd功能一致

新建用户时,系统自动从 /etc/skel 模板目录复制到home的新用户目录下
用户信息保存在/etc/passwd 文件中
用户密码保存在/etc/shadow 文件中

  • useraddadduser的区别
    • 在CentOs下useraddadduser是没有区别的,都是在创建用户,在home下自动创建目录,没有设置密码,需要使用passwd命令修改密码。
  • 在Ubuntu下useraddadduser有所不同
    • 1、useradd在使用该命令创建用户是不会在/home下自动创建与用户名同名的用户目录,而且不会自动选择shell版本,也没有设置密码,那么这个用户是不能登录的,需要使用passwd命令修改密码。
      • 1.1 、Ubuntu下使用useradd不会创建home目录,shell默认是/bin/sh,不会从/etc/skel 复制模板文件
    • 2、adduser在使用该命令创建用户是会在/home下自动创建与用户名同名的用户目录,系统shell版本,会在创建时会提示输入密码,更加友好。
  • 添加用户:adduser + 用户名

修改用户usermod

https://www.linuxcool.com/usermod
https://wangchujiang.com/linux-command/c/usermod.html

-a将用户添加至扩展组中
-c修改用户账号的备注文字
-d修改用户登录时的家目录
-e修改用户账号的有效期限
-f设置在密码过期后多少天关闭该账号
-g修改用户所属的基本群
-G修改用户所属的扩展群
-l修改用户账号名称
-L锁定用户密码,使密码立即失效
-m将用户主目录内容移动到新位置
-o允许重复的用户ID
-p设置用户的新密码
-s修改用户登录后使用的Shell终端
-u修改用户账号的ID
-U解除密码锁定,使密码恢复正常
-Z设置用户账号的SELinux映射用户

如何科学的修改Linux的用户名

  • (1)以root登录
  • (2)$ usermod -l 新用户名 旧用户名
    该命令相当于执行了以下命令:
    • (1)将/etc/passwd下的用户名栏从旧用户名修改为新用户名,其他部分不变
    • (2)将/etc/shadow下的用户名栏从旧用户名修改为新用户名,其他部分不变
    • (3) 将/var/mail下的旧用户名栏修改为新用户名
  • (3) $ usermod -c 注解 修改后的新用户名
    • (1)相当于将/etc/passwd下的注解栏修改为新用户名,其他部分不变
  • (4) $ groupmod -n 新组名(新用户名) 旧组名(旧用户名)
    相当于执行了以下命令:
    • (1)将原来的用户组名修改为新用户组名,只修改组名,组标识号不变
    • (2)相当于修改了文件/etc/group
    • (3)相当于修改了/etc/gshadow
  • (5) $ usermod -md /home/新用户名目录 新用户名
    相当于执行了以下命令:
    • (1)将/etc/passwd下的登入目录栏,修改为/home/新用户名目录,其他部分不变
    • (2)将原来的用户目录/home/旧用户名目录 ,修改为新的用户目录/home/新用户名目录
  • (6)$ reboot
# 修改用户名
## -l 修改用户账号名称
usermod -l 新用户名 旧用户名

# 修改用户名的注释信息
## -c 修改用户账号的备注文字
usermod -c 注释信息 新用户名

# 修改用户名组名
# -n <新群组名称>:修改组名
groupmod -n 新组名 旧组名

# 修改home目录
## -m 将用户主目录内容移动到新位置
## -d 修改用户登录时的家目录
usermod -md /home/新用户名 新用户名

锁定用户的ssh登陆

参考: https://www.51cto.com/article/603846.html

# 修改用户的shell为nologin
# usermod -s /sbin/nologin 用户名
usermod -s $(which nologin) 用户名
# 查看该用户的shell是否变更为nologin
grep 用户名 /etc/passwd

锁定用户的密码

密码管理的详细用法:https://blog.csdn.net/omaidb/article/details/120406676

# 锁定用户的密码
## -L:锁定用户密码,使密码无效;
usermod -L 用户名

# 查看账号的密码状态
## -S 显示当前密码状态
passwd -S root

# 解锁用户的密码
## -U: 解除密码锁定。
usermod -U 用户名

删除用户 userdel

  • -r 递归删除该用户所有资料和账户信息
  • -f 强制删除
    • 删除完用户名不会删除用户的组
    • 使用userdel -r -f 会删除用户的组用户所有资料

强制删除用户

使用userdel删除用户时不会删除home目录
可以使用userdel - f username 强制删除用户,即使用户在登陆状态下也会删除

# 强制删除用户--会删除用户的home目录和配置文件
## -r 递归删除该用户所有资料和账户信息
userdel -r username

# 强制删除用户,即使用户在登陆状态下也删除
## -f 强制删除
userdel - f username

# Linux文件权限为1000,是无属主文件,也就是原有用户被删除了
# 查看用户是否删除,tail用来查看最后十条log,和cat效果是一样的
tail -5 /etc/passwd
# 或
tail -5 /etc/shadow


# userdel -r -f 合起来用
userdel -rf username

查看用户信息


id

-a兼容性选项,没有实际作用
-g显示用户所属基本组的ID
-G显示用户所属扩展组的ID
-u显示用户的ID
-Z显示用户的安全上下文(开启SELinux后使用)
-z使用空字符代替默认的空格来显示条目

扩展选项
只有在使用 -u -g -G 选项中一到多个时,以下选项可以使用:

-n–name 显示用户所属基本组或扩展组的名称,打印名称而不是数字。
-r–real 打印真实ID而不是有效ID。
# id命令查看用户信息
id 用户名

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


getent

# getent命令用来查看系统的数据库中的相关记录。
# 在passwd中查看root的信息
getent passwd root

在这里插入图片描述


查看当前系统下有哪些用户

统计下当前系统有多少个用户

# 查看当前系统下有哪些用户
cat /etc/passwd | cut -f 1 -d :

在这里插入图片描述


查看当前系统下有哪些用户组

# 查看当前系统下有哪些用户组
cat /etc/group |cut -f 1 -d :

在这里插入图片描述


查看哪些用户可以登录系统

# 查看有哪些可登录用户
cat /etc/passwd | grep -v 'nologin' | awk -F ':' '{print $1}'

在这里插入图片描述


查看用户组信息

#查看张三组的信息
groups zhangsan 

在这里插入图片描述


su切换用户:

# 切换到新用户但保留当前变量
su zhangsan

# 切换到新用户并切换到新用户变量
su - zhangsan

查看用户登录信息

https://blog.csdn.net/beitiandijun/article/details/43954307
https://segmentfault.com/a/1190000038996911


finger查看用户信息

全面查看用户信息,非内置命令,需要安装,截止2023年6月支持RHEL7,尚支持RHEL8

# 安装finger
yum install -y finger

# 查看用户信息
finger 用户名

在这里插入图片描述


who查看当前登录用户

https://www.linuxcool.com/who

# 查看当前登录用户
who am i

在这里插入图片描述

# 查看当前登录用户 
## 只会显示用户名,没有任何多余的输出。
whoami

在这里插入图片描述


查看重启记录

# 查看自从wtmp文件创建以来的每一次登陆情况
##(1)-b:查看系统最近一次启动时间
who -b

在这里插入图片描述

# 查看历史重启记录
who -b /var/log/wtmp

在这里插入图片描述


查看所有历史登录信息

# 查看自从wtmp文件创建以来的每一次登陆情况
##(1)-b:查看系统最近一次启动时间
who /var/log/wtmp

在这里插入图片描述

##(2)-H:打印每列的标题
who -H /var/log/wtmp|more

在这里插入图片描述


w显示已登录用户

https://www.linuxcool.com/w

# 显示已登录用户
w

在这里插入图片描述
w 这个命令输出的信息都是来自 /var/run/utmp 这个文件的。

USER:表示用户的名称
TTY:表示计算机终端设备
FROM:表示远程主机的地址
LOGIN@:系统登陆的时间
IDLE:登陆系统的空闲时间
WHAT:表示用户正在使用的命令


last查看用户历史登录信息

https://blog.csdn.net/beitiandijun/article/details/43954307

last所显示的内容都来自/var/log/wtmp/var/log/btmp显示远程登陆信息

# 查看用户登录成功信息
last -f /var/log/wtmp

# 查看用户历史登录信息
## 查看最后登录用户的tty编号
last root

# 显示这个时间戳之前的登陆历史
last -t 20150226160404

在这里插入图片描述


lastb显示登录失败的信息

https://www.linuxcool.com/lastb
常用参数:
-a  把从何处登入系统的主机名称或IP地址显示在最后一行。
-d  将IP地址转换成主机名称。
-f <记录文件>  指定记录文件。
-n <显示列数>或-<显示列数>  设置列出名单的显示列数。
-R  不显示登入系统的主机名称或IP地址。
-x  显示系统关机,重新开机,以及执行等级的改变等信息。

lastbssh登录失败日志保存在/var/log/btmp

# 显示登录失败的用户信息
lastb

# 等同于
last -f /var/log/btmp

在这里插入图片描述

第一列第二列第三列第四列第五列第六列
用户名终端位置来源IP或主机名登录开始时间结束时间持续时间
# 查看ssh登录失败的IP地址
lastb -i

在这里插入图片描述

# 请空(截断)ssh登录失败日志
truncate -s 0 /var/log/btmp

在这里插入图片描述


lastlog显示用户最近一次登录信息

lastlog命令将读取/var/log/lastlog文件;用户排列顺序按照/etc/passwd中的顺序.
选项:
(1) -u:查看某个用户的最后一次登陆历史

# 查看某个用户的最后一次登陆历史
lastlog -u root

在这里插入图片描述

(2) -t:查看最近几天之内的用户登录历史

# 查看最近1天之内的登陆历史
lastlog -t 1

在这里插入图片描述

(3) -b:查看指定天数之前的用户登录历史

# 查看60天之前的用户登录历史
lastlog -b 60

在这里插入图片描述


ac查看用户连接的时间

ac命令根据/var/log/wtmp文件中的登陆退出时间报告用户连接的时间(小时),默认输出报告总时间.

# 查看ac命令来自哪个包
yum provides ac

# 安装ac命令
yum install -y psacct

# 查看是否安装成功
which ac

(1)-p:显示每个用户的总连接时间

# 显示每个用户的总连接时间
ac -p

在这里插入图片描述

(2)-d:显示每天的总连接时间

# 显示每天的连接时间
ac -d

# 查看指定用户每天的连接时间
ac -d root

在这里插入图片描述

(3)-y:显示年份,和-d配合使用

# 显示所有用户的登录总时间
ac -dy

在这里插入图片描述


将登录用户踢下线

https://www.linuxcool.com/last

# 显示用户历史登录情况
## 查看最后登录用户的tty编号
last root

在这里插入图片描述

# 踢掉pts/12--结束pts/12的登录进程
## pkill ---依据进程名杀死指定进程
pkill -kill -t pts/12

修改用户密码

https://blog.csdn.net/omaidb/article/details/120406676

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值