目录
创建用户参考文件:/etc/login.defs、/etc/skel/、/etc/default/useradd
当用户的shell为:/sbin/nologin,可以在登陆时指定shell即可
用户分类
Linux:多用户的操作系统,
1: 超级管理员:root
2:系统用户:类似MySql的用户
3:普通用户:
Kernel 3.0:
UID=0:超级管理员
0≤UID≤999:系统用户
UID≥1000:普通用户
用户信息
UID:用来区分一个用户是什么类型的用户,且每个用户的UID都不同
普通用户的家目录在 ‘/home/’ 下 并以用户名 命名的目录
root用户的家目录在 ‘ /root/’
用户账号信息文件:/etc/passwd
用户密码信息文件:/etc/shadow
账号信息格式:
#每一行代表一个用户
root:x:0:0:root:/root:/bin/bash
# root:用户名
# x:用户的密码字段 密码字段全为x
# 0:用户的UID
# 0:用户所属主组的ID
# root:描述信息
# /root:用户的家目录
# /bin/bash:Shell类型。每个用户扽古或者切换后,获得一个Shell类型
密码信息格式:
root:$6.T1:18868:0:99999:7:3:365:
# root :用户名
# $6.T1:加密后的密码 HASH(!!:代表没设置密码)
# 18868:上次修改密码的时间(从1970年1月1日起,每过一天+1)
# 0 :最短密码期限,至少使用时间才能修改(0:随时可以修改)
# 99999:最长密码期限,必须在这个期限内修改密码,否则密码将过期
# 7 :密码告警期限,密码过期前7天提醒用户更改密码(0:不提醒)
# 3 :密码过期后的宽限天数,提示修改,密码仍可使用。超过宽限时间,在不改密码,账号就不能登录
# 365 :账号到期
# :保留字段
组信息
GID:唯一标识一个组
一个用户可以属于多个组、只能有一个主组、可以有多个附加组
组信息所在:‘/etc/group’
组密码信息所在:‘/etc/gshadow’
组信息
root:x:0:
# 组名:
# 组密码信息(x代替
# 组ID
# 组成员信息(省略与自己同名,并以该组为主组的用户)
组密码信息
# 每个组占用一行
root:::
# root:组名
# :组密码信息
# :组管理员
# :组成员(
用户操作
添加用户
#参数
# -c:用户的描述
# -d:指定家目录
# -g:指定主组
# -G:指定附加组
# -s:指定shell类型
# -u:指定UID
useradd USERNAME
#示例添加:
useradd -u 1520 -g PRI -G SUB -c "Amazing" -d /TEST -s /sbin/nologin GL
#查看passwd信息
GL:x:1520:1001:Amazing:/TEST:/sbin/nologin
创建用户参考文件:/etc/login.defs、/etc/skel/、/etc/default/useradd
1. 根据已存的最大ID,继续为新用户分配ID
2. 创建用户所属的家目录,其中隐藏文件定义了该用户的特定环境变量
3. 同时创建与该用户名同名的组名,并且该用户的主组就是此组
4. 将 ‘/etc/skel/' 下的文件复制到新建的家目录下,并修改相应的权限
当用户的shell为:/sbin/nologin,可以在登陆时指定shell即可
su - GL -s /bin/bash
查看用户
id USER_NAME
修改用户
# -c:修改注释
# -d:修改家目录
# -g:修改主组
# -aG:添加附加组
# -s:修改Shell
# -a:添加,需要组合使用
usermod
删除用户
# -r:连同相关文件都删除
userdel -r USER_NAME
#特例
#删除没有指定 ‘-r’,导致对应用户的家目录并未删除
#创建相同的用户时,需要执行:
#创建用户
useradd GL
#查看当前用户的UID
id GL
#将已存在的家目录进行UID重设定
chmod UID:UID /home/GL
切换用户
#第一种:完整登录
su - GL
#第二种:不完整登录
su GL
#不登陆用户,只是传递命令,返回到此终端显示
su - GL /bin/bash -c "/usr/bin/ll /home/GL
注意:
root用户切换到其他用户,不需要提供密码
普通用户切换到任意用户都需要提供密码
完整登录:用户会读取改用自己的环境变量文件
不完整登录:会丢失用户所特有的环境变量
临时提权操作
visudo配置文件:
visudo
%wheel ALL=(ALL) ALL
# wheel :用户名、组名、用户别名
# ALL :从哪些机器登录<sudo>
# (ALL) :使用任何身份去执行后面定义的命令
# ALL :sudo之后能干的事情(单个命令、命令别名)
#EXAMPLES
#指定用户名
GL ALL=(ALL) /usr/bin/fdisk
#指定组名
%GROUP_NAME ALL=(ALL) /usr/bin/fdisk
#指定别名
User_Alias LINUX=GL,LNB,WC
LINUX ALL=(ALL) /usr/bin/fdisk
#指定别名+别名
User_Alias HSD=GL,LNB,WC
Cmnd_Alias CLI=/usr/bin/fdisk,/usr/bin/mount
HSD ALL=(ALL) CLI
#取消临时提权需要输入密码
GL ALL=(ALL) NOPASSWD:ALL
# 普通用户临时使用root的权限
sudo fdisk -l /dev/sda
密码操作
修改密码
# 仅root可以指定USERNAME
# root改密码,可忽略密码规则
# root改密码,不需要提供当前密码
passwd USERNAME
# 其他用户只能修改自己的密码
# 还需要提供原密码
passwd
查看密码信息
passwd -S GL
锁密码,禁止用户登录
#锁定密码,禁止用户登录
passwd -l GL
#解除锁定,放行用户登录
passwd -u GL
从stdin获取输入(仅root用户可用)
#使用标准输入方式,为用户设置密码
echo mima | passwd --stdin GL
组操作
创建组
#创建组
groupadd GROUP_NAME
将用户添加/移除组
#将用户添加到组(附加组)
gpasswd -a USER_NAME GROUP_NAME
#批量将用户添加到组(附加组)
gpasswd -M USER_NAME1,USER_NAME2 GROUP_NAME
#将用户移除此组
gpasswd -d USER_NAME GROUP_NAME
删除组
groupdel GROUP_NAME