基础知识
1.uid的一个范围的分类
0 超级用户
1~200 系统用户(由系统默认创建)
201-999 系统用户(由用户手工创建)
系统用户的作用: linux操作系统中的程序 需要一个特定的系统用户进行运行
1000+ 普通用
2.用户信息文件 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码x表示为密码占位符:uid:gid:备注信息:用户家目录:用户第一次登录所执行的命令
3.用户密码信息文件 /etc/shadow
root:*:*:0:99999:7:*:*:*
用户名称:密码(密文):最近一次修改密码的时间从1970年起直到今天:最小修改密码的时间第一次修改密码后需要经过天才能在修改密码0任何时候都可以修改密码:最大修改密码的时间99999密码永远不会过期:过期提醒时间:账户宽限期时间:账户密码过期时间:未做任何定义留给Linux日后发展使用
4.组配置文件 /etc/group
root:x:0:
组名称:组密码:Gid:组成员
5.组密码配置文件 /etc/gshadow
nginx:!::
组名称:密码:组管理员:组成员
6.用户与组之间的关系
一对一:一个用户对应一个组
一对多:一个用户对应多个组
多对一:多个用户对应一个组
多对多:多个用户对应多个组
7.基本组和附加组概念
基本组: 实际上就是创建用户后的默认组
附加组: 当基本组无法满足权限的授予,可以用户添加至附加组中成为组成员,一个用户可以添加至多个组中
8.基本组与附加组之间的区别
基本组:当有一个用户是其对应的基本组那个该组无法删除 先删除用户就可以删除
附加组:可以随意删除组
用户管理
用户创建
useradd [选项] [用户名]
选项:
-u #指定用户uid
-g #指定用户组或者gid
-G #指定附加组 将用户添加至其他组内成为其他组的组成员
-s #指定登录shell
-c #指定备注信息
-d #指定用户家目录
-r #创建系统用户 uid 为201-999 默认没有家目录 随机生成uid 和M有区别
-M #不创建家目录
创建一个test1用户并且指定用户的UID为8888
# useradd -u 8888 test1
创建一个test2用户并且指定该用户基本组为test2
# useradd -g test2 test2
将test3用户加入至devops组中成为组成员
# useradd -G devops test3
将不允许test4用户登录到操作系统
# useradd -s /sbin/nologin test4
将不允许test4用户登录到操作系统并且其对应的备注信息为禁止登录该用户
# useradd -s /sbin/nologin -c '禁止登录用户' test4
创建test7用户指定用户家目录为/abc
# useradd -d /abc test7
创建系统用户test5 1.无需登录 2.无需家目录
# useradd -rs /sbin/nologin test5
创建系统用户test6 并且指定用户的uid为666 gid666
# 1.groupadd -g 666 test6 2.useradd -u 666 -g 666 -s /sbin/nologin -M test6
用户修改
usermod [选项] [用户名]
选项:
-u #修改用户uid
-g #修改用户组或者gid
-G #修改附加组
-s #修改登录shell
-c #修改备注信息
-d #修改用户家目录
-m #移动家目录
-L #锁定用户
-U #解锁用户
修改test用户的uid为1888
# usermod -u 1888 test
修改用户组,将用户组改为nrjtest
# usermod -g nrjtest nrj
将test用户添加到devops,dev
# usermod -G devops,dev test
修改用户登录shell不允许登录
# usermod -s /sbin/nologin test
将test用户备注信息修改为允许登录
# usermod -c '允许登录' test
移动家目录,将test用户的家目录移动至/opt目录下
# 1.usermod -d /opt/test test 2.mv /opt/test /opt (修改家目录,但是还需要手动mv)
移动家目录,将test用户的家目录移动至/opt目录下
# usermod -md /opt/test test
锁定test3用户
# usermod -L test3
解锁test3用户
# usermod -U test3
用户删除
userdel [选项] [用户名]
选项:
-r #删除用户家目录,不加该选项只删除用户,家目录并不删除
删除test用户及家目录
# userdel -r test
组管理
增加组
groupadd [选项] [gid] [组名]
选项:
-g #指定gid
增加一个dev组
# groupadd dev
增加一个gid为666的组
# groupadd -g 666 test6
删除组
groupdel [组名]
删除test6这个组
# groupdel test6
修改组
groupmod [选项] [gid] [组名]
选项:
-g #修改gid
将test6的gid改成777
# groupmod -g 777 test6
扩展
将用户批量添加到一个附加组
方法一
groupadd devops
useradd nrj1
useradd nrj2
useradd nrj3
useradd -G devops nrj1
useradd -G devops nrj2
useradd -G devops nrj3
方法二
groupadd devops
useradd nrj1
useradd nrj2
useradd nrj3
usermod -G devops nrj1
usermod -G devops nrj2
usermod -G devops nrj3
方法三
gpasswd
-a 将用户添加到组中
-d 将用户从组中移除
-M 批量添加用户到组中
gpasswd -M nrj1,nrj2,nrj3 devops
ps:再次使用会将之前批量添加的去掉
锁定用户的三种方法
方法一
usermod -s /sbin/nologin test #锁定
usermod -s /bin/login test #解锁
方法二
usermod -L test #锁定
usermod -U test #解锁
方法三
chage -E ‘2088-12-27’ test #锁定
chage -E ‘2023-12-27’ test #解锁
免交互式修改密码
echo 密码 | passwd --stdin 用户名
使用当前用户以其他用户身份执行命令
su - 用户名 -c "命令"