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/login.defs , /etc/default/useradd |
新用户信息文件 | /etc/skel |
登录信息 | /etc/motd |
创建用户是是否创建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
用户管理(增删改查)
用户作用:
- 1.登录操作系统
- 2.利于访问控制
唯一标识:UID 范围:0---60000
管理员root的UID永远为0
系统用户UID一般为1---999
创建的第二个系统用户UID就是1,第三个就是2
普通用户UID 一般(Centos7/RHEL8)从1000开始,再创建的普通用户UID就是1001
# 创建用户后默认会有一个邮件
用户邮件在/var/spoolmail/用户名 下
添加用户
新建用户时,系统自动从 /etc/skel 模板目录复制到home的新用户目录下
用户信息保存在/etc/passwd 文件中
用户密码保存在/etc/shadow 文件中
useradd参数详解
- 添加用户: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
useradd -M -s /sbin/nologin user2
-M:不创建家目录
-s:指定用户登陆时使用的shell,nologin就是登陆不了
创建系统用户----还没理解实际用途
参考: https://www.linuxcool.com/useradd
https://wangchujiang.com/linux-command/c/useradd.html
系统用户一般用于管理服务
,无需登录,所以分配nologin
,限制其登录系统.
-r, --system 创建一个系统帐户
# 新建一个系统用户,指定shell为nologin
## -r, --system 创建一个系统帐户
## -s 指定shell
## -M 不指定home目录
useradd -r -s /sbin/nologin -M newuser
实验结果显示:
-r
不会创建home
目录,如果有大佬发现其他不一样的对方请留言告诉我.
# 查看newuser的shadow和passwd中的信息
cat /etc/shadow /etc/passwd|grep newuser
# 删除newuser用户
userdel -rf newuser
添加用户:adduser
Ubuntu
下有adduser
命令,可以交互式创建用户
Centos
下的adduser
和useradd
功能一致
新建用户时,系统自动从
/etc/skel
模板目录复制到home的新用户目录下
用户信息保存在/etc/passwd 文件中
用户密码保存在/etc/shadow 文件中
useradd
与adduser
的区别- 在CentOs下
useradd
与adduser
是没有区别的,都是在创建用户,在home下自动创建目录,没有设置密码,需要使用passwd命令修改密码。
- 在CentOs下
- 在Ubuntu下
useradd
与adduser
有所不同- 1、
useradd
在使用该命令创建用户是不会在/home
下自动创建与用户名同名的用户目录,而且不会自动选择shell版本,也没有设置密码,那么这个用户是不能登录的,需要使用passwd
命令修改密码。- 1.1 、Ubuntu下使用
useradd
不会创建home
目录,shell
默认是/bin/sh
,不会从/etc/skel
复制模板文件
- 1.1 、Ubuntu下使用
- 2、
adduser
在使用该命令创建用户是会在/home
下自动创建与用户名同名的用户目录,系统shell版本,会在创建时会提示输入密码,更加友好。
- 1、
- 添加用户:
adduser + 用户名
修改用户usermod
如何科学的修改Linux的用户名
- (1)以
root
登录 - (2)$
usermod -l 新用户名 旧用户名
该命令相当于执行了以下命令:- (1)将
/etc/passwd
下的用户名栏从旧用户名修改为新用户名,其他部分不变 - (2)将
/etc/shadow
下的用户名栏从旧用户名修改为新用户名,其他部分不变 - (3) 将
/var/mail
下的旧用户名栏修改为新用户名
- (1)将
- (3) $
usermod -c 注解 修改后的新用户名
- (1)相当于将
/etc/passwd
下的注解栏修改为新用户名,其他部分不变
- (1)相当于将
- (4) $
groupmod -n 新组名(新用户名) 旧组名(旧用户名)
相当于执行了以下命令:- (1)将原来的用户组名修改为新用户组名,只修改组名,组标识号不变
- (2)相当于修改了文件
/etc/group
- (3)相当于修改了
/etc/gshadow
- (5) $
usermod -md /home/新用户名目录 新用户名
相当于执行了以下命令:- (1)将
/etc/passwd
下的登入目录栏,修改为/home/新用户名目录
,其他部分不变 - (2)将原来的用户目录
/home/旧用户名目录
,修改为新的用户目录/home/新用户名目录
- (1)将
- (6)$
reboot
# 修改用户名
usermod -l 新用户名 旧用户名
# 修改用户名的注释信息
usermod -c 注释信息 新用户名
# 修改用户名组名
groupmod -n 新组名 旧组名
# 修改home目录
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
# 锁定用户的密码
usermod -L 用户名
# 查看账号的密码状态
passwd -S root
# 解锁用户的密码
usermod -U 用户名
删除用户 userdel
- -r 递归删除该用户所有资料和账户信息
- -f 强制删除
- 删除完用户名不会删除用户的组
- 使用
userdel -r -f
会删除用户组
- 使用
强制删除用户
使用userdel
删除用户时不会删除home目录
可以使用userdel - f username 强制删除
用户,即使用户在登陆状态下也会删除
# 强制删除用户--会删除用户的home目录和配置文件
userdel -r username
# 强制删除用户,即使用户在登陆状态下也删除
userdel - f username
# Linux文件权限为1000,是无属主文件,也就是原有用户被删除了
# 查看用户是否删除,tail用来查看最后十条log,和cat效果是一样的
tail -5 /etc/passwd
# 或
tail -5 /etc/shadow
# userdel -r -f 合起来用
userdel -rf username
查看用户信息
id
# id命令查看用户信息
## id username
[root@qiaofei ~]# id qiaofei
uid=1000(qiaofei) gid=1000(qiaofei) 组=1000(qiaofei),10(wheel)
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
who查看当前登录用户
# 查看当前登录用户
who am i
# 查看当前登录用户
## 只会显示用户名,没有任何多余的输出。
whoami
查看所有历史登录信息
# 可以查看自从wtmp文件创建以来的每一次登陆情况
##(1)-b:查看系统最近一次启动时间
##(2)-H:打印每列的标题
who /var/log/wtmp
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
显示远程登陆信息
# 查看用户历史登录信息
## 查看最后登录用户的tty编号
last root
# 显示这个时间戳之前的登陆历史
last -t 20150226160404
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