Linux 用户管理

1.用户管理基本概念

        用户在操作系统中是非常重要的,我们登录系统、访问共享文件夹等都需要用户进行验
证。所以,掌握管理用户的知识是非常有必要的。
        说到用户,我们会提到两个名词:账户信息和密码信息。
1) 账户信息:以QQ为例,可以理解为QQ号码、QQ签名、QQ中填写的个人资料等。
2)密码信息:以QQ为例,就是登录QQ的密码。
用户的账户信息是存储在/etc/passwd中的,在此文件中一行一个用户信息,各字段 用“:”隔开,如图
这里分七个字段7个字段字段作用如下:
  1. 用户名
  2. 原来此处用于存储用户的密码,因为安全性问题,这里同一用x作为占位符。
  3. 用户的UID,每个用户都会有一个user id ,简称uid。root的uid位0
  4. 用户的GID,每个组也都会有一个greoup id,简称位GID。
  5. 用户的描述信息
  6. 用户的家目录
  7. 用户的shell

1)上面的命令可以通过 “getent passwd 用户名” 来获取

[root@red01 ~]# getent passwd blab
blab:x:1001:1001::/home/blab:/bin/bash
2)用户的密码信息存储在 /etc/shadow 中
[root@red01 ~]# grep blab /etc/shadow
blab:$6$VrkrYKXUOLGbURMI$ml7v2wf0iuaG.ipwjS/xwH9nDlHySKOOtItOXcyEat6FV9Y.6dQzUOzsumNjux8rGfuYTZXp.oTK3612/uQwb/:19689:0:99999:7:::

3)上面第一个和第二个冒号之间的斜体字局势被加密后的密码。上面的信息也可以通过 “getent shadow 用户名” 来获取

[root@red01 ~]# getent shadow blab
blab:$6$VrkrYKXUOLGbURMI$ml7v2wf0iuaG.ipwjS/xwH9nDlHySKOOtItOXcyEat6FV9Y.6dQzUOzsumNjux8rGfuYTZXp.oTK3612/uQwb/:19689:0:99999:7:::

4)判断一个用户是否存在,可以使用 “id 用户名” 命令

[root@red01 ~]# id tom
id: “tom”:无此用户

 这里tom用户不存在,则显示无此用户。如果用户存在,则显示用户信息

[root@red01 ~]# id tom
uid=1002(tom) gid=1002(tom) 组=1002(tom)
三个字段作用如下:
  1. 显示用户的uid信息
  2. 显示用户的gid信息
  3. 显示用户加入组的gid信息

如果id后面没有跟用户,则显示当前用户自己的信息

2.管理用户

管理用户包括创建用户和修改用户属性
1.创建用户

利用useradd命令可以创建用户,useradd中常用的选项包括8种。

1)-d:指定用户的加目录,默认为/home/用户名

2)-m:创建家目录,这是默认选项,一般不用指定

3)-M:不为用户创建家目录。即创建好用户之后没有“/home/用户名” 。

4)-s:指定用户的shell,默认为/bin/bash

5)-c:用来指定备注信息,不指定则为空

6)-u:指定用户的uid

7)-g:默认情况下,创建用户时会创建一个同名组。例如,创建tom用户,则会创建一 个tom组,然后把 tom用户加人 tom组中。如果指定了-g root,则创建用户时直接把tom 加入root组,就不会再创建tom组,此时 tom只属于一个组。

8)-G:指定附属组,即把用户加人一个额外的组,此时 tom属于两个组。 如果同时指定-g和-G选项,如-g root-G users,这里的意思是不再为tom创建命名组,直接 加入root组,同时再额外地加入users组,此时tom 就属于两个组,即root和users组。

2.实例:创建用户
1)创建redhat用户
[root@red01 ~]# useradd -d /redhat -s /sbin/nologin -c "Im redhat" -u 2001 -g root -G users redhat

2)现在查看Redhat用户的属性

[root@red01 ~]# grep redhat /etc/passwd
redhat:x:2001:0:Im redhat:/redhat:/sbin/nologin

3)可以看到这里redhat用户的属性完全是按照我们的要求创建出来的。查看密码信息

[root@red01 ~]# grep redhat /etc/shadow
redhat:!!:19689:0:99999:7:::

4)因为我们创建用户时,并没有指定用户的密码,所以这里密码为空。当我们创建用户时,没有给这个用户设置密码,则这个用户处于被锁定状态,即不能登录

[root@red01 ~]# passwd -S redhat 
redhat LK 2023-11-27 0 99999 7 -1 (密码已被锁定。)

5)现在为Redhat用户设置密码

[root@red01 ~]# passwd redhat 
更改用户 redhat 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

6)再次查看用户的状态

[root@red01 ~]# passwd -S redhat 
redhat PS 2023-11-27 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

7)这里显示了用户已经设置了密码,查看密码信息

[root@red01 ~]# grep redhat /etc/shadow
redhat:$6$AOcyJvJOlpZOaV/t$Z6ZyhvlwQSlTyGsWCN.pFPao/sYOv8vcqqV9mLummFqKISKUshChpMWZi6tFRsmD/kk3ero29JRPfSVacDhEy1:19689:0:99999:7:::

8)这里已经有了密码,但是现在用户仍然时不能登录的,所以用su命令切换到root用户。

[root@red01 ~]# su - redhat 
This account is currently not available.
        这是因为tom用户的shell被设置为了/sbin/nologin,任何用户的shell 被设置
为/sbin/nologin,则此用户是不能登录系统的。那么,创建此用户的意义何在?很多时候我
们搭建了服务,如用samba共享了一个目录,希望其他主机来访问此共享目录时不能以匿名
用户访问,必须输入相关的用户名和密码,但又不想让他能登录系统,这种情况下就可以用到
了。
3.修改用户属性
        如果想修改用户属性,可以使用usermod命令。usermod命令所能用到的选项与
useradd是差不多的,下面讲最常见的5个选项。
  • -c:修改注释信息
  • -s:修改shell信息
  • -d:修改家目录
  • -L:锁定用户
  • -U:解锁用户

1.吧redhat的shell改成 /bin/bas,并把备注信息改成hello redhat

[root@red01 ~]# usermod -s /bin/bash -c "hello redhat" redhat 
[root@red01 ~]# grep redhat /etc/passwd        //查看账号是否被修改
redhat:x:2001:0:hello redhat:/redhat:/bin/bash    //已修改成/bin/bash
1.锁定用户
[root@red01 ~]# usermod -L redhat     //锁定用户
[root@red01 ~]# passwd -S redhat     //查看账号是否锁定
redhat LK 2023-11-27 0 99999 7 -1 (密码已被锁定。)

1)锁定用户,使用root用户是可以用su命令切换过去的,但是其他用户是不能用su命令切换过去

[root@red01 ~]# su - redhat 
[redhat@red01 ~]$ exit
注销

2)再打开一个终端,这个终端是以luo用户登录的,然后通过su命令切换到root用户

[luo@red01 ~]$ su - redhat 
密码:
su: 鉴定故障
[luo@red01 ~]$ 

可以看到,luo用户不能用su命令切换过去,提示为鉴定故障

2.解锁用户

1)如果要解锁用户,可以使用usermod -U 命令,下面把redhat用户解锁

[root@red01 ~]# usermod -U redhat 
[root@red01 ~]# passwd -S redhat 
redhat PS 2023-11-27 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

2)在第二个终端中luo用户用su命令切换到redhat用户

[luo@red01 ~]$ su - redhat 
密码:
[redhat@red01 ~]$ id redhat 
uid=2001(redhat) gid=0(root) 组=0(root),100(users)
[redhat@red01 ~]$ pwd
/redhat
[redhat@red01 ~]$ exit
注销

此时其他用户是可以正常切换的。

3.修改家目录

1)前面已经看到了,redhat用户的家目录设置为/redhat,现在想把家目录改成/home/redhat

[root@red01 ~]# usermod -d /home/redhat redhat
[root@red01 ~]# grep redhat /etc/passwd
redhat:x:2001:0:hello redhat:/home/redhat:/bin/bash

2)可以看到,redhat用户的家目录已经设置为了 /home/redhat 。在第二个终端中测试,输入以下命令

[luo@red01 ~]$ su - redhat 
密码:
su: 警告:无法更改到 /home/redhat 目录: 没有那个文件或目录

3)这里显示无法切换到/home/redhat。因为创建用户时用户的家目录是创建在/redhat下的,但 是手动修改redhat的家目录为/home/redhat,这个家目录并没有在/home下创建,所以才会出 现刚才的问题。我们只要把原来的家目录拷贝过去即可,在第一个终端中执行如下命令。

[root@red01 ~]# cp -a /redhat/ /home/
[root@red01 ~]# ls /home/
blab  luo  redhat  tom

4)再回到第二个终端中测试

[redhat@red01 luo]$ exit
注销
[luo@red01 ~]$ su - redhat 
密码:
[redhat@red01 ~]$ pwd
/home/redhat
[redhat@red01 ~]$ exit
注销

可以看到,已经可以切换到家目录了。

4.管理组

1)所有组的信息都是存放在/etc/group中的,如果要判断一个组是否存在,可以到/etc/group中查询,例如,现在判断aaa组是否存在

[root@red01 ~]# grep aaa /etc/group
[root@red01 ~]# 
        没有任何输出,说明bob组不存在。如果想创建一个新的组,则用“groupadd 组名”命
令。例如,现在要创建aaa组,命令如下。
[root@red01 ~]# groupadd aaa 
[root@red01 ~]# grep aaa /etc/group
aaa:x:1002:

2)如果要删除某个组,则用 “groupdel 组名” 例如,现在要删除aaa组

[root@red01 ~]# groupdel aaa
[root@red01 ~]# grep aaa /etc/group
[root@red01 ~]# 

3)创建组时,可以通过-g选项指定gid信息,例如,创建aaa组,组id设置为3000,命令如下

[root@red01 ~]# groupadd -g 3000 aaa
[root@red01 ~]# grep aaa /etc/group
aaa:x:3000:

4)再次删除aaa组

[root@red01 ~]# groupdel aaa

5)查看用户属于哪个组,可以通过“groups 用户” 来查看。例如,查看redhat属于哪个组

[root@red01 ~]# groups redhat 
redhat : root users

6)可以看到,redhat属于root和users 组。如果想把用户继续添加到其他组中,可以通 过“gpasswd -a用户组”来添加。例如,现在要把redhat 加入bin组,命令如下。

[root@red01 ~]# gpasswd -a redhat bin
正在将用户“redhat”加入到“bin”组中
[root@red01 ~]# groups redhat 
redhat : root bin users

可以看到,redhat已经属于bin组了

7)要是想把用户从某个组中踢出去,则通过“gpasswd -d用户组”来删除。例如,现在要 把 redhat从 bin组中删除,命令如下。

[root@red01 ~]# gpasswd -d redhat bin
正在将用户“redhat”从“bin”组中删除
[root@red01 ~]# groups redhat 
redhat : root users

可以看到,redhat用户已经不属于bin组了

111
  • 21
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值