linux用户和组详解(linux的用户和组)
mhr18 2024-10-03 22:33 30 浏览 0 评论
一、用户
1. UID 和 GID
Linux 是通过 UID(USER ID)和 GID(GROUP ID)来识别用户的。账号只是为了方便用户
记忆。而 ID 与账号的对应就在 /etc/passwd 当中。登录 Linux 时,Linux 都干了些啥?
1) 先找寻 /etc/passwd 里面是否有这个账号?如果没有则跳出,如果有的话则将该
账号对应的 UID ( User ID )与 GID ( Group ID )读出来,另外,该账号的家目录与 shell
设定也一并读出;
2) 再来则是核对密码表啦!这时 Linux 会进入 /etc/shadow 里面找出对应的账号与
UID,然后核对一下你刚刚输入的密码与里头的密码是否相符?
3) 如果一切都 OK 的话,就进入 Shell 控管的阶段啰!
2. /etc/passwd 和/etc/shadow
1) /etc/passwd
这个档案的构造是这样的:
每一行都代表一个账号, 有几行就代表有几个账号在你的系统中!
不过需要特别留意的是, 里头很多账号本来就是系统中必须要的,我们可以简称他为
系统账号, 例如 bin, daemon, adm, nobody 等等,这些账号是系统正常运作时所需要的。
我们先来看一下每个 Linux 系统都会有的第一行,就是 root 这个系统管理员那一行
好了, 你可以明显的看出来,每一行使用『:』分隔开,共有七列,分别是:
root : x : 0 : 0 : root : /root : /bin/bash
改变用户 ID 的实验:
root@linux ~]# vi /etc/passwd
.....(前面省略).....
dmtsai:x:501:501::/home/dmtsai:/bin/bash <==将原本的 501:501 改成 3000:501
[root@linux ~]# ls -ld /home/
drwxr-xr-x 3 501 dmtsai 4096 Aug 30 10:37 dmtsai
# 瞧!这里就能够知道,其实档案记录的是 UID 啦~
2) /etc/shadow
上面约略提到,由于每个程序都需要取得 uid 与 gid 来判断权限的问题,所以,
/etc/passwd 的权限必须要设定成为只读的权限。在这样的情况下,即使这个档案内的密码
栏是加密的,坏心肠的朋友也可能利用暴力破解法去找出您的密码数据...... 因为这样的
关系,所以后来发展出将密码移动到 /etc/shadow 这个档案分隔开来的技术。
root:$1$i9Ejldjfjio389u9sjl$jljsoi45QE/:12959:0:99999:7:::
bin:*:12959:0:99999:7:::
daemon:*:12959:0:99999:7:::
adm:*:12959:0:99999:7:::
基本上, shadow 同样以『:』作为分隔符,共有九个字段。
二、组
1. /etc/group 和/etc/gshadow
也是以冒号『:』作为字段的分隔符,共分为四栏,每一字段的意义是:
2. 有效群组(effective group)与初始群组(initial group)
还记得每个使用者在他的 /etc/passwd 里面的第四栏有所谓的 GID 吧?那个 GID 就
是所谓的『初始群组 ( initial group ) 』了!也就是说,当使用者一登入系统,立刻就
拥有这个群组的相关权限的意思。举例来说,我们上面提到 dmtsai 这个使用者的
/etc/passwd 与 /etc/group 还有 /etc/gshadow 相关的内容如下:
在 /etc/passwd 里面,dmtsai 这个使用者所属的群组为
GID=501 , 也就是 /etc/group 里头 dmtsai 那个群组啦~因为这是 initial group ,所
以, 使用者一登入就会主动取得,不需要在 /etc/group 的第四个字段写入该账号的! 但
是非 initial group 的其它群组可就不同了。
三、有关用户和组的指令
1. 添加用户 useradd
[root@oracle ~]# useradd [-u UID] [-g initial_group] [-G other_group] \
> -[Mm] [-c 说明栏] [-d home] [-s shell] username
参数:
-u :后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个账号; -g :后面接的那个群组名称就是我们上面提到的 initial group 啦~ 该 group ID (GID) 会被放置到 /etc/passwd 的第四个字段内。 -G :后面接的群组名称则是这个账号还可以支持的群组。 这个参数会修改 /etc/group 内的相关资料喔! -M :强制!不要建立使用者家目录 -m :强制!要建立使用者家目录! -c :这个就是 /etc/passwd 的第五栏的说明内容啦~可以随便我们设定的啦~ -d :指定某个目录成为家目录,而不要使用默认值; -r :建立一个系统的账号,这个账号的 UID 会有限制 (/etc/login.defs) -s :后面接一个 shell ,预设是 /bin/bash
2. 修改用户 usermod
[root@oracle ~]# usermod [-cdegGlsuLU] username
参数:
-c :后面接账号的说明,即 /etc/passwd 第五栏的说明栏,可以加入一些账号的说明。 -d :后面接账号的家目录,即修改 /etc/passwd 的第六栏; -e :后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据啦! -g :后面接 group name,修改 /etc/passwd 的第四个字段,亦即是 GID 的字段! -G :后面接 group name,修改这个使用者能够支持的群组,修改的是 /etc/group 啰~ -l :后面接账号名称。亦即是修改账号名称, /etc/passwd 的第一栏! -s :后面接 Shell 的实际档案,例如 /bin/bash 或 /bin/csh 等等。 -u :后面接 UID 数字啦!即 /etc/passwd 第三栏的资料; -L :暂时将使用者的密码冻结,让他无法登入。其实仅改 /etc/shadow 的密码栏。 -U :将 /etc/shadow 密码栏的 ! 拿掉
3. 修改密码 passwd
[root@oracle ~]# passwd [useraccount]
[root@oracle ~]# passwd oracle //修改oracle用户的密码
要注意的是, passwd 这个指令由于使用者的身份而有两种用法, 如果是 root ,由于 root 具有至高无上的权力,所以 root 可以利用 passwd[username] 来帮使用者修改他们的密码!因此,『如果使用者的密码不见了, root 是可以帮他们进行密码的修改,而不需要知道旧密码。』另外,也只有 root 可以随便设定密码,即使该密码并不符合系统的密码验证要求~ 假
如我帮 dmtsai 建立的密码太简单,所以其实系统是『警告』过 root 的。 但在重复输入两次密码后,嘿嘿!您还是会看到 successfully 这个成功的字样呢! 那么如果是一般身份使用者,或者是 root 想要修改自己的密码时,直接输入『 passwd 』, 就能够修改自己的 密 码 了 。 一 般 身 份 使 用 者 输 入 的 密 码 会 经 过 系 统 的 验 证 , 验 证 的 机 制 除 了/etc/login.defs 里头规定的最小密码字符数之外,还会受到 /etc/pam.d/passwd 这PAM 模块的检验呢!
一般来说,输入的密码最好要符合底下的要求:
? 密码不能与账号相同;
? 密码尽量不要选用字典里面会出现的字符串;
? 密码需要超过 8 个字符;
如果无法经过验证,那么该密码就不被接受,当然还是只能使用旧密码啰! 此外,仅
能接受三次密码输入,如果输入的密码都不被接受,那只好....重新执行一次 passwd 啊!
而, 经过这个 passwd [username] 的动作后,您的账号就会有密码了。
4. 删除用户 Userdel
[root@oracle ~]# userdel [-r] username
参数:
-r :连同使用者的家目录也一起删除
这个指令下达的时候要小心了!通常我们要移除一个账号的时候,你可以手动的将
/etc/passwd 与 /etc/shadow 里头的该账号取消即可!一般而言,如果该账号只是『 暂时
不启用』的话,那么将 /etc/shadow 里头最后倒数一个字段设定为 0 就可以让该账号无法
使用,但是所有跟该账号相关的数据都会留下来! 使用 userdel 的时机通常是『 你真的
确定不要让该用户在主机上面使用任何数据了!』 另外,其实使用者如果在系统上面操作过
一阵子了,那么该使用者其实在系统内可能会含有其它档案的。
5. 显示用户所属的组 groups
[root@oracle ~]#groups username
后面会分享更多linux运维方面的内容,感兴趣的朋友可以关注下!!
相关推荐
- 【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...
- Pure Storage推出统一数据管理云平台及新闪存阵列
-
PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...
- 对Java学习的10条建议(对java课程的建议)
-
不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...
- SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!
-
官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...
- JDK21有没有什么稳定、简单又强势的特性?
-
佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...
- 「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了
-
在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...
- Java面试题及答案最全总结(2025版)
-
大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...
- 数据库日常运维工作内容(数据库日常运维 工作内容)
-
#数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...
- 分布式之系统底层原理(上)(底层分布式技术)
-
作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...
- oracle 死锁了怎么办?kill 进程 直接上干货
-
1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...
- SpringBoot 各种分页查询方式详解(全网最全)
-
一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...
- 《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略
-
《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...
- LoadRunner(loadrunner录制不到脚本)
-
一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...
- Redis数据类型介绍(redis 数据类型)
-
介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...
- RMAN备份监控及优化总结(rman备份原理)
-
今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)