这应该是Linux用户与用户组最详细的知识了吧!

news2024/11/18 2:11:51

【微|信|公|众|号:厦门微思网络】

 Linux学习专栏










 

1、用户和用户组文件

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


在 linux 系统中,所创建的用户帐号和其相关信息 (密码除外) 均是存放在 / etc/passwd 配置文件中。由于所有用户对 passwd 文件均有读取的权限,因此密码信息并未保存在该文件中,而是保存在了 / etc/shadow 的配置文件中。


在 passwd 文件中,一行定义一个用户帐号,每行均由多个不同的字段构成,各字段值间用 ":” 分隔,每个字段均代表该帐号某方面的信息。


在刚安装完成的 linux 系统中,passwd 配置文件已有很多帐号信息了,这些帐号是由系统自动创建的,他们是 linux 进程或部分服务程序正常工作所需要使用的账户,这些账户的最后一个字段的值一般为 / sbin/nologin,表示该帐号不能用来登录 linux 系统。


在 passwd 配置文件中,从左至右各字段的对应关系及其含义:

图片

由于 passwd 不再保存密码信息,所以用 x 占位代表。


若要使某个用户账户不能登录 linux,只需设置该用户所使用的 shell 为 / sbin/nologin 即可。比如,对于 FTP 账户,一般只允许登录和访问 FTP 服务器,不允许登录 linux 操作系统。若要让某用户没有 telnet 权限,即不允许该用户利用 telnet 远程登录和访问 linux 操作系统,则设置该用户所使用的 shell 为 / bin/true 即可。若要让用户没有 telnet 和 ftp 登录权限,则可设置该用户的 shell 为 / bin/false。


在 / etc/shells 文件中,若没有 / bin/true 或 / bin/false,则需要手动添加
[root@localhost ~]# echo "/bin/false">>/etc/shells
[root@localhost ~]# echo "/bin/true">>/etc/shells

2、用户密码文件

为安全起见,用户真实的密码采用 MD5 加密算法加密后,保存在 / etc/shadow 配置文件中,该文件只有 root 用户可以读取。


与 passwd 文件类似,shadow 文件也是每行定义和保存一个账户的相关信息。第一个字段为用户帐户名,第二个字段为账户的密码。

3、用户组帐号文件


用户组帐号信息保存在 / etc/group 配置文件中,任何用户均可以读取。用户组的真实密码保存在 / etc/gshadow 配置文件中。


在 group 中,第一个字段代表用户组的名称,第二个字段为 x,第三个为用户组的 ID 号,第四个为该用户组的用户成员列表,各用户名间用逗号分隔。

4、添加用户


创建或添加新用户使用 useradd 命令来实现,其命令用法为:


useradd [option] username
该命令的 option 选项较多,常用的主要有:
-c 注释      用户设置对账户的注释说明文字
-d 主目录    指定用来取代默认的 / home/username 的主目录
-m          若主目录不存在,则创建它。-r 与 - m 相结合,可为系统账户创建主目录
-M          不创建主目录
-e date     指定账户过期的日期。日期格式为 MM/DD/YY
-f days     帐号过期几日后永久停权。若指定为 -,则立即被停权,若为 - 1,则关闭此功能
-g 用户组     指定将用户加入到哪个用户组,该用户组必须存在
-G 用户组列表 指定用户同时加入的用户组列表,各组用逗分隔
-n          不为用户创建私有用户组
-s shell    指定用户登录时使用的 shell,默认为 / bin/bash
-r          创建一个用户 ID 小于 500 的系统账户,默认不创建对应的主目录
-u 用户 ID    手动指定新用户的 ID 值,该值必须唯一,且大于 499
-p password 为新建用户指定登录密码。此处的 password 是对应登录密码经 MD5 加密后所得到的密码值,不实真实密码原文,因此在实际应用中,该参数选项使用较少,通常单独使用 passwd 命令来为用户设置登录密码。

示例:


若要创建一个名为 nisj 的用户,并作为 babyfish 用户组的成员,则操作命令为:
[root@localhost ~]# useradd -g babyfish nisj
[root@localhost ~]# id nisj
uid=502(nisj) gid=500(babyfish) groups=500(babyfish)
[root@localhost ~]# tail -1 /etc/passwd
nisj:x:502:500::/home/nisj:/bin/bash
添加用户时,若未用 - g 参数指定用户组,则系统默认会自动创建一个与用户帐号同名的私有用户组。若不需要创建该私有用户组,则可选用 - n 参数。
比如,添加一个名为 nsj820 的账户,但不指定用户组,其操作结果为:
[root@localhost ~]# useradd nsj820
[root@localhost ~]# id nsj820
uid=503(nsj820) gid=503(nsj820) groups=503(nsj820)
[root@localhost ~]# tail -1 /etc/passwd
nsj820:x:503:503::/home/nsj820:/bin/bash
[root@localhost ~]# tail -2 /etc/passwd
nisj:x:502:500::/home/nisj:/bin/bash
nsj820:x:503:503::/home/nsj820:/bin/bash #系统自动创建了名为 nsj820 的用户组,ID 号为 503


创建用户账户时,系统会自动创建该用户对应的主目录,该目录默认放在 / home 目录下,若要改变位置,可以利用 - d 参数指定;对于用户登录时使用的 shell,默认为 / bin/bash,若要更改,则使用 - s 参数指定


例如,若要创建一个名为 vodup 的账户,主目录放在 / var 目录下,并指定登录 shell 为 / sbin/nologin,则操作命令为:


[root@localhost ~]#  useradd -d /var/vodup -s /sbin/nologin vodup
[root@localhost ~]# id vodup
uid=504(vodup) gid=504(vodup) groups=504(vodup)
[root@localhost ~]# tail -1 /etc/passwd
vodup:x:504:504::/var/vodup:/sbin/nologin
[root@localhost ~]# tail -1 /etc/group
vodup:x:504:

5、设置帐号属性


对于已创建好的用户,可使用 usermod 命令来修改和设置账户的各项属性,包括登录名,主目录,用户组,登录 shell 等,该命令用法为:


usermod [option] username
部分 option 选项


(1)改变用户帐户名


使用 - l 参数来实现,命令用法为:
usermod -l 新用户名 原用户名


例如,若要将用户 nsj820 更名为 nsj0820,则操作命令为:
[root@localhost ~]# usermod -l nsj0820 nsj820
[root@localhost ~]# id nsj0820
uid=503(nsj0820) gid=503(nsj820) groups=503(nsj820)
[root@localhost ~]# tail -1 /etc/passwd
nsj0820:x:503:503::/home/nsj820:/bin/bash
从输出结果可见,用户名已更改为 nsj0820。主目录仍为原来的 / home/nsj820,若也要更改为 / home/nsj0820,则可通过执行以下命令来实现
[root@localhost ~]# usermod -d /home/nsj0820 nsj0820
[root@localhost ~]# id nsj0820
uid=503(nsj0820) gid=503(nsj820) groups=503(nsj820)
[root@localhost ~]# tail -1 /etc/passwd
nsj0820:x:503:503::/home/nsj0820:/bin/bash
[root@localhost home]# mv /home/nsj820 /home/nsj0820

(2)锁定账户


若要临时禁止用户登录,可将该用户账户锁定。锁定账户可利用 - L 参数来实现,其命令用法为:


usermod -L 要锁定的账户


linux 锁定用户,是通过在密码文件 shadow 的密码字段前加 “!” 来标识该用户被锁定。


[root@localhost home]# usermod -L nsj0820
[root@localhost home]# tail -1 /etc/shadow
nsj0820:!$1$JEW25RtU$X9kIdwJi/HPzSKMVe3EK30:16910:0:99999:7:::


但通过 root 用户进去,然后 su 到被锁定的用户,是可以进去的。

(3)解锁账户


要解锁账户,可以使用带 -U 参数的 usermod 命令来实现。


[root@localhost ~]# usermod -U nsj0820
[root@localhost ~]# tail -1 /etc/shadow
nsj0820:$1$JEW25RtU$X9kIdwJi/HPzSKMVe3EK30:16910:0:99999:7:::

6、删除账户

要删除账户,可以使用 userdel 命令来实现,其用法为:
userdel [-r] 帐户名


-r 为可选项,若带上该参数,则在删除该账户的同时,一并删除该账户对应的主目录


[root@localhost ~]# userdel -r nsj0820


若要设置所有用户账户密码过期的时间,则可通过修改 / etc/login.defs 配置文件中的 PASS_MAX_DAYS 配置项的值来实现,其默认值为 99999,代表用户账户密码永不过期。其中 PASS_MIN_LEN 配置项用于指定账户密码的最小长度,默认为 5 个字符。

7、设置用户登录密码


使用 passwd 命令来设置,其命令用法为:
passwd [帐户名]
若指定了帐户名称,则设置指定账户的登录密码,原密码自动被覆盖。只有 root 用户才有权设置指定账户的密码。一般用户只能设置或修改自己账户的密码(不带参数)。


例如, 若要设置 nisj 账户的登陆密码,则操作命令为:
[root@localhost home]# passwd nisj
Changing password for user nisj.
New password: 
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.
账户登录密码设置后,该账户就可以登录系统了。

8、锁定 / 解锁账户密码及查询密码状态、删除账户密码


在 linux 中,除了用户账户可被锁定外,账户密码也可被锁定,任何一方被锁定后,都将无法登录系统。只有 root 用户才有权执行该命令,锁定账户密码使用带 - l 选项的 passwd 命令,其用法为:


passwd -l 帐户名
passwd -u 帐户名 
   #解锁账户密码
[root@localhost home]# passwd -l nisj
Locking password for user nisj.
passwd: Success
[root@localhost home]# passwd -u nisj
Unlocking password for user nisj.
passwd: Success


要查询当前账户的密码是否被锁定,可以使用带 - S 参数的 passwd 命令来实现,其用法为:
passwd -S 账户名
例如
[root@localhost home]# passwd -S nisj
nisj PS 2016-04-18 0 99999 7 -1 (Password set, MD5 crypt.)


如要删除账户的密码,使用带 - d 参数的 passwd 命令来实现,该命令也只有 root 用户才有权执行,其用法为:
passwd -d 帐户名
帐户密码被删除后,将不能登录系统,除非重新设置密码

9、创建用户组


用户和用户组属于多对多关系,一个用户可以同时属于多个用户组,一个用户组可以包含多个不同的用户。


创建用户组使用 groupadd 命令,其命令用法为:
groupadd [-r] 用户组名称


若命令带有 - r 参数,则创建系统用户组,该类用户组的 GID 值小于 500;若没有 - r 参数,则创建普通用户组,其 GID 值大于或等于 500.

10、修改用户组属性

用户组创建后,根据需要可对用户组的相关属性进行修改。对用户组属性的修改,主要是修改用户组的名称和用户组的 GID 值。
(1)改变用户组的名称
若要对用户组进行重命名,可使用带 - n 参数的 groupmod 命令来实现,其用法为:
groupmod -n 新用户组名  原用户组名


对于用户组改名,不会改变其 GID 的值


比如,若要将 student 用户组更名为 teacher 用户组,则操作命令为:
[root@localhost home]# groupadd student
[root@localhost home]# tail -1 /etc/group
student:x:505:
[root@localhost home]# groupmod -n teacher student
[root@localhost home]# tail -1 /etc/group
teacher:x:505:


(2)重设用户组的 GID
用户组的 GID 值可以重新进行设置修改,但不能与已有用户组的 GID 值重复。对 GID 进行修改,不会改变用户名的名称。


要修改用户组的 GID,可使用带 - g 参数的 groupmod 命令,其用法为:
groupmod -g new_GID 用户组名称


例如,若要将 teacher 组的 GID 更改为 506,则操作命令为:
[root@localhost home]#  groupmod -g 506 teacher
[root@localhost home]# tail -1 /etc/group
teacher:x:506:

11、删除用户组


删除用户组使用 groupdel 命令来实现,其用法为:
groupdel 用户组名


在删除用户组时,被删除的用户组不能是某个账户的私有用户组,否则将无法删除,若要删除,则应先删除引用该私有用户组的账户,然后再删除用户组。


[root@localhost home]# groupdel teacher
[root@localhost ~]# grep teacher /etc/group    #没有输出,说明 teacher 用户组以不存在,删除成功

12、添加用户到指定的组 / 从指定的组中移除用户


可以将用户添加到指定的组,使其成为该组的成员。其实现命令为:
gpasswd -a 用户账户  用户组名


若要从用户组中移除某用户,其实现命令为:
gpasswd -d 用户账户  用户组名
例如:
[root@localhost home]# groupadd student
[root@localhost home]# gpasswd -a nisj student
Adding user nisj to group student
[root@localhost home]# id nisj
uid=502(nisj) gid=500(babyfish) groups=500(babyfish),505(student)
[root@localhost home]# gpasswd -d nisj student
Removing user nisj from group student
[root@localhost home]# id nisj
uid=502(nisj) gid=500(babyfish) groups=500(babyfish)
[root@localhost home]# groups nisj
nisj : babyfish

13、设置用户组管理员


添加用户到组和从组中移除某用户,除了 root 用户可以执行该操作外,用户组管理员也可以执行该操作。


要将某用户指派为某个用户组的管理员,可使用以下命令来实现;


gpasswd -A 用户账户 要管理的用户组
命令功能:将指定的用户设置为指定用户组的用户管理员。用户管理员只能对授权的用户组进行用户管理 (添加用户到组或从组中删除用户),无权对其他用户组进行管理。


[root@localhost home]# gpasswd -a nisj student
Adding user nisj to group student
[root@localhost home]# gpasswd -A nisj student
[root@localhost home]# useradd stu
[root@localhost home]# gpasswd -a stu student
Adding user stu to group student
[root@localhost home]# groups stu
stu : stu student
[root@localhost home]# su - nisj
[nisj@localhost ~]$ gpasswd -d stu student
Removing user stu from group student
[nisj@localhost ~]$ gpasswd -d stu stu
gpasswd: Permission denied.

14、用户其他相关


另外,linux 还提供了 id,whoami 和 groups 等命令,用来查看用户和组的状态。id 命令用于显示当前用户的 uid,gid 和所属的用户组的列表;whoami 用于查询当前用户的名称;groups 用于产看指定用户所隶属的用户组。


同时,我们可以使用图形界面来管理用户和用户组,系统 ---> 管理 ---> 用户和组群可以打开相应的配置界面。

附:将用户添加到组中,也可以如下操作
将一个用户添加到用户组中,千万不能直接用: 
usermod -G groupA 
这样做会使你离开其他用户组,仅仅做为这个用户组 groupA 的成员。 
应该用 加上 -a 选项: 
usermod -a -G groupA user
(FC4: usermod -G groupA,groupB,groupC user)
-a 代表 append, 也就是 将自己添加到 用户组 groupA 中,而不必离开其他用户组。

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

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

相关文章

考虑可再生能源消纳的建筑综合能源系统日前经济调度模型(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

基于智能远程监考方案,云上组考打造考试新范式

热潮兴起,「云上组考」是怎样炼成的? 疫情以来,改变了很多场景形态,“考试”是其中之一。 越来越多的学校开始采用云上组考模式,提高考试效率,节省人力、物力成本,规范考试管理,引发…

掌握Linux服务器:构建、管理和优化稳健的互联网基础设施

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 引言 Linux服务器是构建…

基于SpringBoot+Vue+MySQL实现的高校固定资产管理系统源代码+数据库

基于 Vue 和 SpringBoot 的高校固定资产管理系统 完整代码下载地址:高校固定资产管理系统 软件简介 基于 Vue 和 SpringBoot 的高校固定资产管理系统,用于实现高校对固定资产的管理需求,包含资产品类、资产单位、资产仓库、资产供应商、资…

分布式文件系统的新兴力量:揭秘Alluxio的元数据管理机制【文末送书】

文章目录 写在前面01 分布式文件系统元数据的常见类型1.1 文件(inode)元数据1.2 数据块(block)元数据1.3 Worker元数据 02 分布式文件系统元数据的存储模式2.1 元数据存储在堆上(HEAP模式)2.2 元数据存储在…

智安网络|提升企业网络安全:避免成为勒索软件攻击的目标

勒索软件是当前网络世界中一种威胁严峻的恶意软件类型,勒索软件攻击近年来不断增加,越来越多的企业成为勒索软件攻击的目标。这种攻击方式通过加密敏感数据,并勒索企业支付赎金以解锁数据,给企业造成严重的经济损失与声誉风险。企…

GDB之call、print手动调用函数(十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

SSM - Springboot - MyBatis-Plus 全栈体系(八)

第二章 SpringFramework 四、SpringIoC 实践和应用 4. 基于 配置类 方式管理 Bean 4.4 实验三:高级特性:Bean 注解细节 4.4.1 Bean 生成 BeanName 问题 Bean 注解源码: public interface Bean {//前两个注解可以指定Bean的标识AliasFor…

【计算机视觉 | 图像模型】常见的计算机视觉 image model(CNNs Transformers) 的介绍合集(六)

文章目录 一、Co-Scale Conv-attentional Image Transformer(CoaT)二、Pyramid Vision Transformer v2(PVTv2)三、Class-Attention in Image Transformers(CaiT)四、PoolFormer五、ScaleNet六、VoVNet七、Siamese U-Net八、Single…

MT4和MT5的共同点,anzo capital昂首资本说一个,没人有意见吧

相信很多交易者对MT4和MT5都不会陌生,但您了解他们背后之间的关系吗?今天anzo capital昂首资本就和各位交易者一起聊聊,没人有意见的MT4和MT5的共同点。 其实谈起MT4和MT5,就不得不聊聊他们背后的公司MetaQuotes,MetaQuotes 是…

家政小程序源码家政预约小程序独立版,家政上门预约,功能强大

家政服务行业作为一个相对传统的行业,随着互联网的发展迅速,和用户群体的改变,家政服务公司也需要改变一下经营思路了,否则未来很难满足新一代用户群体的个性化需求。 核心功能: 1、师傅(服务人员)入驻:家…

IDEA怎么将CRLF转化为LF

执行命令: git config --global core.autocrlf input 或者使用IDEA的自动提交的修复

2023 Google开发者大会:你了解机器学习的新动向吗?

目录 0 年度科技盛会1 生成式机器学习2 无障碍游戏体验3 跨平台机器学习总结 0 年度科技盛会 2023Google开发者大会在上海浦东举办,为开发者和科技爱好者们带来新技术、新产品、新动向 可能很多同学对Google 开发者大会还不熟悉,Google 开发者大会是 G…

异步FIFO设计

1 FIFO简介 FIFO的本质是RAM,具有先进先出的特性。 FIFO的基本使用原则:空时不能读,满时不能写 FIFO的两个重要参数:宽度和深度 FIFO的两种类型: 同步FIFO:读写时钟相同,通常用来做数据缓存…

医疗领域超低温监控,你了解吗?

超低温冰箱在医疗保健领域中扮演着不可或缺的角色。它们被广泛用于存储生物样本、药物和疫苗等温度敏感的医疗物品,以确保这些关键资源的质量和有效性。 然而,温度波动和不稳定性可能会对这些物品造成严重损害,甚至威胁患者的生命。为了应对这…

对话泛微:产业数字化时代,我们需要怎样的OA?

在泛微诞生以后的十年,恰是OA系统的大规模突破。十年间,上百家OA企业的诞生直接将市场推向了鼎盛期。而后又迎来了移动互联网风口,在互联网厂商的冲击之下,传统OA在不断进击的同时,还要进行自我蜕变,成为“…

ppt录制在哪?实用技巧分享!

在现代演示和培训中,PPT演示已经成为越来越流行的一种交流方式。而录制ppt也成为了很多商务演讲、教学讲解、产品演示等场合的必备技能。本文将为您介绍两种常见的ppt录制方式,帮助您轻松录制ppt演示的过程。 ppt录制在哪? ppt是一款流行的演…

操作系统Deepin DTK顺利适配Qt6,从而提供更高效开发体验

据了解,当前deepin DTK(Development ToolKit)已经在近日顺利适配Qt6 (6.4.2),从而实现全面升级。 据悉,DTK作为 deepin 基于Qt开发的一整套通用开发框架,并且是deepin操作系统中的核心位置。    Multiable万达宝ERP(www.multi…

打败全国百分之99.99的模板方法模式讲解

目录 背景:模板方法定义:步骤:初始版: 每个人都抄卷子,然后抄完写自己的答案第一版:将试卷的题抽象出来第二版:将每个人回答的部分抽象出来第三版:将答题步骤封装出来(这…

lenovo联想Legion Y9000P IRX8H 2023款(82WQ)原装出厂Windows11系统

联想拯救者笔记本电脑原厂系统自带网卡、显卡、声卡等所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 链接:https://pan.baidu.com/s/1YBji_oh7xOkq-NxnS8Mm8g?pwdn17o 提取码:n17o 所需要工具:16G或以上的U盘 文件…