用户管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户管理相关的知识,希望对你有一定的参考价值。

第1章 用户

1.1 用户及组配置文件:

1.1.1 /etc/passwd

存储用户信息,每一行表示一个用户信息,有多少行就表示多少个用户信息。

root : x : 0 : 0 : root : /root : /bin/bash

此文件由7个字段的数据组成,字段之间用分隔,格式如下:

1用户名:2密码:3用户标识号UID4组标识号GID5个人资料: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组密码 3IDGID 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创建的,创建完成后可以登录系统,但默认无法创建、修改和删除任何管理员下的文件;UID500-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 指定用户组的GIDGID唯一不能为负数,如果不指定GID500开始

-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个用户批量设置密码,以脚本形式。


以上是关于用户管理的主要内容,如果未能解决你的问题,请参考以下文章

MySQL的用户管理与权限管理

MySQL的用户管理与权限管理

Linux学习之用户管理命令与用户组管理命令(十五)

怎么在我的电脑里添加管理员用户

18. 用户与权限管理

金蝶KIS软件用户管理及权限授权