Linux:详解 用户,用户组的解释创建等。

Linux中用户和组的类型

1、Linux下的用户可以分为三类

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

系统用户(伪用户)——是Linux系统正常工作所必需的用户。主要是为了满足相应的系统进程对文件属主的要求而建立的,例如:bin、daemon、adm、lp等用户。系统用户不能用来登录。

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

2、Linux中的组有以下两类

基本组(私有组):建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是基本组。附加组(公有组):可以容纳多个用户,组中的用户都具有组所拥有的权利。

3、Linux中用户和用户组的配置文件

在Linux中,用户账号、密码、用户组信息和用户组密码均是存放在不同的配置文件中的。

在这里插入图片描述

(1)用户账号文件——/etc/passwdpasswd

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

如下命令可以查看用户账号文件

[root@node13 ~]# head -1 /etc/passwd        head命令显示第一行
root:x:0:0:root:/root:/bin/bash

上面输出的结果是用户的账号信息,以 隔离,有7个字段,对于字段的解释如下:

第一个字段:
账号名称:用户登录Linux系统时使用的名称。

第二个:
密码:以前是以加密格式保存密码的位置,此处只是密码占位符“x”或“*”。若为“x”,说明密码经过了shadow的保护。

第三个:
UID:用户的标识,是一个数值,用它来区分不同的用户,每个用户都有一个UID数值:

 超级用户的UID——0 
 系统用户的UID——1~999 
 普通用户的UID——≥1000

第四个:
GID:用户所在基本组的标识,是一个数值,用它来区分不同的组,相同的组具有相同的GID。

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

第六个:
主目录:类似Windows 的个人目录,通常是/home/username,这里username是用户名,用户执行“cd~”命令时当前目录会切换到个人主目录。

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

(2)用户密码文件——/etc/shadow

如下命令查看字段:

[root@node13 ~]# head -1 /etc/shadow
root:$6$3EZ8vA1hgB3VTWb0$IlamoUyDh1RS.wftgz4qj0kmVrka7Yi6SgIo1aM6eu8nbFM9haOVRTtNDDfkix8MCugx8p8lufmItgsOsu1rl1:19083:0:99999:7:::

可以知道有9个字段,含义分别如下:

在这里插入图片描述

(3)用户组账号文件——/etc/group

系统中的每个组,在/etc/group文件中有一行记录,任何用户均可以读取用户组账户信息配置文件。

字段依次说明:
在这里插入图片描述

用户管理

添加用户

命令格式: useradd [选项] <username>

常用选项如下:
在这里插入图片描述
示例1:新建一个用户zhang3,查看passwd、shadow文件中的变化,并确认该用户的家目录中的初始配置文件。

[root@localhost ~]# useradd zhang3
[root@localhost ~]# tail -1 /etc/passwd
zhang3:x:1001:1001::/home/zhang3:/bin/bash
[root@localhost ~]# tail -1 /etc/shadow
zhang3:!!:16925:0:99999:7:::       //注意密码字段的内容为“!!”,表示密码尚未设置
[root@localhost ~]# ls -ld /home/zhang3
drwx------. 3 zhang3 zhang3 74 11月   4 15:58 /home/zhang3
[root@localhost ~]# ls -A /home/zhang3
.bash_logout .bash_profile .bashrc .mozilla

注意密码字段的内容为“!!”,表示密码尚未设置

示例2:新建一个用户wang5,指定其UID为1005、登录Shell为/bin/bash,账号永不过期
命令如下:

[root@localhost ~]# useradd -u 1005 -s /bin/bash -e -1 wang5

修改用户信息—usermod命令

命令格式:usermod [选项] username

常用的选项包括 -c,-d,-m,-g,-G,-s,-u 等,
这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
另外,还可以使用如下选项:

 -l 新用户名—更改账户的名称,必须在该用户未登录的情况下才能使用。
 -L—锁定(暂停)用户账户,使其不能登录使用。
 -U—解锁用户账户。

示例:将用户wang5的名称修改为wangwu,并暂停使用该账号。

[root@localhost ~]# usermod -l wangwu -L wang5

为用户账号设置密码—passwd命令

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

命令格式:passwd [账户名]

常用选项:

在这里插入图片描述
示例1:修改wangwu密码

[root@localhost ~]#  passwd wangwu
Changing password for user wangwu.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# 

删除用户账号—userdel命令

命令格式:userdel [-r] 账户名

-r—在删除该账户的同时,一并删除该账户对应的主目录。

例:删除wang5用户:

[root@localhost ~]# userdel -r wangwu

用户间切换—su(substitute user)命令

命令格式:su [用户名]

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

su和su -命令区别就是加载的配置文件不一样:

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

控制用户对系统命令的使用权限

使用sudo命令可以提高普通用户的操作权限,不过这个权限需要root用户进行配置/etc/sudoers文件才可使用。

sudo的执行流程如下(默认只有root用户能使用):
当用户执行sudo时,便会让用户输入自己的密码来确认(root执行sudo时不需要输入密码);若欲切换的身份与执行者身份相同,那也不需要输入密码。若密码输入成功,系统会去/etc/sudoers文件中查找该用户是否有执行sudo的权限;若用户具有执行sudo的权限,便开始sudo后续接的命令;

sudo -l:列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。
sudo -u 用户名 命令:以指定用户的身份执行命令。后面的用户是除root以外的

用户组管理

创建用户组命令格式: 
groupadd   [-r]   用户组名称

常用选项:

-g GID——指定新用户组的组标识号(GID),默认值是已有的最大的GID加1。
-r——建立一个系统组账号,与-g不同时使用时,则分配一个1~999的GID。

创建用户组

示例:向系统中添加一个组ID为1001,组名为group1的新组。

[root@localhost ~]# groupadd -r group1 -g 1001

修改用户组属性

命令格式: 
groupmod  选项  用户组

常用选项:

 -g  GID——为用户组指定新的组标识号。 
 -n  新用户组——将用户组的名字改为新名字修改用户组的名称和用户组的GID值。

示例:将组group1的GID修改为2000,组名修改为group11。

[root@localhost ~]# groupmod -n group11 -g 2000 group1 

添加/删除组成员

命令格式: 
gpasswd  [选项]  [用户]  [组]

注意:只有root用户和组管理员才能够使用该命令。

选项:

 -r 删除组密码 
 -a——把用户加入组 
 -d——把用户从组中删除。 
 -M——可同时添加多个用户 
 -A——给组指派管理员。

示例:将zhang3、li4用户同时加入group1组,并指派zhang3为管理员。

[root@localhost ~]# gpasswd -M zhang3,li4 group1 -A zhang3

删除组账户

命令格式: 
groupdel   用户组名

示例:从系统中删除组group11
被删除的组若是基本组,则必须先删除引用该基本组的用户,然后再删除该基本组。

[root@localhost ~]# groupdel group11

查询用户和组信息

[root@node13 ~]# id 用户名  显示出某个用户的详细信息
[root@node13 ~]# groups 用户名   显示出用户的所属组信息

查询li4信息:

[root@localhost ~]# id li4
uid=1002(li4) gid=1002(li4) groups=1002(li4),2001(group1)
[root@localhost ~]# groups li4
li4 : li4 group1

查看用户登录系统的情况

1,users,查看当前登录系统的用户

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

[root@localhost ~]# users
redhat root

2,,last:列出目前与过去登入系统的用户相关信息

该命令默认会去读取/var/log/wtmp文件,并把该文件记录的登入系统的用户名单全部显示出来。

[root@node13 ~]# last -2  显示最近的两条登录信息
[root@node13 ~]# last -f /var/log/wtmp  -n 3 显示/var/log/wtmp文件中最近的两条登录信息

3、如果想要知道每个账号的最近登录时间,则可使用lastlog查看,该命令会读取/var/log/lastlog文件。

[root@node13 ~]# lastlog

4、w:显示登录到系统的用户信息。

[root@localhost ~]# w
19:03:58 up  6:51,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.107.1    12:12    0.00s  0.30s  0.01s w
redhat   pts/1    192.168.107.1    12:33    3:14m  0.06s  0.06s -bash

参数解释:

TTY:表示用户使用的TTY名称    
FROM:表示用户从哪里登录进来
idle:表示空闲时间    
JCPU:在某段时间内所有与该终端相关的进程任务所耗费的cpu时间    	
PCPU:当前活动进程使用的系统时间    
WHAT:表示当前用户执行的进程名称和选项

5、who:显示目前登录到系统的用户

who通常通过/var/run/utmp文件来获取信息 。

[root@localhost ~]# who
[root@localhost ~]# who -a 所有信息
[root@node13 ~]# who -r  显示当前系统的运行级别
[root@node13 ~]# who -u  显示当前每个用户的用户名、登录终端、登录时间、终端活动、进程和主机名
[root@node13 ~]# who -T  显示tty终端的状态,“+”表示对任何人可写,“-”表示仅对root用户或所有者可写,“?”表示遇到终端故障
  • 45
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Fy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值