Linux篇(用户管理命令)

目录

一、用户与用户组

1. 为什么要做用户与用户组管理

2. Linux的用户及用户组

2.1. Linux的多用户多任务

2.2. 什么是用户

2.3. 什么是用户组

2.4. 用户和用户组的关系

二、用户和用户组管理

1. 用户组管理

1.1. 用户组添加

/etc/group文件结构

1.2. 用户组修改

1.3. 用户组删除

2. 用户管理

2.1. useradd添加用户

2.2. etc/passwd存储用户信息的文件

2.3. id查看用户信息

2.4. usermod修改用户

2.5. passwd修改用户密码

2.6. 认识/etc/shadow文件

2.7. su切换用户

2.8. userdel删除用户


一、用户与用户组

1. 为什么要做用户与用户组管理

用户和用户组管理,就是添加用户和用户组,针对每个用户设置不同的密码

大家平时的笔记本电脑,会设置多个账户吗?为什么?

服务器要添加多账户的作用:

针对不同用户分配不同的权限,不同权限可以限制用户可以访问到的系统资源,提高系统的安全性,

帮助系统管理员对使用系统的用户进行跟踪

2. Linux的用户及用户组

2.1. Linux的多用户多任务

Linux 系统是一个多用户多任务的操作系统

所谓多用户多任务,是指支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响

例如:

小明所在的运维团队一共有四个人,分别有大毛,二毛,三毛,大毛负责网站,

他的账户叫wangzhan, 二毛负责数据库,他的账户叫shujuku

在同一时间,大毛和二毛都可以登录这台服务器,大毛可以查询网站的日志,二毛可以处理数据库的问题,他们之间互不影响

由于我们设置了权限,大毛只能访问网站的日志,无法访问数据库;

二毛可以处理数据库问题,但是不能访问网站的日志。这就实现了我们的多用户多任务的运行机制

2.2. 什么是用户

任何一个运维人员想要登录服务器,都必须先申请一个账号,然后以这个账号的身份进入系统,

就像我们前面说的wangzhan这个账号

每个账号都拥有一个唯一的用户名和各自的密码,

用户在登录时输入正确的用户名和密码后,就能够进入系统,默认会进入到这个用户自己的主目录

2.3. 什么是用户组

用户组是具有相同特征用户的逻辑集合,简单来说,就是具有相同权限的用户的集合

例如:

人事部有20名员工,他们都需要访问一个文件夹,如果我们给这20个用户的账号分别设置权限,这样太麻烦了,

所以我们会建立一个用户组叫HR,对这个组设置权限,将这20个用户加入这个组就可以了!

2.4. 用户和用户组的关系

A :

一个用户可以属于一个用户组,具有此用户组的权限

HR组可以访问/hrfile的文件夹,当user01属于HR组,那么user01就可以访问/hrfile这个文件夹

B :

一个用户可以属于多个用户组,此时具有多个组的共同权限

HR可以访问/hrfile的文件夹,运维可以访问/yunweifile的文件夹,

当user01同时属于HR组和运维组,那么user01可以访问 /hrfile和/yunweifile

**C: **

多个用户可以属于一个用户组,多个用户都具有此用户组的权限

主组

指用户创建时默认所属的组,每个用户的主组只能有一个,创建用户时会同时创建一个和用户名相同的组!

例如:添加用户xiaoming,在建立用户 xiaoming 的同时,就会建立 xiaoming 组作为 xiaoming 用户的初始组

附加组

每个用户只能有一个主组,除主组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组

每个用户的附加组可以有多个,而且用户可以有这些附加组的权限

通常用户和用户组的管理,包含以下工作:

用户组的管理:

用户账号的添加、删除、修改以及用户密码的管理

注意三个文件:

/etc/passwd:用户配置文件,存储用户的基本信息

/etc/group:存储用户组的信息

/etc/shadow:存储用户的密码信息

二、用户和用户组管理

1. 用户组管理

用户组的管理包括用户组的添加、删除和修改

为什么要建立用户组?

前面本人说过,人事部有20名员工,我们要建立一个组,叫 hr,这样就不用分别给20个员工设置权限了

1.1. 用户组添加

命令:groupadd

作用:添加组

语法:# groupadd [参数选项 选项值] 用户组名

选项:-g:设置用户组ID 数字,如果不指定,则默认从1000 之后递增(1-999系统组)

用法一:groupadd 组名
示例代码:
# groupadd hr
含义:新建一个组叫做hr

提示:

linux下我们执行完命令,有时候会没有任何提示,直接回到#提示符,这种状态表明,命令执行成功,没有报错

存储用户组信息的文件:/etc/group

使用cat命令,查看/etc/group文件

cat /etc/group/
/etc/group文件结构
wheel : x : 10 : zhengge
用户组名 : 密码(占位符) : 用户组ID : 组内用户名(附加组)

在 /etc/group 文件中,其一共拥有三个冒号,共四列。

每列含义:

第一列:用户组的组名称

第二列:用户组的组密码,使用一个x占位符

第三列:用户组的组ID编号,1-999代表系统用户组的组编号,1000以后的代表自定义组的组编号

CentOS6 => 1-499,500...

CentOS7 => 1-999,1000...

第四列:用户组内的用户信息(如果一个用户的附属组或附加组为这个组名,则显示在此位置)

特别说明:

1、密码位x代表占位符,用户组可以设置密码,大部分情况下不需要设置

2、组内用户名:表示附加组是该组的用户名称

例如:

wheel组(组ID 10),是 zhengge 账户的附加组,所以 zhengge 这个账户,就显示在这里

若组(组ID 1000),是 zhengge 账户的主组, 即 zhengge 这个账户就不显示在最后

3、wheel组

只有在wheel组中的普通用户,才可以通过su命令切换到root账户,默认所有普通用户都能切换到root,只

要知道root密码!

1.2. 用户组修改

命令:groupmod

语法:# groupmod [选项 选项值] 用户组名

选项:

-g :gid缩写,设置一个自定义的用户组ID 数字

-n :name缩写,设置新的用户组的名称

示例代码:修改hr用户组,将组ID改成1100,将名称改为bjhr

用法一:groupmod -g 新组ID -n 新组名称 原有组名

示例代码:

#groupmod -g 1100 -n bjhr hr

含义:将hr组的组ID改成1100,组名改成bjhr

1.3. 用户组删除

命令:groupdel

语法:# groupdel 用户组名

案例:删除bjhr组

用法一:groupdel 组名

示例代码:

#groupdel bjhr

含义:将bjhr组删除

2. 用户管理

用户的管理涉及用户的添加、删除和修改

与用户相关的文件:/etc/passwd

2.1. useradd添加用户

命令:useradd

作用:添加用户

语法:# useradd [选项 选项的值] … 用户名

选项:

-g:表示指定用户的用户主(主要)组,选项值可以是用户组ID,也可以是组名

-G:表示指定用户的用户附加(额外)组,选项值可以是用户组ID,也可以是组名

-u :uid,用户的id(用户的标识符),系统默认会从500 /或1000之后按顺序分配uid,

如果不想使用系统分配的,可以通过该选项自定义

-c:comment,添加注释(选择是否添加)

-s:指定用户登入后所使用的 shell 解释器,默认/bin/bash【专门的接待员】,如果不想让其登录,则可以设置

为/sbin/nologin

-d:指定用户登入时的启始目录(家目录位置)

-n:取消建立以用户名称为名的群组

当我新建一个账户叫user01, 同时,系统会自动建立一个组也叫user01

用法一:useradd 用户名
示例代码:
#useradd zhangsan
含义:创建用户zhangsan,不带任何选项

注意:不用任何参数,创建用户,系统会默认执行以下操作:

  1. 在 /etc/passwd 文件中创建一行关于zhangsan用户的数据
  2. 在 /etc/shadow 文件中新增了一行关于zhangsan 密码的数据
  3. 在 /etc/group 文件中创建一行与用户名相同的组,例如zhangsan
  4. 在 /etc/gshadow 文件中新增一行与新增群组相关的密码信息,例如zhangsan
  5. 自动创建用户的家目录,默认在/home下,与用户名同名

验证是否成功:

  1. 使用tail文件查看/etc/passwd文件
  2. 使用tail文件查看/etc/group文件
taile -5 /etc/group
  1. 验证是否存在家目录(在Centos 下创建好用户之后随之产生一个同名家目录)
ls /home/

2.2. etc/passwd存储用户信息的文件

使用vim命令打开/etc/passwd文件

vim /etc/passwd

root : x : 0 : 0 : root : /root : /bin/bash
用户名 : 密码 : 用户ID : 用户组ID : 注释 : 家目录 : 解释器shell

用户名:登录linux时使用的用户名

密码:此密码位置一般情况都是"x",表示密码的占位,真实密码存储在/etc/shadow

用户ID:用户的识别符,每个用户都有唯一的UID【-u】

用户组ID:该用户所属的主组ID;【-g】

注释:解释该用户是做什么用的;【-c】

家目录:用户登录进入系统之后默认的位置;【-d】

解释器shell

等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,转换成机器语言,传递给内核处

理;

如果解释器是 /bin/bash 表示用户可以登录到系统,/sbin/nologin表示该用户不能登录到系统【-s】

下面我们来看一下对于useradd参数的使用

企业场景1:

公司新员工lisi,属于gzhr部门,用户ID1200,不允许登录系统

创建用户lisi,默认lisi属于自己同名的主组,让lisi 属于附加组gzhr,用户ID 1200,注释为"hruser lisi",解释器为/sbin/nologin

用法二:useradd -G 附加组名 -u 用户ID -s /sbin/nologin -c "shuser lisi" 用户名
示例代码:
#useradd -G gzhr -u 1200 -s /sbin/nologin -c "gzuser lisi" lisi
含义:创建用户lisi,不带任何选项
gzhr行的含义:在gzhr的组里(组id 是1002)有一个组内用户lisi(lisi 的附加组就是1002,附加组的名字是gzhr)。如果需要为一个用户指定多个附加组,只需要将多个附加组的id 通过英文逗号“,”分割即可。例如:-G 500,501,5021. 主组必须有且只能有 1 个(类似于只能有一个爹),附加组可以多个,也可以没有附加组(可以认多个干爹)2. 后期将权限管理的时候,关于文档的属组指的是主组

2.3. id查看用户信息

命令:id

作用:查看一个用户的一些基本信息(包含用户id,用户组id,附加组id…),该指令如果不指定用户则默认当前用户

语法1:# id 默认显示当前执行该命令的用户的基本信息

id

语法2:# id 用户名, 显示指定用户的基本信息

id zhengge

如何验证以上信息是否正确?

验证用户信息:通过文件/etc/passwd,

cat /etc/passwd

验证用户组信息:通过文件/etc/group

cat /etc/group

2.4. usermod修改用户

命令:usermod(user modify)

语法:# usermod [选项 选项的值] … 用户名

作用:修改用户的各种属性

选项:

-g:表示指定用户的用户主组,选项的值可以是用户组的ID,也可以是组名

-G:表示指定用户的用户附加组,选项的值可以是用户组的ID,也可以是组名

-u:uid,用户的id(用户的标识符),系统默认会从500 之后按顺序分配uid,

如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ 的自选靓号情况】

-L:锁定用户,锁定后用户无法登陆系统lock

-U:解锁用户unlock

-c<备注>:修改用户帐号的备注文字

-d<登入目录>:修改用户登入时的目录

-s:修改用户登入后所使用的shell

企业场景2:

公司员工wangwu,属于shhr部门,现在要休产假,产假期间,暂时停止她登陆电脑的权限,同时原来属于gzhr部门的员工lisi,

负责wangwu的工作,所以,需要把lisi加入到shhr的组,同时,修改lisi的账户注释为“gzhr shhr user”

对于wangwu用户,我们要执行锁定和解锁操作

对于lisi用户,我们要将lisi加入到shhr的附加组,同时修改lisi账户的注释

用法一:usermod -L 王五账户名
示例代码:
#usermod -L wangwu
含义:将王五账户暂时锁定用法二:usermod -U 王五账户名
示例代码:
#usermod -U wangwu
含义:将王五账户解锁
用法三:usermod -G 组名 -c “注释内容” 李四用户账号
示例代码:
#usermod -G shhr -c "shhr user" lisi
含义:将李四的账户加入shhr组,并修改注释内容为shhr user

2.5. passwd修改用户密码

Linux 不允许没有密码的用户登录到系统,因此前面创建的用户目前都处于锁定状态,需要设置密码之后才能登录计算机

命令:passwd

语法:# passwd 用户名 【如果不指定用户名则修改自己的密码】

作用:修改用户密码

企业场景3:

王五产假休完回到公司上班,需要将王五的账户解锁,在使用usermod -U解锁时,我们看到一个错误信息如下:

usermod: unlocking the user's password would result in a passwordless account.

解锁这个账户,将导致一个没有密码的账户,因为之前王五的账户没有密码

这时候,我们就需要使用passwd命令,给王五的账户设置一个密码

用法一:passwd 账户名
示例代码:
#passwd wangwu
含义:为wangwu账户设置密码
注意:当密码过于简单时,系统会提示这是一个不好的密码,因为它太简单了,但是我们仍然可以坚持使用这个密码在我们输入密码时,屏幕不会有任何显示。密码需要输入两次,请确保两次输入的密码是一样的

示例代码:设置wangwu的用户密码

2.6. 认识/etc/shadow文件

由于 /etc/passwd文件允许所有用户读取,易导致用户密码泄露,

因此 Linux 系统将用户的密码信息从 /etc/passwd 文件中分离出来,并单独放到了shadow文件中。

/etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性

与用户密码相关的文件:/etc/shadow

为用户设置密码之后,会自动在/etc/shadow文件中进行体现,使用vim编辑器打开:

第一列为用户名,例如zhangsan

后面是加密后的密码,就是$开头的字符串

如果显示为!!,则表示这个用户没有设置密码。

由以上截图所知,zhangsan,lisi是没有设置密码的

wangwu我们刚刚设置了密码,所以显示为一个加密的字符串

任务:

新建一个账户叫ityunwei

新建第二个账户叫shichang

给ityunwei账户设置一个密码

进入shadow文件,观察两个账户的区别

2.7. su切换用户

在设置用户密码之后就可以使用此账号进行登录系统了,如果系统处于已登录状态,则可以使用su命令进行切换

用户

为了系统安全,企业中通常不会允许root用户直接登录计算机,但是工作需要,我们又需要使用root权限,

这时候,我们就可以先使用一个普通用户登录计算机,再通过su命令切换到root权限

命令:su

语法:# su [-] 账号

作用:切换用户

用法一:su 用户名
示例代码:
#su root
含义:切换到root权限注意:
a. 从 root 往普通用户切换不需要密码,但是反之则需要 root 密码;
b. 切换用户之后前后的工作路径是不变的,添加了选项[-]会自动切换到用户的家;
c. 普通用户没有办法访问 root 用户家目录,但是反之则可以;

举例代码:

#查看当前用户
whoami
#发现用户为zhengge
#切换用户到root用户,需要输入密码(root用户切换到普通用户不需要输入密码)
su root

启用wheel组设置:

步骤1:使用vim编辑器 打开/etc/pam.d/su文件

vim /etc/pam.d/su

步骤2:编辑文件,去掉auth required pam_wheel.so use_uid这一行前面的#,使这一行配置生效

步骤3:下面是去掉#后的状态

步骤4:保存退出 :wq

这时,只有在wheel组内的用户才可以su到root

2.8. userdel删除用户

命令:userdel

语法:# userdel 选项 用户名

作用:删除账户及其对应家目录

选项:-r:表示删除用户的同时,删除其家目录/home下的对应文件夹

# userdel -r lisi# id lisi

注意:

已经登录的wangwu用户删除的时候提示删除失败,但是没有登录的lisi 用户可以正常删除,那这个时候想删除

wangwu怎么办呢?

解决办法:简单粗暴,kill 对应用户的全部进程

ps -ef | grep wangwu

提示:

所有跟用户操作的命令只有root 超级管理员有权限执行

(除passwd 外,只能修改自己的密码,即不指定用户名)

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

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

相关文章

编程之路,从0开始:内存函数

Hello大家好&#xff01;很高兴我们又见面了。 给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 今天我们来讲C语言中的内存函数。 目录 1、memcpy内存复制 2、memmove可重叠内存拷贝 3、memset设置字符 4、memcmp比较 1、memcpy内存复制 memcpy就是内存复制…

PyCharm 中的【控制台】和【终端】的区别

pycharm专业版-使用 PyCharm 中的【控制台】和【终端】的区别如下&#xff1a; 1.环境&#xff1a;控制台是 PyCharm 的内部环境&#xff0c; 终端 是操作系统的命令行界面。 2.功能&#xff1a;控制台可以运行 Python 代码&#xff0c;并显示执行结果&#xff1b; 终端可以…

IDEA修改注释颜色—图文教程

老的注释颜色用习惯了&#xff0c;新电脑的灰色注释不习惯&#xff0c;还是喜欢黄色哈哈哈哈&#x1f923;&#x1f923;&#x1f923; Block comment &#xff1a; 多行注释 Doc comment&#xff1a;文档注释 Line comment&#xff1a;单行注释 小伙伴们可以改自己喜欢的颜色…

C++ String(2)

reserve 这个地方要和reverse区分清楚&#xff0c;reserve是保留的意思&#xff0c;而reverse是逆置的意思 reserve函数可以预先分配内存 reserve(n)代表至少保留可以容纳n个字符的空间&#xff08;具体多大和编译器有关&#xff09; 比如reserve(100)&#xff0c;代表开10…

网络基础Linux

目录 计算机网络背景 网络发展 认识 "协议" 网络协议初识 OSI七层模型 TCP/IP五层(或四层)模型 网络传输基本流程 网络传输流程图 ​编辑 数据包封装和分用 网络中的地址管理 认识IP地址 认识MAC地址 笔记&#xff08;画的图&#xff09; 协议&#x…

干货 | WiFi 7(802.11BE)技术规范详解

1 概述 1.1 简介 当前全球有近200亿的Wi-Fi设备正在使用&#xff0c;Wi-Fi已成为生活、工作中不可或缺的一部分。在实际应用中&#xff0c;Wi-Fi协议所传输无线流量&#xff0c;已占到无线总流量的90%。海量数据快速、安全传输受益于巨量Wi-Fi设备高效、安全、可靠地工作&a…

线程的状态

目录 一、线程的所有状态 二、状态转换 三、多线程初体验 一、线程的所有状态 状态是针对当前线程调度情况所描述的&#xff0c;又因为线程是调度的基本单位&#xff0c;所以我们所谈到的状态都是线程的属性。在java里对线程的状态&#xff0c;进行了一个更细的划分。 我们可…

基于SpringBoot网上超市的设计与实现录像

基于SpringBoot网上超市的设计与实现录像 SpringBoot网上超市的设计与实现录像

认证鉴权框架SpringSecurity-3--代码集成_认证篇1(重写UserDetailsService示例)

上一篇介绍了springSecurity中常用的组件和过滤器链&#xff0c;明白了springSecurity管理认证和授权的基本过程和所用到的组件。之后几篇我们通过在Java代码集成springSecurity&#xff0c;来学习下代码上认证是如何实现的。 代码上常用的认证方式有两种&#xff0c;一种是实现…

C语言操作符终极揭秘:表达式求值秘籍

C语言中操作符详解&#xff08;终结篇&#xff09; 放在最前面的表达式求值定义&#xff08;1&#xff09; 操作数的求值&#xff08;2&#xff09; 操作符的应用&#xff08;3&#xff09;类型转换&#xff08;3.1&#xff09;隐式类型转换&#xff08;Type Promotion&#xf…

[代码审计]宏*HCM最新文件上传漏洞分析复现

如果觉得该文章有帮助的&#xff0c;麻烦师傅们可以搜索下微信公众号&#xff1a;良月安全。点个关注&#xff0c;感谢师傅们的支持。 免责声明 本博客所发布的所有内容&#xff0c;包括但不限于信息、工具、项目以及文章&#xff0c;均旨在提供学习与研究之用。所有工具安全性…

谷歌Gemini发布iOS版App,live语音聊天免费用!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

MYSQL SQL优化总结【快速理解】

1、优化insert操作 批量插入&#xff0c;防止大量与数据库进行访问 手动控制事务&#xff0c;减少事务的频繁开启和提交。 主键顺序插入 2、优化主键 主键优化的点就是避免主键过长&#xff0c;因为如果有二级索引&#xff0c;叶子节点存储的数据时间上是主键&#xff0c;如果主…

【Hive】【HiveQL】【大数据技术基础】 实验四 HBase shell命令实验

实验四&#xff1a;熟悉常用的HBase操作 实验概览 在本次实验中&#xff0c;我们将深入探索HBase在Hadoop生态系统中的角色&#xff0c;并熟练掌握常用的HBase Shell命令和Java API操作。通过这些实践&#xff0c;我们能够更好地理解HBase的工作原理以及如何在实际项目中应用。…

解决渠道问题的高效控价方法

当品牌销售渠道增多、涉及销售店铺量上升且品牌期望持续稳定发展时&#xff0c;就应着手处理控价事宜。控价有助于稳定品牌价值、吸引经销商加入以及利于品牌口碑传播。 控价应包含的渠道 随着电商平台发展&#xff0c;品牌销售渠道日益丰富&#xff0c;除线下传播渠道外&…

随机数

目录 一、传统方式&#xff1a;std::rand 和 std::srand 使用方法&#xff1a; 优缺点&#xff1a; 二、现代方式&#xff1a; 库&#xff08;推荐&#xff09; 1. 随机整数 2. 随机浮点数 3. 布尔值 4. 字符 5. 正态分布&#xff08;高斯分布&#xff09; 6. 离散分…

生物信息入门软件安装(保姆级教程)

写在开头 大四期间&#xff0c;选修了一门智慧医疗的课程&#xff0c;期末考核为25分钟有关智慧医疗方面的汇报。一次偶然的课程汇报让我接触到了生物信息&#xff0c;也产生了浓厚的兴趣&#xff0c;同时加入了老师的研究生小组&#xff0c;开启了这段生物信息学习的旅途。至此…

数据智能新纪元:向量数据库驱动AI大模型创新

数据智能新纪元&#xff1a;向量数据库驱动AI大模型创新 前言向量数据库与AI大模型的关系以及发展现状向量数据库的技术创新与落地实践向量数据库的未来趋势与产业机遇 前言 最近和一位搞AI创业的朋友聊天&#xff0c;他说了句意味深长的话&#xff1a;“当所有人都在谈论大模型…

2024 Visual Studio Code的下载与安装

目录 一、Windows系统下载与安装二、macOS系统下载与安装三、Linux系统下载与安装四、启动与配置VS Code 以下是2024年Visual Studio Code&#xff08;简称VS Code&#xff09;的下载与安装步骤&#xff0c;适用于Windows、macOS和Linux系统&#xff1a; 一、Windows系统下载与…

利用TinyML和IoT技术预测沙漠地区光伏电站清洁方法

论文标题 英文标题&#xff1a;Predictive method for cleaning photovoltaic plants in desert areas using TinyML and IoT technique 作者信息 A. Mellit, M. Chourouk&#xff1a;Faculty of Science and Technology, Renewable Energy laboratory, University of Jijel…