账户和组管理

目录

1. 账户和工作组的分类

1.1. 用户分为三类:

1.2. 工作组分析两类:

1.3. 账户和工作组的配置文件

1.3.1. 用户账号文件

1.3.2. 用户密码文件

1.3.3. 工作组账号文件

2. 用户管理

2.1. 添加新用户

2.1.1例:

2.2. 修改账户信息

2.3. 账号设置密码

例:

注意:

2.4. 删除账号

例:

2.5 账户切换

2.6. 控制用户对系统命令的使用权限(sudo )

        2.6.1. 作用

2.6.2. sudo的执行流程如下:

2.6.3. 配置/etc/sudoers文件方式

2.6.4. 管理员提权

3. 工作组管理

3.1. 创建工作组

3.2. 修改工作组

3.3. 添加/删除组成员

3.4. 删除工作组

4. 查看用户登录系统的情况

4.1. users命令

4.2. last命令

4.3. lastlog命令

4.4. w命令

结果分析:

4.5. who命令

结果分析: 

命令扩展:


1. 账户和工作组的分类

1.1. 用户分为三类:

        超级账户——账户名为root,它具有一切权限,只有进行系统维护(例如:建立用户等)或其他必要情形下才 用超级用户登录,以避免系统出现安全问题。

        系统账户——是Linux系统正常工作所必需的账户,主要为了满足相应的系统进程对文件属主的要求而建立 的,如:bin、daemon、adm、sshd等,注意:系统账户不能登录,用于进程访问

         普通用户——是为了让使用者能够使用Linux系统资源而建立的,大多数用户属于此类。

1.2. 工作组分析两类:

         基本组(私有组):新建立账户时,若没有指定账户所属的工作组,会建立和账户名相同的组

         扩展组(公有组):可以容纳多个用户,组中的账户都具有组所拥有的权利。

1.3. 账户和工作组的配置文件

        账户名、密码、工作组信息和工作组密码存储在以下配置文件中

账户和组管理_第1张图片

1.3.1. 用户账号文件

        /etc/passwd 是一个文本文件,用于定义系统的账号,由于所有账户都对passwd有读权限,所以该文件中 只定义用户账号,而不保存口令。

/etc/passwd 中的文件内容及含义

        root:x:0:0:root:/root:/bin/bash
        账户名密码(加密后的代号)账户编号(uid)工作组的编号 组id(jid)注释家目

        录账户在登陆时所用到的解释器名称(shell解释器)

/etc/passwd文件中字段说明:

         由7个字段组成,字段之间用“:”分隔,意义:账号名:密码:UID:GID:个人资料:主目录:Shell

         账号名:用户登录Linux系统时使用的名称。

        密码:以前是以加密格式保存密码的位置,现在密码保存在/etc/shadow文件中,此处只是密码占位 符“x”或“*”。若为“x”,说明密码经过了shadow的保护。

         UID:账户的ID值,是一个数字标识,相当于账户的“身份证编号”,具有唯一性

                 root账户UID——0

                系统账户的UID——1~999

                普通账户的UID——≥1000

        注意:普通账户从1000开始编号,连续编号,即使系统管理员某些账户号码未使用,普通账户 也不可使用

        GID:基本组的ID值,用来区分不同的工作组,相同的组具有相同的GID。

        个人资料:注释信息,可以记录账户的完整姓名、地址、办公室电话、家庭电话等个人信息。

         家目录:类似Windows 的个人目录,通常是/home/账户名

         Shell:定义用户登录后激活的Shell,默认是Bash Shell

id 命令

        作用:查看账户的UID、GID等信息

        格式:   id     账户名

1.3.2. 用户密码文件

        /etc/shadow存储密码加密后的密文,又称为“影子文件”,该文件为了保证了账户密码的安全性只有 root 账户拥有读权限,注意:若该文件权限发生变化,需要留心恶意攻击

[root@server ~]# ll /etc/shadow

----------. 1 root root 1130 4月 26 14:39 /etc/shadow

[root@server ~]# head -1 /etc/shadow

root:$6$u6dOBCaz335byzFq$WcZK5t3EAHzCxy0AP8rscP/CrM/SZLzZZDCzkE2T6yiVpnSz92iWt/wd4j L9oBfFglbVrdhsUmRCVfWKTqNdv/::0:99999:7:::

/etc/shadow文件中的每行9个字段的含义为:

 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

1.3.3. 工作组账号文件

/etc/group文件存储每个组工作组信息

[root@server ~]# ll /etc/group

-rw-r--r--. 1 root root 810 4月 26 14:39 /etc/group

[root@server ~]# head -1 /etc/group

root:x:0:

字段说明:

账户和组管理_第2张图片

2. 用户管理

2.1. 添加新用户

         格式:

                     useradd     -参数     账户名

        参数:

                 -c 注释信息:设置相关的说明信息,如,:真实姓名、邮箱地址等。

                 -d:目录:设定账户的家目录(默认为/home/用户名)。

                 -e YYYY-MM-DD:设置用户的失效日期,此日期后将不能使用该账号。

                 -f 天数:指定密码到期后多少天账号被禁用,若指定为0,则表示账号到期后被立即

        禁用;若指定 为-1,则表示 账号过期后不被禁用(即密码永不过期)。

                 -g 组名或GID号:为账户指定所属的基本组,该组在指定时必须已存在。

                 -G:组名或GID号列表:为账户指定所属的扩展组,各组在指定时已存在,附加组可

        以有多个,组之间用“,”分隔。

                -M:不创建账户家目录。

                -N:不创建与账户名同名的基本组。

                -p:密码:指定账户的登录密码。

                -s shell名:指定账户登录后使用的Shell,默认是bash。

                -u 用户号:设置账号的UID,默认是已有账户的最大UID加1。如果同时有-o选项,则‘

        可以重复使用其他用户的标 识号。

2.1.1例:

例1:新建账户test1,查看对应配置文件和家目录

账户和组管理_第3张图片

给test设置一个密码,

账户和组管理_第4张图片

例2:新建账户test2,指定UID为2001、登录Shell为/bin/bash,账号永不过期

[root@server ~]# useradd test2 -u 2001 -s /bin/bash  -e -1 
账户和组管理_第5张图片

观察test1与test2 的密码文件区别。

例3:新建用于访问FTP的test3账户,禁止其登录且不创建家目录

[root@server ~]# useradd test3 -M -s /sbin/nologin

例4:新建账户test4,UID=3001, 工作组=test1 , 家目录=/test

[root@server ~]# useradd test4 -u 3001 -g test1 -d /test

2.2. 修改账户信息

         格式:

                usermod -参数 账户名

        参数:

                 常用参数 -c,-d,-m,-g,-G,-s,-u 等,意义与useradd命令中的参数相同

                 -l 新账户名:更改账户的名称,必须在该用户未登录的情况下才能使用

                -L:锁定(暂停)用户账户,使其不能登录使用

                -U:解锁用户账户

例1:将用户test1的名称修改为TEST1,并暂停使用该账号

[root@server ~]# usermod test1 -l TEST1 -L

账户和组管理_第6张图片

例2:将上例账户test4的家目录移至/home/test4目录下

[root@server ~]# mkdir /home/test4
[root@server ~]# usermod  test4 -d /home/test4

账户和组管理_第7张图片

2.3. 账号设置密码

         原则:

                 Linux的账户必须设置密码后,才能登录系统

         格式:       passwd - 参数 账户名

         参数:

                -d:清空指定用户的口令,与未设置口令的账户不同,未设置口令的账户无法登录系统,而口令为空的账户可以。

                 -e:使用户的账号密码立即过期,强迫用户下次登录时必须修改口令。

                 -i:口令过期后多少天停用账户。

                 -l:锁定(停用)用户账户。

                 -n:指定口令的最短存活期。

                 -x:指定密码的最长使用期限。

                -u:解锁用户账户。

例:

        例1:设置root账户密码

[root@server ~]# passwd root

        更改用户 root 的密码 。

        新的密码:

        无效的密码: 密码少于 8 个字符

        重新输入新的密码:

        passwd:所有的身份验证令牌已经成功更新。

例2:锁定账户test4,尝试登录

[root@server ~]# passwd -l test4

账户和组管理_第8张图片

注意:

交互式的为用户设置密码:       

         密码不能为空

        密码不要写成回文

        可以使用以下命令设置密码

        echo 密码 | passwd --stdin 用户名

        echo 密码 | passwd --stdin 用户名 > /dev/null # 无信息提示(黑洞)

--stdin:从标准输入来接收

修改test4 的密码:

只有 root 用户才能指定用户名:

[root@server ~]# useradd test5

交互式的为test5 设置密码:

[root@server ~]# passwd test5

        更改用户 test5 的密码 。

        新的密码:

        无效的密码: 密码少于 8 个字符

        重新输入新的密码:

        passwd:所有的身份验证令牌已经成功更新。

[root@server ~]# su test5

[test5@server root]$ passwd test5

passwd:只有 root 户才能指定用户名

非交互式的为test5 设置密码:

[root@server ~]# echo "123456" | passwd --stdin  test5 

2.4. 删除账号

        格式

                userdel         账户名        

        参数

                 -r:在删除该账户的同时,一并删除该账户对应的家目录

例:

         例:删除上例的TEST1、test2、test3、test4

[root@server ~]# userdel   -r TEST1
[root@server ~]# userdel   -r test2
[root@server ~]# userdel   -r test3
[root@server ~]# userdel   -r test4

账户和组管理_第9张图片

2.5 账户切换

         格式:   su   账户名

                       su -  账户名

2.5.1.  su和su - 命令区别:

         区别:加载的配置文件不一样

         su 切换方式加载的文件: ~/.bashrc/etc/bashrc(当前解释器shell配置文件

         su - 切换方式加载的文件: /etc/bashrc/etc/profile~/.bashrc~/.bash_profile

        注意:su - 相当于重新建立环境,若全局变量需要继续使用则不能使用su - 命令

2.5.2. 注意

        从root用户切换到任何用户不需要密码验证,而从普通用户到root或其他普通用户均需要输入目标用户的 密码且验证成功后才可切换。

2.6. 控制用户对系统命令的使用权限(sudo )

        2.6.1. 作用

        使用 sudo 命令可以提高普通用户的操作权限,使用前需要root进行配置(临时提权)

只有在管理员同意的情况下才可以进行临时提权

例:

账户和组管理_第10张图片

2.6.2. sudo的执行流程如下:

        当执行sudo提权时,需要输入自己密码来确认(root执行sudo时不需要输入密码)

        若密码输入成功,系统会去/etc/sudoers文件中查找该用户是否有执行sudo的权限

        若用户具有执行sudo的权限,便开始sudo后续接的命令;

2.6.3. 配置/etc/sudoers文件方式

         执行visudo 或 vim /etc/sudoers

[root@server ~]# visudo

        root                 ALL=(ALL)                                         ALL

        # 账户名        允许使用的主机=(以谁的身份)         可执行的命令列表

                                                                             (可以限定用户所执行的具体命令)

        #说明:ALL是关键字,代表任何身份、主机或命令。

2.6.4. 管理员提权

进入文件:

        [root@server ~]# vim /etc/sudoers

        # 在命令模式输入“:100”     定位100行输入:

账户和组管理_第11张图片

修改方法:在原有的命令下面经行补充,并强制保存退出。

                 图中fox已成为准管理员

账户和组管理_第12张图片

# 需要wq!强制保存退出

[root@server ~]# su fox

[fox@server root]$ cd /root

bash: cd: /root: 权限不够

[fox@server root]$ sudo cd /root

[sudo] fox 的密码:

[fox@server root]$ pwd

/root

账户和组管理_第13张图片

3. 工作组管理

3.1. 创建工作组

         格式:

                        groupadd -参数 工作组名

        参数:

                -g GID:指定新工作组的GID,默认值是已有的最大的GID加1

                -r: 建立一个系统组账号,与-g不同时使用时,则分配一个1~999的GID

3.1.3. 示例

例1:新建工作group1,group2

root@server ~]# groupadd group1
[root@server ~]# groupadd  group2 -g  2001
[root@server ~]# tail -3 /etc/group

 

账户和组管理_第14张图片

3.2. 修改工作组

                格式:

                        groupmod -参数 工作组名

                参数:

                         -g GID——为用户组指定新的组标识号

                         -n 新用户组——将用户组的名字改为新名字修改用户组的名称和用户组的GID值

3.2.3. 示例

        例:将组group1的GID修改为3000,组名修改为prod1

账户和组管理_第15张图片

3.3. 添加/删除组成员

格式

                        gpasswd -参数 账户 工作组

 参数   (注:该命令只有管理员可以使用)

                -r : 删除组密码

                 -a : 把用户加入组

                -d : 把用户从组中删除。

                -M : 可同时添加多个用户

                -A : 给组指派管理员。

3.3.3. 示例

例:新建账户temp1、temp2后加入group2组,并指派temp1为group2工作组的管理员

[root@server ~]# useradd temp1
[root@server ~]# useradd temp2
[root@server ~]# gpasswd -a temp1 group2 

正在将用户“temp1”加入到“group2”组中
[root@server ~]# gpasswd -a temp2 group2 
正在将用户“temp2”加入到“group2”组中
[root@server ~]# gpasswd -A temp1 group2 
账户和组管理_第16张图片

3.4. 删除工作组

        注意:被删除的组若是基本组,则必须先删除引用该基本组的用户,然后再删除该基本组

格式

                groupdel 工作组名

示例

        例1:删除组prod1        [root@server ~]# groupdel prod1 

账户和组管理_第17张图片

4. 查看用户登录系统的情况

4.1. users命令

作用 :查看当前登录系统的用户

 例:

4.2. last命令

作用: 列出目前与过去登入系统的用户相关信息,该命令默认会去读取/var/log/wtmp文件,并把该文件记录的 登入系统的用户名单全部显示出来

 例:

账户和组管理_第18张图片

4.3. lastlog命令

作用: 查看每个账号的最近登录时间,该命令会读取/var/log/lastlog文件

例:

账户和组管理_第19张图片

4.4. w命令

作用 :显示登录到系统的用户信息

例:

账户和组管理_第20张图片

结果分析:

第一行显示当前的系统时间、开机多久、登录到系统中的用户数和系统平均负载(平均负载是指在1分钟、 5分钟、15分钟内系统负载情况)

第二行只是各个项目的说明

        USER:表示登录系统的用户

        TTY:表示用户使用的TTY名称

        FROM:表示用户从哪里登录进来

        LOGIN@:用户登录的日期和时间

        idle:表示空闲时间

        JCPU:在某段时间内所有与该终端相关的进程任务所耗费的cpu时间

        PCPU:当前活动进程使用的系统时间

        WHAT:表示当前用户执行的进程名称和选项

第三行以后,每行代表一个用户登录的信息。

4.5. who命令

作用: 显示目前登录到系统的用户,会从/var/run/utmp文件来获取信息 

例:

账户和组管理_第21张图片

结果分析: 

账户和组管理_第22张图片

命令扩展:

[root@server ~]# who -b 列出系统最近启动的日期

        system boot 2022-05-09 15:38

[root@server ~]# who -m 列出关于当前终端的信息

         root pts/0 2022-05-09 15:38 (192.168.168.1)

[root@server ~]# who am i

        root pts/0 2022-05-09 15:38 (192.168.168.1)

[root@server ~]# who am I

        root pts/0 2022-05-09 15:38 (192.168.168.1)

[root@server ~]# who -q 列出在本地系统上的用户和用户数的清单

        root                          # users=1

[root@server ~]# who -r 显示当前系统的运行级别

        run-level 3 2022-05-09 15:38

[root@server ~]# who -u 显示当前每个用户的用户名、登录终端、登录时间、终端活动、进程和主机名

         root pts/0 2022-05-09 15:38 . 1510 (192.168.168.1)

[root@nserver ~]# who -T 显示tty终端的状态,“+”表示对任何人可写,“-”表示仅对root用户或所有 者可写,“?”表示遇到终端故障

        root + pts/0 2022-05-09 15:38 (192.168.168.1)

[root@server ~]# who -w-T一样

         root + pts/0 2022-05-09 15:38 (192.168.168.1)

账户和组管理_第23张图片

你可能感兴趣的:(linux,运维,服务器)