【linux基础15】用户管理

news2024/11/25 6:09:27

文章目录

    • 一. 用户和组
      • 1. 用户和组介绍
        • 用户分类
        • UID
        • GID
      • 2. /etc/passwd和/etc/shadow
        • 用户信息文件:
        • 密码文件:
    • 二、linux账号管理
      • 1. 用户操作
        • 1.1. 新增用户
        • 1.2. 指定UID、添加所属组、执行家目录
        • 1.3. 设置密码:passwd
        • 1.4 修改用户家目录:usermod
        • 1.5. 用户冻结与解冻
        • 1.6. 删除用户
      • 2. 用户组操作
        • 2.1. 增加用户组:groupadd
        • 2.2. 删除用户组:groupdel
    • 三. 检查用户信息
      • 1.查看用户:users、who、w

一. 用户和组

1. 用户和组介绍

用户分类

Linux系统中的用户分为3类,即普通用户、根用户、系统用户。

  • 普通用户是指所有使用Linux系统的真实用户,这类用户可以使用用户名及密码登录系统。一般来说普通用户只能在其家目录、系统临时目录或其他经过授权的目录中操作。
  • 根用户也就是root用户,它的ID是0,也被称为超级用户,root账户拥有对系统的完全控制权:可以修改、删除任何文件,运行任何命令。
  • 系统用户是指系统运行时必须有的用户,但并不是指真实的使用者。
    比如在RedHat或CentOS下运行网站服务时,需要使用系统用户apache来运行httpd进程,而运行MySQL数据库服务时,需要使用系统用户mysql来运行mysqld进程。在RedHat或CentOS下,系统用户的ID范围是1~499。

 

UID

用来区分不同用户的数字被称为User ID,简称UID。系统会自动记录“用户名”和UID的对应关系。

GID

不同的用户组同样也是用数字来区分的,这种用于区分不同用户组的ID被称为Group ID,也就是GID。

UID和GID又有什么联系呢?事实上,在Linux下每个用户都至少属于一个组。

如何查看自己的UID和GID呢?要确认自己的UID,可以使用以下id命令来获得:

[root@localhost ~]# id
uid=0(root)gid=0(root)groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

确认自己所属的用户组,可以使用以下groups命令来获得:

[root@localhost ~]# groups
root bin daemon sys adm disk wheel

如果要查询当前在线用户,可在用户登录以后,使用命令who看到目前登录在系统中的所有用户。

[root@localhost ~]# who
root     tty1         2012-10-22 00:13
root     pts/0        2012-10-22 21:20 (192.168.179.1)
john     pts/1        2012-10-22 22:35 (192.168.179.1)

 

2. /etc/passwd和/etc/shadow

在登录Linux时必须要输入用户名和密码。系统用来记录用户名、密码最重要的两个文件就是/etc/passwd和/etc/shadow。
 

用户信息文件:

以下是/etc/passwd中的几行内容:

[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
......(略去内容)......

每行都是使用6个分隔号“:”隔开的7列字符串。
在这里插入图片描述
 

密码文件:

LINUX将密码相关的信息保存到/etc/shadow中,而且默认只有root用户才有读的权限,其他人完全没有读取这个文件的可能。这种密码保存方式被称为“影子密码”。

/etc/shadow也是由冒号“:”隔开的,不同的是这里是8个冒号隔开的9列。
在这里插入图片描述

 

二、linux账号管理

1. 用户操作

1.1. 新增用户

需要新建一个叫john的用户,直接输入命令useradd john即可

[root@localhost ~]# useradd john

创建用户的过程

  • 首先,系统需要将用户信息记录在/etc/passwd中,一般会在/etc/passwd和/etc/shadow末尾追加一条记录,同时会分配给该用户一个UID。
  • 接着,要为该用户自动创建家目录。家目录以创建的用户名为目录名,创建的路径在/home目录中。比如,在上述案例中,创建的目录将是/home/john。
  • 然后,复制/etc/skel下所有的文件至/home/john。
  • 最后,新建一个与该用户名一样的用户组,也就是说当创建用户john的时候,也同时创建了一个叫john的用户组,而用户john默认属于john用户组。

这里对/etc/skel目录做一些说明。

系统在添加用户时,需要预先为这个用户创建一些默认的“配置文件”,而默认配置的就是/etc/skel目录下的几个隐藏文件。可以说,/etc/skel实际上是创建用户时的“模板”。

 

1.2. 指定UID、添加所属组、执行家目录

[root@localhost skel]# useradd -u 555 user1

创建用户user2时,指定了该用户所属的Group是user1。

[root@localhost skel]# useradd -g user1 user2

d参数指定该用户的家目录,而不是使用系统默认创建的家目录

[root@localhost skel]# useradd -d /home/mydir3 user3

 

1.3. 设置密码:passwd

创建用户后,该用户实际上还没有登录系统的权限,因为在不设置密码的情况下,在/etc/shadow中该用户记录中以冒号分隔的第二列将显示为两个感叹号“!!”,这说明不允许该用户登录系统。

因此,需要同时设置用户的密码才行,设置命令是passwd后接用户名

//之后root用户才能执行
[root@localhost skel]# passwd john
Changing password for user john.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

 

1.4 修改用户家目录:usermod

# 添加用户设置密码
[root@localhost ~]# useradd alice
[root@localhost ~]# passwd alice
Changing password for user alice.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

# 修改家目录为/home/alice_new
[root@localhost ~]# usermod -d /home/alice_new -m alice
# m参数的作用是,如果指定用户的家目录存在, 就自动创建新目录/home/alice_new,并使用该目录作为alice的新家目录。

 

1.5. 用户冻结与解冻

[root@localhost ~]# cat /etc/shadow | grep alice
alice:$1$Doi70VUY$Gmjq6HijgNLsm7xnys4Lw/:15642:0:99999:7:::
# 冻结
[root@localhost ~]# usermod -L alice
[root@localhost ~]# cat /etc/shadow | grep alice
alice:!$1$Doi70VUY$Gmjq6HijgNLsm7xnys4Lw/:15642:0:99999:7:::

# 解冻
[root@localhost ~]# usermod -U alice
[root@localhost ~]# cat /etc/shadow | grep alice
alice:$1$Doi70VUY$Gmjq6HijgNLsm7xnys4Lw/:15642:0:99999:7:::

 

1.6. 删除用户

[root@localhost ~]# userdel alice

默认情况下,删除用户时并不会删除原来用户的家目录和邮件信息。可以使用-r参数同时删除用户家目录和该用户的邮件。

 

2. 用户组操作

2.1. 增加用户组:groupadd

在添加用户的时候系统默认会创建一个与用户名一样的用户组。
其实也可以直接创建用户组,新增用户组的命令是:

groupadd 用户组名称

 
在Linux中,使用/etc/group文件来记录用户组。如下:增加一个group1组:

[root@localhost ~]# groupadd group1
[root@localhost ~]# cat /etc/group
......(略去内容)......
group1:x:503:

在/etc/group文件中,每一行就代表一个用户组,其格式是使用3个分隔号“:”隔开的4列。

  • 第一列是用户组名
  • 第二列代表密码(但是并不使用)
  • 第三列代表用户组的数字ID
  • 第四列是组成员,这里为空说明还没有任何用户属于这个组

 

2.2. 删除用户组:groupdel

这里需要注意的是,如果已有用户属于这个试图删除的组,该操作会失败。
groupdel命令的使用方式如下:

[root@localhost ~]# groupdel group1

 

三. 检查用户信息

1.查看用户:users、who、w

Linux会把所有来自不同终端的活动定义为一个会话,从who命令的输出,可以看出lianggao用户是通过不同的终端登录到系统中的。

如下所示:

LiangdeMacBook-Pro:HDFS3 lianggao$ who
lianggao         console       5 28 11:04  
lianggao         ttys000       5 28 11:21  
lianggao         ttys001       5 29 15:49 

命令显示的结果有3列

  • 第一列是登录用户的用户名
  • 第二列是用户登录的终端
  • 第三列是用户登录的时间

 
w命令

LiangdeMacBook-Pro:HDFS3 lianggao$ w
17:47  up 1 day,  6:44, 3 users, load averages: 2.69 3.12 3.06
登录用户名 登录终端  从哪里登录         登录时间  空闲时间 
USER     TTY      FROM              LOGIN@  IDLE WHAT
lianggao console  -11   30:43 -
lianggao s000     -11   30:19 vim
lianggao s001     -                15:49       - w

第三列:如果用户从网络登录,则显示远程主机的主机名或IP地址。

w命令的第一行会显示当前时间、系统运行时间、已登录的用户数量和系统负载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/631150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安卓大作业 图书管理APP

系列文章 安卓大作业 图书管理APP 文章目录 系列文章1.背景2.功能3. 源代码获取 1.背景 本次实验设计的是一个图书管理系统,系统的整体目录如下: 2.功能 针对于每个java类或者Activity进行说明&#x…

春招后,功能测试还能找到工作了吗?

在一线大厂,没有测试这个岗位,只有测开这个岗位。这几年,各互联网大厂技术高速更新迭代,软件测试行业也正处于转型期。传统的功能测试技术逐步淘汰,各种新的测试技术层出不穷,测试人员的薪资也水涨船高。与…

网络安全从业人员会被AI智能取代吗?

随着ChatGPT的火爆,很多人开始担心网络安全从业人员会被AI取代。如果说网络安全挖洞的话,AI可能真的能取代。但是网络安全不仅仅只是挖洞,所以AI只是能缓解网络安全人员不足的情况,但是是不会取代人类的作用的。 就拿最近很火的C…

【详解】Java中的queue和deque、ArrayDeque

一 、队列(queue)简述 队列(queue)是一种常用的数据结构,在Java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约。可以将队列看做是一种特殊的线性表,该结构遵循的先进先出原则。 Java中,LinkedList实现了Q…

RabbitMQ入门案例之发布订阅模式

前言 本文章主要介绍RabbitMQ的发布订阅模式,该模式下,消息为广播形式,一经发布则会进入交换机绑定的队列中,详细介绍可以阅读官方文档。 官网文档地址:https://rabbitmq.com/getstarted.html 什么是发布与订阅模式 …

对比K近邻算法与决策树算法在MNIST数据集上的分类性能

目录 1. 作者介绍2. K近邻算法与决策树算法介绍2.1 K近邻(KNN)简介2.2 决策树算法简介2.3 MNIST数据集简介: 3. K近邻算法和决策树算法在Mnist数据集分类实验对比3.1 K近邻算法对Mnist数据集分类实验3.2 K近邻代码实现3.3 决策树算法实验3.4 …

Vue3:组件高级(上)

Vue3:组件高级(上) Date: May 20, 2023 Sum: watch倾听器、组件的生命周期、组件之间的数据共享、vue3.x中全局配置axios 目标: 能够掌握 watch 侦听器的基本使用 能够知道 vue 中常用的生命周期函数 能够知道如何实现组件之间…

写 bug 速度提升200%!吊爆的 IDEA 使用技巧

背景 Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等。 对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能。 刚开始觉得它只是一个简单的Code Snippet,后来发现…

msf渗透练习-震网三代

说明: 本章内容,仅供学习,不要用于非法用途(做个好白帽) (一)震网三代漏洞 “震网三代”官方漏洞编号是CVE-2017-8464,2017年6月13日,微软官方发布编号为CVE-2017-8464的…

Redis Cluster集群运维-03

1、Redis集群方案比较 哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异 常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可…

【CSS】常见的选择器

1.标签选择器 语法 标签 { }作用 标签选择器用于选择某种标签比如 选择p标签,并设置背景颜色 p { background-color:yellow; }例子 选择div标签,并将其字体大小设置为100px,字体设置为"微软雅黑",文字颜色设置为r…

怎么学习渗透测试?路线是什么

我知道很多人肯定觉得,报班什么的太贵了,但是人家贵有贵的道理 owap讲来讲去,还是那个样,但是有人给你解答问题是两个概念,有时候一个虚拟机都能卡死你很久,我就随便说说,我给你们想的学习路线…

2023网络安全工程师面试题汇总(附答案)

又到了毕业季,大四的漂亮学姐即将下架,大一的小学妹还在来的路上,每逢这时候我心中总是有些小惆怅和小激动…… 作为学长,还是要给这些马上要初出茅庐的学弟学妹们,说说走出校园、走向职场要注意哪些方面。 走出校园后…

基于XC7Z100的PCIe采集卡(GMSL FMC采集卡)

GMSL 图像采集卡 特性 ● PCIe Gen2.0 X8 总线; ● 支持V4L2调用; ● 1路CAN接口; ● 6路/12路 GMSL1/2摄像头输入,最高可达8MP; ● 2路可定义相机同步触发输入/输出; 优势 ● 采用PCIe主卡与FMC子…

服务器是什么?它是用来干什么的?

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、服务器是什么? 二、服务器的作用 1、提高访问速度 2、提高安全性 三、云服务器与物理服务器 1、云服务器 云服务…

[架构之路-210]- 人人都是产品经理 - 互联网产品需求分析思路和方法笔记

目录 前言: 一、产品需求分析思路和方法--产品需求 1、产品需求的内涵 ①什么是产品? ②什么是需求? ③需求的产品的关系 ④案例分析: ⑤理解需求的误区 2、需求的分类及层次、规律、拆解用户需求 ①需求分类 ②需求层…

算法刷题-链表-设计链表

设计链表 707.设计链表思路代码其他语言版本 听说这道题目把链表常见的五个操作都覆盖了? 707.设计链表 力扣题目链接 题意: 在链表类中实现这些功能: get(index):获取链表中第 index 个节点的值。如果索引无效,则…

MySQL数据库,从入门到精通:第二篇——MySQL关系型数据库与非关系型数据库的比较

MySQL数据库,从入门到精通:第二篇——MySQL关系型数据库与非关系型数据库的比较 1. RDBMS 与 非RDBMS1.1 关系型数据库(RDBMS)1.1.1 实质1.1.2 优势1.2 非关系型数据库(非RDBMS)1.2.1 介绍1.2.2 有哪些非关系型数据库1.2.3 NoSQL的演变1.3 小结 2. 关系型…

SQL开源替代品,诞生了

发明 SQL 的初衷之一显然是为了降低人们实施数据查询计算的难度。SQL 中用了不少类英语的词汇和语法,这是希望非技术人员也能掌握。确实,简单的 SQL 可以当作英语阅读,即使没有程序设计经验的人也能运用。 然而,面对稍稍复杂的查…

Python+QT停车场车牌识别计费管理系统-升级版

程序示例精选 PythonQT停车场车牌识别计费管理系统-升级版 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<PythonQT停车场车牌识别计费管理系统-升级版>>编写代码&#xff0c;代…