基本功修炼之Linux-用户/组管理

195 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

用户/组管理

基本介绍

众所周知Linux系统是一个多用户多任务的操作系统,任何一个人要想使用系统资源,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统,不同的账号的权限也可以灵活进行配置,因此掌握Linux的用户是作为一个合格的开发所必须必备的技能。

新增用户

基本语法

useradd 用户名 : 新增一个用户。

常用参数

选项含义
-d指定其家目录,默认为/home目录下面新增一个跟用户名一样的文件夹
-g 组名新增用户的同时设置其所属分组(后面讲组的部分演示)

应用案例

创建一个用户zhangsan不指定home目录

[root@iZuf6dljn9u61o2livt0xqZ home]# pwd
/home
[root@iZuf6dljn9u61o2livt0xqZ home]# ls
www  xh
# 创建用户不指定目录
[root@iZuf6dljn9u61o2livt0xqZ home]# useradd zhangsan
# 可以看到不指定默认就是/home/目录下
[root@iZuf6dljn9u61o2livt0xqZ home]# ls
www  xh  zhangsan

创建一个用户lisi指定home目录为/home/lisi4

# 创建用户且指定家目录
[root@iZuf6dljn9u61o2livt0xqZ home]# useradd lisi -d /home/lisi4
# 就不会默认生成lisi了,而是我们指定的lisi4
[root@iZuf6dljn9u61o2livt0xqZ home]# ls
lisi4  www  xh  zhangsan

并且我们可以通过ls -l 查看文件是否归属刚刚创建的用户

[root@iZuf6dljn9u61o2livt0xqZ home]# ll
总用量 0
drwx------ 2 lisi     lisi     62 11月 21 19:13 lisi4
drwx------ 2 www      www      62 6月   8 2021 www
drwx------ 2 test     test     62 11月 21 16:55 xh
drwx------ 2 zhangsan zhangsan 62 11月 21 19:10 zhangsan

设置密码

我们刚刚完成了新增用户,但是是不是发现没有设置密码,对确实还是没有设置密码,设置密码也非常简单,往下看。

基本语法

passwd 用户名 : 用户设置密码。

应用案例

那么我现在就对刚刚创建的zhangsan设置密码为:123456

#输入passwd密码后会进入交互模式,直接输入想设置的密码就行了,Linux默认要把个字符,
#会提示无效,但实际上是可以设置的 但是真正的账户密码最好还是设置复杂点
[root@iZuf6dljn9u61o2livt0xqZ home]# passwd zhangsan
更改用户 zhangsan 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

测试切换账号

切换账号的命令也很简单 su username 即可。

  • 权限高的用户切换到权限低的用户,不需要输入密码就可以登录,反之需要。
  • 当需要返回原来的用户的时候使用exit或者logout即可
# 因为是root账户(权限高)切换自己创建的zhangsan(权限低)所以不需要密码
[root@iZuf6dljn9u61o2livt0xqZ home]# su zhangsan 
[zhangsan@iZuf6dljn9u61o2livt0xqZ home]$
# 用ssh 远程登录下,这样是需要输入密码的,输入123456就登录成功了
->ssh zhangsan@106.14.***.***
zhangsan@106.14.***.***'s password:
Welcome to Alibaba Cloud Elastic Compute Service !
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Mon Nov 21 19:26:53 2022
# 这已经是服务器的控制台了
[zhangsan@iZuf6dljn9u61o2livt0xqZ ~]$

查询用户

基本语法

id 用户名 : 查询用户信息。

应用案例

查询用户名为zhangsan的用户信息,执行命令后就可以看到用户的uid、gid和所属的组

[zhangsan@iZuf6dljn9u61o2livt0xqZ ~]$ id zhangsan
uid=1004(zhangsan) gid=1004(zhangsan) 组=1004(zhangsan)

删除用户

基本语法

userdel 用户名 : 删除一个用户。

常用参数

选项含义
-r连着用户的家目录一起删除,不带该删除只会删除用户不会删除其家目录

应用案例

删除用户名为lisi的用户,保留其家目录。

[root@iZuf6dljn9u61o2livt0xqZ home]# userdel lisi
# 可以看到用户lisi的家目录仍然存在
[root@iZuf6dljn9u61o2livt0xqZ home]# ls
lisi4  www  xh  zhangsan
# 用户lisi已经不存在了
[root@iZuf6dljn9u61o2livt0xqZ home]# id lisi
id: “lisi”:无此用户

删除用户名为zhangsan的用户,并且删除其家目录。

[root@iZuf6dljn9u61o2livt0xqZ home]# userdel -r zhangsan
# 加上-r后zhangsan的家目录连带一起删除了
[root@iZuf6dljn9u61o2livt0xqZ home]# ls
lisi4  www  xh
[root@iZuf6dljn9u61o2livt0xqZ home]# id zhangsan
id: “zhangsan”:无此用户

查看当前登录用户

基本语法

whoami/who am i : 查看当前用户,

查看当前用户是谁

[root@iZuf6dljn9u61o2livt0xqZ home]# whoami
root
[root@iZuf6dljn9u61o2livt0xqZ home]# who am i
root     pts/1        2022-11-21 19:39 (61.183.207.250)

就跟我们平常在公司一样,干一样事情的各个员工,会被划分到一个分组,这样便于公司对员工的统一管理。同理,Linux的用户管理也类似一样,有一个组的概念,对具有相同权限的用户可以放置在一个分组里面,这样便于对权限的统一管理,而不用在每次变动的时候对每一个用户都进行一次操作。

新增组

基本语法

groupadd 组名 : 删除一个用户。

应用案例

新增一个名字为rng的组名。

[root@iZuf6dljn9u61o2livt0xqZ home]# groupadd rng
[root@iZuf6dljn9u61o2livt0xqZ home]# cat /etc/group
root:x:0:
... 
test:x:1003:
rng:x:1004: # 这就是我们新增的rng

新增一个用户uzi并且将归属到分组rng下面。

[root@iZuf6dljn9u61o2livt0xqZ home]# useradd uzi -g rng
# 可以看到所属的分组就已经是rng了
[root@iZuf6dljn9u61o2livt0xqZ home]# id uzi
uid=1004(uzi) gid=1004(rng) 组=1004(rng)

修改用户所属组

基本语法

usermod 用户名 -g 组名 : 修改用户分组

应用案例

将uzi从rng移动到ig组。

# 新增一个分组叫ig
[root@iZuf6dljn9u61o2livt0xqZ home]# groupadd ig
# 移动分组
[root@iZuf6dljn9u61o2livt0xqZ home]# usermod uzi -g ig
# 可以看到已经从rng到ig了
[root@iZuf6dljn9u61o2livt0xqZ home]# id uzi
uid=1004(uzi) gid=1005(ig) 组=1005(ig)

删除组

基本语法

groupdel 组名 : 修改用户分组

应用案例

uzi从rng到ig之后,rng就没人了,那么现在需要将rng从分组删除。

[root@iZuf6dljn9u61o2livt0xqZ home]# groupdel rng
[root@iZuf6dljn9u61o2livt0xqZ home]# cat /etc/group
root:x:0:
... 
test:x:1003:
test:x:1003:
ig:x:1005: # rng就被删除了,只剩刚刚新增的ig了

和用户/组有关联的文件

/etc/passwd

存储的主要是user的配置文件,记录用户的各种信息,比如密码、用户组、登录的shell等

每行的含义: 用户名:口令:用户标示号:组标示号:注释性描述:主目录:登录的shell

[root@iZuf6dljn9u61o2livt0xqZ home]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
uzi:x:1004:1005::/home/uzi:/bin/bash

/etc/group

存储的主要该台Linux中,存在的用户组,包含了系统和第三方软件创建的分组,比如mysql、docker也包含了管理员创建的分组。

每行含义: 组名:口令:组标识号:组内用户列表

[root@iZuf6dljn9u61o2livt0xqZ home]# cat /etc/group
root:x:0:
bin:x:1:
mysql:x:1001:
docker:x:985:
cgred:x:984:
test1:x:1002:
test:x:1003:
ig:x:1005:

/etc/shadow

口令的配置文件

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

[root@iZuf6dljn9u61o2livt0xqZ home]# cat /etc/shadow
root:$6$BCe07/HoWqB/G$FIPGAi****kTwhtSirBWxN/0T64dIl3VgAy7VeDJC3pN1:18784:0:99999:7:::
bin:*:18397:0:99999:7:::
daemon:*:18397:0:99999:7:::
adm:*:18397:0:99999:7:::

结束语

我们一路奋战,不是为了改变世界,而是为了不让世界改变我们。