用户管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户管理相关的知识,希望对你有一定的参考价值。
第1章 用户
1.1 用户及组配置文件:
1.1.1 /etc/passwd
存储用户信息,每一行表示一个用户信息,有多少行就表示多少个用户信息。
root : x : 0 : 0 : root : /root : /bin/bash
此文件由7个字段的数据组成,字段之间用“:”分隔,格式如下:
1用户名:2密码:3用户标识号UID:4组标识号GID:5个人资料:6主目录:7命令解释器
1.1.2 /etc/shadow
存储用户密码信息文件
old : !! : 17749 : 0 : 99999 : 7 : : :
此文件由9个字段的数据组成,字段之间用“:”分隔,格式如下:
1用户名 2 密码 3 最近改动密码的日期 4 密码不可被更动的天数 5 密码需要重新变更的天数 6 密码需要变更期限前的警告期限 7 密码过期的恕限时间8帐号失效日期 9 保留
1.1.3 /etc/group
主要存储组相关信息的文件
oldboy : x : 500 :
此文件由4个字段的数据组成,字段之间用“:”分隔,格式如下:
1组名 2组密码 3组ID(GID) 4组成员
1.1.4 /etc/gshadow
主要用来存储组密码信息
oldboy : ! : :
此文件由4个字段的数据组成,字段之间用“:”分隔,格式如下:
1组名 2组密码 3组管理员 4用户组成员
5、和创建用户相关的目录
1.1.5 /etc/skel
此目录用来存放新用户需要的所有基础环境变量文件的目录。
[[email protected] ~]$ rm -f .bash* //删除用户家目录下的环境变量后,退出
-bash-4.1$ //重新登录
1.2 useradd命令工作原理
1、不带任何参数使用添加用户时,首先读/etc/login.defs /etc/default/useradd 预先定义的规则
2、根据设置的规则添加用户,同时会向/etc/passwd /etc/group文件添加新建的用户和组但/etc/shadow /etc/gshadow也会同步生成记录
3、同时系统会根据/etc/login.defs /etc/default/useradd文件中配置的信息建立用户的家目录,并复制/etc/skel中所有隐藏的环境配置文件到新用户的家目录中,以完成对用户环境的初始化设置。
模拟故障:
1、useradd u1
2、passwd u1
3、在xshell里新开一个窗口
ssh IP地址 //执行此命令
例如 :ssh 10.10.10.30
4、弹出窗口 输入用户名和密码
5、在普通用户的家目录 ~ rm -rf .bash*
6、ls -a //发现.bash* 的文件全部删除
7、exit //退出登录
8、 ssh IP地址 //执行此命令在重新登录一次,登录后发现故障
cp /etc/skel/.bash* ~ //把/etc/skel/.bash* 下的所有.bash* 文件拷贝到 用户的家目录
Linux是一个多用户、多任务的操作系统,如果要使用系统资源,就必须向系统管理员申请一个用户,通过这个用户进入系统,通过建立不同属性的用户实现
不同的作用或权限,可以合理利用和控制系统资源。
1.3 Linux系统中用户分类:
1.3.1 管理员用户
默认是root用户,它的UID 和GID均为0,系统安装完成后自动生成的,默认通过它就可以登录系统,拥有最高的管理权限。
1.3.2 普通用户
由系统管理员root创建的,创建完成后可以登录系统,但默认无法创建、修改和删除任何管理员下的文件;UID从500-65535
1.3.3 系统用户(或虚拟用户)
安装系统后默认生成的用户,大多数不能登录系统,但它们是系统正常运行不可缺少的,它们的存在主要是为了方便系统管理,满足相应的系统进程对文件所属用户的要求;UID从 1-499
1.4 用户创建命令
1.4.1 useradd 命令创建用户
-n 不创建以用户名为名的组
-c 创建用户时,添加个人信息
-u 用户ID值,这个值必须是唯一的
-s 用户登录后使用的shell
-g 指定用户对应的组,对应的组必须在系统中存在
[[email protected] ~]# useradd agan
[[email protected] ~]# grep -w "agan" /etc/passwd
agan:x:504:504::/home/agan:/bin/bash
[[email protected] ~]# grep -w "agan" /etc/group
agan:x:504:
注:创建用户的同时,并创建了一个以自己为名的组
1.4.2 usermod 修改用户信息
-c 修改用户的个人信息,同useradd 的-c功能
-g 修改用户对应的用户组,同 useradd的-d功能
-s 修改用户登录后使用的shell名称,同useradd的-s功能
-u 修改用户的uid ,同useradd 的-u功能
-l 修改用户的名称
usermod -l u1 agan6
新名 已存在的名
1.4.3 userdel 删除用户
-f 强制删除用户
-r 删除用户的同时,删除与用户相关的所有文件(包含邮箱信息)
1.4.4 修改用户密码命令 passwd
--stdin //从标准输入读取密码字符串
一条命令非人工交互设置密码(企业使用技巧)
[[email protected] ~]# echo "123456" | passwd --stdin u1
Changing password for user u1.
passwd: all authentication tokens updated successfully.
注:这个命令在工作中批量设置密码时很有用
批量更新用户的密码
[[email protected] gj]# chpasswd //命令输入完,直接回车
root:123456 //格式 用户名:密码,用户必须存在才可以,一行一个用户
u1:123456
u2:654321 //输入完成后,直接ctrl+D 结束输入
注:此命令有一个bagel,当一行输入错误后,不能返回修改。
当使用useradd 命令批量创建用户后,可以使用chpasswd 命令批量设置密码或批量修改密码。
把用户和密码字符串放到文件里执行批量改密码
[[email protected] gj]# cat passwd.txt
u1:123
u2:321
u3:123
[[email protected] gj]# chpasswd < passwd.txt
su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码。
su 切换用户却不切换工作环境 , su - 同时切换用户与工作环境
su的缺点造就了sudo的诞生
由于用户通过 su root 命令直接获取root权限,从而造成用户的权限太大,也就可能给系统造成危险。
为了既保证系统的安全又可以执行相应命令,sudo 也就以此诞生。
sudo作用:通过配置文件来限制用户的权限 ,可以让普通用户在执行指定的命令或程序时,拥有超级用户的权限。
sudo的工作过程如下:
1,当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
2,确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
3,若密码输入成功,则开始执行sudo后续的命令
4,root执行sudo时不需要输入密码(因为sudoers文件中有配置root ALL=(ALL) ALL这样一条规则)
给普通用户u1提权,让普通用户可以查看root用户的家目录;普通用户可以使用useradd命令,创建新用户
1) useradd u1
2) visudo=vi打开/etc/sudoers文件 或 vim /etc/sudoers
注:visudo会检查内部语法,避免用户输入错误信息,所以我们一般使用visudo,编辑此文件要用root权限
3) 编辑文件的第98行,编辑完成后,wq! 强制保存退出
root ALL=(ALL) ALL
u1 ALL=(ALL) /bin/ls,/usr/sbin/useradd
4)使用u1 用户登录测试
sudo useradd u11 //可成功创建用户,证明提权成功
sudo ls /root //可查看root的家,证明提权成功
5) sudo -l //-l 参数是列出当前用户可执行的命令,但只有在sudoers文件里的用户才能使用该选项。
1.4.5 w命令
用于显示目前登入系统的用户信息。
单独执行 w 指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
w –h
不打印头信息;
1.4.6 id命令
查看用户的UID 、GID
[[email protected] /]# id user6
uid=8897(user6) gid=8899(z11) groups=8899(z11)
[[email protected] /]# id -g user6
8899
[[email protected] /]# id -G user6
8899
[[email protected] /]# id -u user6
8897
1.4.7 last命令
用了显示用户登录情况,以下是直接显示固定行数的记录:
lastlog 命令 显示linux中所有用户最近一次远程登录的信息
第2章 用户组
Linux系统中的用户组(group)就是具有相同特征的用户的集合;
有时我们需要让多个用户具有相同的权限,就要创建组;
将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段;
一个用户可以加入到多个组。
2.1 添加用户组命令 groupadd
-g gid 指定用户组的GID,GID唯一不能为负数,如果不指定GID从500开始
-f 新增一个组,强制覆盖一个已存在的组,GID、组成员不会改变。
添加组z11,查看添加后的组信息
[[email protected] ~]# groupadd z11
[[email protected] ~]# grep "z11" /etc/group
z11:x:8895:
[[email protected] ~]# tail -1 /etc/group
z11:x:8895:
2.2 gpasswd 将已存在的用户加入到组中的命令
-a:添加一个用户到组,可以追加到组
-M:添加多个用户到组,覆盖之前的组成员
-d:从组删除用户
把user1用户添加到z1,并且查看是否添加成功
[[email protected] gj]# groupadd z1
[[email protected] gj]# useradd user1
[[email protected] gj]# gpasswd -a user1 z1
Adding user user1 to group z1
[[email protected] gj]# grep "z1" /etc/group
z1:x:8896:user1
-a选项只能添加一个用户,需要同时添加多用户时,使用-M参数
同时添加user2、user3用户到z1组(先创建user2、user3用户)
[[email protected] gj]# gpasswd -M user2,user3 z1
[[email protected] gj]# grep "z1" /etc/group
z1:x:8896:user2,user3
注:使用-M参数添加多个用户时,多用户之间使用逗号分割;添加批量用户时,先使用-a参数,在使用-M参数,就会覆盖之前添加过的用户;所以添加多用户时,先使用-M 参数。
将user2用户从组中删除
[[email protected] gj]# gpasswd -d user2 z1
Removing user user2 from group z1
[[email protected] gj]# grep "z1" /etc/group
z1:x:8896:user3
2.3 修改组信息的命令 groupmod
-n 修改组名
-g 修改GID
groupmod -n 新名 旧名
groupmod -g 8888 dir
修改z1组的GID
[[email protected] gj]# grep "z1" /etc/group
z1:x:8896:user3
[[email protected] gj]# groupmod -g 8888 z1
[[email protected] gj]# grep "z1" /etc/group
z1:x:8888:user3
修改z1组的组名为newz1
[[email protected] gj]# grep "z1" /etc/group
1:x:8888:user3
[[email protected] gj]# groupmod -n z1new z1
[[email protected] gj]# grep "z1" /etc/group
z1new:x:8888:user3
2.4 groupdel 删除组的命令
删除组,删除组后,用户名依然存在
附加命令: 查看用户属于到哪些组,使用命令:groups
groups 用户名
[[email protected] gj]# groups user1
user1 : user1 z2
批量创建用户:
创建一个文件,此文件的扩展名必须为*.sh
vim aa.sh
#!/bin/bash
for ((i=1;i<=10;i++));
{
useradd gj$i
}
echo "批量用户成功创建完成啦!!!"
2、sh aa.sh
3、查看脚本是否成功
ls /home
注:如果在home里看到,批量创建的用户,代表成功
批量创建30个用户,并为30个用户批量设置密码,以脚本形式。
以上是关于用户管理的主要内容,如果未能解决你的问题,请参考以下文章