Linux 用户和组管理_linux seat0-程序员宅基地

技术标签: 运维  linux  服务器  RHCSA  

目录

一、分类

1、用户

2、组

二、配置文件

1)/etc/passwd

2)/etc/shadow

3)/etc/group

三、用户管理

1、添加新用户 useradd

2、修改用户信息 usermod

3、删除用户信息 userdel

4、提升用户对系统命令的使用权限 sudo

5、为用户账户设置密码 passwd

6、用户切换 su

四、用户组的管理

1、创建用户组 groupadd

2、修改用户组属性 groupmod

3、添加/删除组成员 gpasswd

4、删除组账户 groupdel

5、查询用户和组信息


一、分类

1、用户

        root(超级用户)——具有一切权限

        伪用户(系统用户)——Linux系统正常工作所必需的用户,主要是为了满足相应的系统进程对文件属主的要求而建立的;系统用户不能用来登录

        普通用户

2、组

        基本组(私有组):建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这 个组就是基本组。

        附加组(公有组):可以容纳多个用户,组中的用户都具有组所拥有的权利。

二、配置文件

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

用户账号文件                /etc/passwd

用户密码文件                /etc/shadow

用户组账号文件            /etc/group

用户组密码文件            /etc/gshadow

1)/etc/passwd

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

例如:root:x:0:0:root:/root:/bin/bash

分段解析:
root: 用户名
x:密码占位符
0:uid
0:gid
root:个人资料
/root:家目录(主目录)
/bin/bash:默认使用的shell

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

        超级用户的UID——0

        系统用户的UID——1~999

        普通用户的UID——≥1000

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

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

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

2)/etc/shadow

[root@localhost Documents]# ll /etc/shadow
----------. 1 root root 1134 Sep 10 21:56 /etc/shadow
[root@localhost Documents]# head -1 /etc/shadow
root:$6$BDpMyn6U8IREItqZ$Awo1gVsRwSuloBaggb5rAklWLLFJ88euOlHp7bwmBfEVAPYT6aEy.77EozELMexVrA3sArJLH7xv/CQFNWNho.::0:99999:7:::


root    用户名

$6      sha512算法(哈希算法--加密算法)【使用SHA-512/SHA-256/MD5算法加密后的密码($id$,id为1表示md5,5表示sha256,6为sha512),若为空,表示该用户无需密码即可登录,若为“*”表示该账号不
能用于登录系统,若为“!!”表示该账号密码已被锁定】

$BDpMyn6U8IREItqZ    salt盐值(混淆原密码)
$Awo1gVsRwSuloBaggb5rAklWLLFJ88euOlHp7bwmBfEVAPYT6aEy.77EozELMexVrA3sArJLH7xv/CQFNWNho.::0:99999:7:::

::最后一次修改密码的时间(此时代表没有修改过密码)
0:密码修改间隔
99999:密码过期时间
7:密码过期后几天警告
:密码失效日期
:保留字段供日后使用

3)/etc/group

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

[root@localhost Documents]# ll /etc/group
-rw-r--r--. 1 root root 811 Sep 10 21:56 /etc/group
[root@localhost Documents]# head -1 /etc/group
root:x:0:


root:    表示组名称
x:    组密码占位符合
0:    组id
caixukun,root:用户组成员(用“,"分开的用户名,列出的成员以该组为附加组)

三、用户管理

1、添加新用户 useradd

        格式:useradd [选项] 用户名

        选项:

                -c        添加个人的注释信息

                -u        设置用户id(若同时有-o选项,则可重复使用其他用户的标识号)

                -g        为用户指定所属的基本组(该组再指定时必须已存在)

                -G       为用户指定所属的附加组(该组再指定时必须已存在,可有多个,组之间用","分隔)

                -p        设置密码(密码非原始密码,而是经过哈希后的密码)

                -d        目录——设定用户的家目录(默认为/home/用户名)。

                -M        不创建用户家目录

                -N        不创建与用户名同名的基本组

                -f        天数——指定密码到期后多少天账号被禁用,若指定为0,则表示账号到期后被立即禁用;若指定为-1,则表示账号过期后不被禁用(即密码永不过期)。

也可直接在 /etc/passwd 中添加账号(qqqq):

使用openssl passwd -1 命令获取密码密文,将密码复制,进入/etc/shadow中后将qqqq账号的密码等信息填入,保存退出后即可增添用户qqqq. 

为防止用户账号出现问题,进入 /etc/group 中添加基本组 

2、修改用户信息 usermod

        格式:usermod [选项] 用户

        选项:

                -l        修改用户名,必须在该用户未登录的情况下才能使用

                -L        锁定(暂停)用户账户(Lock)

                -U        解锁用户账户(unlock)

锁定的账户特征:1.在可视界面登录时没有该用户
                               2./etc/shadow中密码部分的字段会有记录!

3、删除用户信息 userdel

        格式:userdel [选项] 用户

        选项:

                -r        删除用户时连着家目录一起删(如果服务器资源还阔以时,尽量不删)

4、提升用户对系统命令的使用权限 sudo

        sudo——提取命令,普通用户可以该命令临时提升权限,权限范围在 /etc/sudoers/文件中,可以是直接通过vim修改,也可以通过visudo命令修改​​​​​​​

例:
sudo -l :列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。
sudo -u 用户名 命令 :以指定用户的身份执行命令。后面的用户是除root以外的,可以是用
户名,也可以是UID。
sudo -k :清除存活期时间,下次再使用sudo时要再输入密码。
sudo -b 命令 :在后台执行指定的命令。
sudo -p 提示语 <操作选项> :可以更改询问密码的提示语,其中%u会代换为使用者账号名
称,%h会显示主机名称。

通过以下两个命令进入相关文档中

visudo

vim /etc/sudoers

 将需要提权的用户写进文档中,进行提权范围的设定 (如:redhat  ALL=(ALL)    /usr/sbin/reboot)

redhat  ALL=(ALL)       /usr/sbin/reboot

redhat              #需要提权的用户名
ALL                 #指定哪些平台可以提权
=(ALL)              #以什么执行命令     
/usr/sbin/reboot    #可以执行的命令

ALL是关键字,代表任何身份、主机或命令

5、为用户账户设置密码 passwd

        格式:passwd [选项] 用户名

        选项:

                -d        清空密码

                -l         锁定(停用)用户账户

                -u        解锁用户账户

[root@localhost ~]#echo 密码 | passwd --stdin 用户名 使用该方式也可修改用户密码

6、用户切换 su

        ——substitute user

        格式:su [用户名]

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

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

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

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

四、用户组的管理

1、创建用户组 groupadd

        格式:groupadd [选项] 组名称

        选项:

                -r        创建系统账户(伪账户),默认id 1-999,可通过-g设置

                -g GID        设置用户组的id,默认值是在已有id上加1

#当添加完组以后,可以通过查看 /etc/group文件来确认是否添加成功
[root@localhost Documents]# groupadd root1 -g 1111
[root@localhost Documents]# cat /etc/group
...
root1:x:1111:

2、修改用户组属性 groupmod

        格式:groupmod [选项] 用户组

        选项:

                -g GID                修改当前的组id

                -n 新用户组        修改当前组的名称

[root@localhost Documents]# groupmod -n 1root root1
[root@localhost Documents]# cat /etc/group

修改前:
...
root1:x:1111:

修改后:
...
1root:x:1111:

3、添加/删除组成员 gpasswd

        ——只有root用户和组管理员才能使用该命令

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

        选项:

                -r                删除组密码

                -a                把用户加入组

                -d                把用户从组中删除

                -M                可同时添加多个用户到组中

                -A                给组指派管理员

4、删除组账户 groupdel

        格式:grouopdel 用户组名

被删除的组若是基本组,则必须先删除引用该基本组的用户,然后再删除该基本组。

5、查询用户和组信息

id命令:        可以查看用户的详细信息

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

group:        查看出用户所属组的信息

w:               展示当前用户的详情

who:           类似w

last :           查看系统中登录信息

[root@localhost Documents]# id zx
uid=1000(zx) gid=1000(zx) groups=1000(zx),10(wheel)

[root@localhost Documents]# groups zx
zx : zx wheel

# users,查看当前登录系统的用户
[root@localhost Documents]# users
root root root zx

# last:列出目前与过去登入系统的用户相关信息,该命令默认会去读取/var/log/wtmp文件,并把该
文件记录的登入系统的用户名单全部显示出来。
[root@localhost Documents]# last -2
root     tty3         tty3             Sat Sep 23 14:16    gone - no logout
root     seat0        login screen     Sat Sep 23 14:16    gone - no logout

wtmp begins Sun Sep 10 21:54:13 2023
[root@localhost Documents]# last -f /var/log/wtmp -n 3
root     tty3         tty3             Sat Sep 23 14:16    gone - no logout
root     seat0        login screen     Sat Sep 23 14:16    gone - no logout
zx       tty2         tty2             Sat Sep 23 13:44    gone - no logout

wtmp begins Sun Sep 10 21:54:13 2023

# 每个账号的最近登录时间,则可使用lastlog查看,该命令会读取/var/log/lastlog文件。

# w:显示登录到系统的用户信息。
[root@localhost Documents]# w
 21:44:26 up  7:23,  4 users,  load average: 0.00, 0.22, 0.17
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     13:44    1.00s  0.25s  0.01s w
root     seat0     14:16    0.00s  0.00s  0.01s /usr/libexec/gdm-wayland-session --register-session gnome-se
zx       tty2      13:44    8:02m  0.41s  0.33s /usr/libexec/gnome-session-binary
root     tty3      14:16    8:02m  0.06s  0.05s /usr/libexec/gnome-session-binary

第一行显示当前的系统时间、开机多久、登录到系统中的用户数和系统平均负载。平均负载是指在1分钟、5分
钟、15分钟内系统负载情况;

第二行只是各个项目的说明;
USER:表示登录系统的用户
TTY:表示用户使用的TTY名称
FROM:表示用户从哪里登录进来
LOGIN@:用户登录的日期和时间
idle:表示空闲时间
JCPU:在某段时间内所有与该终端相关的进程任务所耗费的cpu时间
PCPU:当前活动进程使用的系统时间
WHAT:表示当前用户执行的进程名称和选项

第三行以后,每行代表一个用户登录的信息。


# who:显示目前登录到系统的用户,who通常通过/var/run/utmp文件来获取信息 。
    who
    who -s
    sho -a
    who -b 列出系统最近启动的日期
    who -m 列出关于当前终端的信息
    who  am i
    who -q 列出在本地系统上的用户和用户数的清单
    who -r 显示当前系统的运行级别
    who -u 显示当前每个用户的用户名、登录终端、登录时间、终端活动、进程和主机名
    who -T 显示tty终端的状态,“+”表示对任何人可写,“-”表示仅对root用户或所有者可写,“?”表示遇到终端故障
    who -w 和-T一样
    

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_68256171/article/details/133217227

智能推荐

【新手科研指南5】深度学习代码怎么读-小白阶段性思路(以手写数字识别应用为例)_深度学习程序怎么读-程序员宅基地

文章浏览阅读6.2k次,点赞6次,收藏26次。我是一个深度学习代码小白,请你用中文写上注释,能让我能轻松理解下面这段代码。注意包含所有函数、调用和参数的注释。以同样的python代码块样式返回你写的代码给我。代码看累了,就看《动手学深度学习》文档:基于PyTorch框架,从底层函数实现基础功能,再到框架的高级功能。努力上路的小白一枚,麻烦路过的大佬指导一二,同时希望能和大家交流学习~争取更新学习这个文档的专栏,记录学习过程。量身定做了一套话术hhh,亲身测试还不错。这个感觉更浅一点儿,之后复习看吧。20天吃掉那只Pytorch。_深度学习程序怎么读

Java学习路线图,看这一篇就够了!-程序员宅基地

文章浏览阅读2.7w次,点赞126次,收藏1.2k次。耗废1024根秀发,Java学习路线图来了,整合了自己所学的所有技术整理出来的2022最新版Java学习路线图,适合于初、中级别的Java程序员。_java学习路线

PCL_Tutorial2-1.7-点云保存PNG_pcl::io:savepng-程序员宅基地

文章浏览阅读4.4k次。1.7-savingPNG介绍代码详情函数详解savePNGFile()源码savePNGFile()源码提示savePNGFile()推荐用法处理结果代码链接介绍PCL提供了将点云的值保存到PNG图像文件的可能性。这只能用有有序的云来完成,因为结果图像的行和列将与云中的行和列完全对应。例如,如果您从类似Kinect或Xtion的传感器中获取了点云,则可以使用它来检索与该云匹配的640x480 RGB图像。代码详情#include <pcl / io / pcd_io.h>#incl_pcl::io:savepng

知乎问答:程序员在咖啡店编程,喝什么咖啡容易吸引妹纸?-程序员宅基地

文章浏览阅读936次。吸引妹子的关键点不在于喝什么咖啡,主要在于竖立哪种男性人设。能把人设在几分钟内快速固定下来,也就不愁吸引对口的妹子了。我有几个备选方案,仅供参考。1. 运动型男生左手单手俯卧撑,右手在键盘上敲代码。你雄壮的腰腹肌肉群活灵活现,简直就是移动的春药。2.幽默男生花 20 块找一个托(最好是老同学 or 同事)坐你对面。每当你侃侃而谈,他便满面涨红、放声大笑、不能自已。他笑的越弱_咖啡厅写代码

【笔试面试】腾讯WXG 面委会面复盘总结 --一次深刻的教训_腾讯面委会面试是什么-程序员宅基地

文章浏览阅读1.2w次,点赞5次,收藏5次。今天 (应该是昨天了,昨晚太晚了没发出去)下午参加了腾讯WXG的面委会面试。前面在牛客上搜索了面委会相关的面经普遍反映面委会较难,因为都是微信的核心大佬,问的问题也会比较深。昨晚还蛮紧张的,晚上都没睡好。面试使用的是腾讯会议,时间到了面试官准时进入会议。照例是简单的自我介绍,然后是几个常见的基础问题:例如数据库索引,什么时候索引会失效、设计模式等。这部分比较普通,问的也不是很多,不再赘述。现在回想下,大部分还是简历上写的技能点。接下来面试官让打开项目的代码,对着代码讲解思路。我笔记本上没有这部分代码,所_腾讯面委会面试是什么

AI绘画自动生成器:艺术创作的新浪潮-程序员宅基地

文章浏览阅读382次,点赞3次,收藏4次。AI绘画自动生成器是一种利用人工智能技术,特别是深度学习算法,来自动创建视觉艺术作品的软件工具。这些工具通常基于神经网络模型,如生成对抗网络(GANs),通过学习大量的图像数据来生成新的图像。AI绘画自动生成器作为艺术与科技结合的产物,正在开启艺术创作的新篇章。它们不仅为艺术家和设计师提供了新的工具,也为普通用户提供了探索艺术的机会。随着技术的不断进步,我们可以预见,AI绘画自动生成器将在未来的创意产业中发挥越来越重要的作用。

随便推点

Flutter ListView ListView.build ListView.separated_flutter listview.separated和listview.builder-程序员宅基地

文章浏览阅读1.7k次。理解为ListView 的三种形式吧ListView 默认构造但是这种方式创建的列表存在一个问题:对于那些长列表或者需要较昂贵渲染开销的子组件,即使还没有出现在屏幕中但仍然会被ListView所创建,这将是一项较大的开销,使用不当可能引起性能问题甚至卡顿直接返回的是每一行的Widget,相当于ios的row。行高按Widget(cell)高设置ListView.build 就和io..._flutter listview.separated和listview.builder

2021 最新前端面试题及答案-程序员宅基地

文章浏览阅读1.4k次,点赞4次,收藏14次。废话不多说直接上干货1.js运行机制JavaScript单线程,任务需要排队执行同步任务进入主线程排队,异步任务进入事件队列排队等待被推入主线程执行定时器的延迟时间为0并不是立刻执行,只是代表相比于其他定时器更早的被执行以宏任务和微任务进一步理解js执行机制整段代码作为宏任务开始执行,执行过程中宏任务和微任务进入相应的队列中整段代码执行结束,看微任务队列中是否有任务等待执行,如果有则执行所有的微任务,直到微任务队列中的任务执行完毕,如果没有则继续执行新的宏任务执行新的宏任务,凡是在..._前端面试

linux基本概述-程序员宅基地

文章浏览阅读1k次。(3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。(3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。_linux

JavaScript学习手册十三:HTML DOM——文档元素的操作(一)_javascript学习手册十三:html dom——文档元素的操作(一)-程序员宅基地

文章浏览阅读7.9k次,点赞26次,收藏66次。HTML DOM——文档元素的操作1、通过id获取文档元素任务描述相关知识什么是DOM文档元素节点树通过id获取文档元素代码文件2、通过类名获取文档元素任务描述相关知识通过类名获取文档元素代码文件3、通过标签名获取文档元素任务描述相关知识通过标签名获取文档元素获取标签内部的子元素代码文件4、html5中获取元素的方法一任务描述相关知识css选择器querySelector的用法代码文件5、html5中获取元素的方法二任务描述相关知识querySelectorAll的用法代码文件6、节点树上的操作任务描述相关_javascript学习手册十三:html dom——文档元素的操作(一)

《LeetCode刷题》172. 阶乘后的零(java篇)_java 给定一个整数n,返回n!结果尾数中零的数量-程序员宅基地

文章浏览阅读132次。《LeetCode学习》172. 阶乘后的零(java篇)_java 给定一个整数n,返回n!结果尾数中零的数量

php 公众号消息提醒,如何开启公众号消息提醒功能-程序员宅基地

文章浏览阅读426次。请注意,本文将要给大家分享的并不是开启公众号的安全操作风险提醒,而是当公众号粉丝给公众号发消息的时候,公众号的管理员和运营者如何能在手机上立即收到消息通知,以及在手机上回复粉丝消息。第一步:授权1、在微信中点击右上角+,然后选择“添加朋友”,然后选择“公众号”,然后输入“微小助”并关注该公众号。2、进入微小助公众号,然后点击底部菜单【新增授权】,如下图所示:3、然后会打开一个温馨提示页面。请一定要..._php微信公众号服务提示

推荐文章

热门文章

相关标签