Linux用户管理

      1.1 用户的基本概念

        用户在操作系统中是非常重要的,我们登录系统、访问共享文件夹等都需要用户进行验证。所以,掌握管理用户的知识是非常有必要的。

        说到用户,我们会提到两个名词:账户信息和密码信息。

(1)账户信息:以QQ为例,可以理解为QQ号码、QQ签名、QQ中填写的个人资料等。

(2)密码信息:以QQ为例,就是登录QQ的密码。

        用户的账户信息是存储在/etc/passwd文件中的,在此文件中一行一个用户信息,各字段用“:”隔开,如图所示。

第一个字段:用户名。

第二个字段:原来此处用于存储用户的密码,因为安全性问题,这里统一用x作为占位符。

第三个字段:用户的UID,每个用户都会有一个UID,root的UID为0。

第四个字段:用户的GID,每个组也都会有一个GID。

第五个字段:用户的描述信息。

第六个字段:用户的家目录。

第七个字段:用户的shell。

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

[root@RedHat ~]# getent passwd bdqn
bdqn:x:1000:1000:bdqn:/home/bdqn:/bin/bash
[root@RedHat ~]#

用户的密码信息存储在/etc/shadow中,如下所示。

[root@RedHat ~]# grep bdqn /etc/shadow
bdqn:$6$Elfb.xnt8eXjXJan$ARTj8CGxgw29mSfa9YGErDhidygfgukRRHmqdFgOI2kSXqy2VVUH2ETOhaS2fcjLysQ2yb0jrjc9gH3rwQpt..::0:99999:7:::
[root@RedHat ~]#

上面第一个和第二个冒号之间的斜体字就是被加密后的密码。上面的信息也可以通过“getent shadow 用户名”来获取,如下所示。

[root@RedHat ~]# getent shadow bdqn
bdqn:$6$Elfb.xnt8eXjXJan$ARTj8CGxgw29mSfa9YGErDhidygfgukRRHmqdFgOI2kSXqy2VVUH2ETOhaS2fcjLysQ2yb0jrjc9gH3rwQpt..::0:99999:7:::
[root@RedHat ~]#

判断一个用户是否存在,可以使用“id 用户名”命令,如下所示。

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

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

第一字段:显示用户的UID信息。

第二字段:显示用户的GID信息。

第三字段:显示用户的GID信息。

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

[root@RedHat ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@RedHat ~]#

1.2 管理用户

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

1.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组。

下面创建tom用户,如下所示。

[root@RedHat ~]# useradd -d /tom -s /sbin/nologin \
> -c "Im tom" -u 2000 -g root -G users tom
[root@RedHat ~]#

这里创建一个tom用户,因为命令太长,所以最后加一个反斜线后按【Enter】键,这里
虽然换行了,但是系统会认为仍然是一行的。

现在查看tom用户的属性,如下所示。

[root@RedHat ~]# grep tom /etc/passwd
tom:x:2000:0:Im tom:/tom:/sbin/nologin
[root@RedHat ~]#

可以看到,这里tom用户的属性完全是按照我们的要求创建出来的。

查看tom的密码信息,如下所示。

[root@RedHat ~]# grep tom /etc/shadow
tom:!!:19696:0:99999:7:::
[root@RedHat ~]#

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

[root@RedHat ~]# passwd -S tom
tom LK 2023-12-05 0 99999 7 -1 (密码已被锁定。)
[root@RedHat ~]#

现在为 tom用户设置密码,可以使用如下命令。

[root@RedHat ~]# passwd tom
更改用户 tom 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@RedHat ~]#

这里把密码设置为haha001,或者使用如下命令。

[root@RedHat ~]# echo haha001 | passwd --stdin tom
更改用户 tom 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@RedHat ~]#

 这里显示了用户已经设置了密码。查看密码信息,如下所示。

[root@RedHat ~]# grep tom /etc/shadow
tom:$6$8ajcUW2HvpeukuI5$hDCb2LPmalSQlMqnnah/BeOkVhgXTEUgbdbR3YR.R7mzy/IiaqpZZXmQsh8YEMIVgb2B4k1hijXbMPtt3UNq10:19696:0:99999:7:::
[root@RedHat ~]#

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

[root@RedHat ~]# su - tom
This account is currently not available.
[root@RedHat ~]#

这是因为tom用户的shell被设置为了/sbin/nologin,任何用户的shell 被设置为/sbin/nologin,则此用户是不能登录系统的。那么,创建此用户的意义何在?很多时候我们搭建了服务,如用samba共享了一个目录,希望其他主机来访问此共享目录时不能以匿名用户访问,必须输入相关的用户名和密码,但又不想让他能登录系统,这种情况下就可以用到了。

1.2.2 修改用户的属性

        如果想修改用户属性,可以使用usermod命令。usermod命令所能用到的选项与useradd时差不多的,下面讲最常见的5个选项。

(1)-c:修改注释信息。

(2)-s:修改shell信息。

(3)-d:修改家目录。

(4)-L:锁定用户。

(5)-U:解锁用户。

把tom的shell改成/bin/bash,并把备注信息改成hello tom,如下所示。

[root@RedHat ~]# grep tom /etc/passwd
tom:x:2000:0:Hello Tom:/tom:/bin/bash
[root@RedHat ~]#

1. 锁定用户

[root@RedHat ~]# usermod -L tom
[root@RedHat ~]# passwd -S tom
tom LK 2023-12-05 0 99999 7 -1 (密码已被锁定。)
[root@RedHat ~]#

锁定用户,使用root用户是可以用su命令切换过去的,但是使用其他用户是不能用su命令切换过去的,如下所示。

[root@RedHat ~]# su - tom
[tom@RedHat ~]$ exit
注销
[root@RedHat ~]#

再打开一个终端,这个终端中是以bdqn用户登录的,然后通过su命令切换到tom用户,如下所示。 

[bdqn@RedHat ~]$ su - tom
密码:
su: 鉴定故障
[bdqn@RedHat ~]$

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

2. 解锁用户

如果要解锁用户,可以使用usermod -U命令,如下所示。

[root@RedHat ~]# usermod -U tom
[root@RedHat ~]# passwd -S tom
tom PS 2023-12-05 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@RedHat ~]#

在第二个终端bdqn用户用su命令切换到tom用户。

[bdqn@RedHat ~]$ su - tom
密码:
[tom@RedHat ~]$ whoami
tom
[tom@RedHat ~]$ pwd
/tom
[tom@RedHat ~]$ exit
注销
[bdqn@RedHat ~]$

3. 修改用户的家目录

前面已经看到了,tom用户的家目录设置为/tom,现在想把家目录改成/home/tom,命令如下。

[root@RedHat ~]# usermod -d /home/tom tom
[root@RedHat ~]# grep tom /etc/passwd
tom:x:2000:0:Hello Tom:/home/tom:/bin/bash
[root@RedHat ~]#

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

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

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

[root@RedHat ~]# cp -a /tom/ /home/
[root@RedHat ~]# ls /home/
bdqn  tom
[root@RedHat ~]#

再回到第二个终端中测试,输入如下命令。

[tom@RedHat bdqn]$ exit
注销
[bdqn@RedHat ~]$ su - tom
密码:
[tom@RedHat ~]$ pwd
/home/tom
[tom@RedHat ~]$ exit
注销
[bdqn@RedHat ~]$

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

4. 管理组

所有组的信息都是放在/etc/group中的,如果要判断一个组是否存在,可以到/etc/group中查询。例如,现在判断bob组是否存在,命令如下。

[root@RedHat ~]# grep bob /etc/group
[root@RedHat ~]#

没有任何输出,说明bob组不存在。如果想创建一个新的组,则用“groupadd 组名”命令。例如,现在要创建bob组,命令如下。

[root@RedHat ~]# groupadd bob
[root@RedHat ~]# grep bob /etc/group
bob:x:1001:
[root@RedHat ~]#

如果要删除某个组,则用“groupdel 组名”命令。例如,现在要删除bob组,命令如下。

[root@RedHat ~]# groupdel bob
[root@RedHat ~]# grep bob /etc/group
[root@RedHat ~]#

创建组时,可以通过-g选项来指定GID信息。例如,创建bob组,组id设置为3000,命令如下。

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

 再次删除bob组。

[root@RedHat ~]# groupdel bob
[root@RedHat ~]#

查看用户属于哪个组的,可以通过“groups 用户”来查看。例如,查看tom属于哪个组,命令如下。

[root@RedHat ~]# groups tom
tom : root users
[root@RedHat ~]#

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

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

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

  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值