首页 > 系统相关 >Linux 用户和组管理(详细)

Linux 用户和组管理(详细)

时间:2024-09-04 10:53:07浏览次数:9  
标签:demo edenluo 用户 密码 详细 Linux root com

今天给伙伴们分享一下Linux 用户和组管理,希望看了有所收获。

我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!

如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。

一、Linux用户和组的意义

  • Linux的一大特性:多用户、多任务。

  • 所谓多用户多任务就是指可以在同一时间,有多个用户登录同一个系统执行不同的任务而互不影响。

  • 假设现在有三个用户:root、lbb、mvv,三个用户同一时间登录了同一个系统,root去修改配置文件了,lbb去创建目录了,mvv去访问数据库了,每个用户互不干扰的独立执行自己的任务,并且每个用户不能够越线去访问其他用户正在操作的目录或执行其他用户下的任务,由此可见,不同的用户是拥有各自不同的权限的,Linux通过权限的划分和管理来实现多用户、多任务的运行机制。

Linux中的用户及其角色划分

按照角色来划分Linux中所有创建的用户,可以分为三种类型的角色:

  • 超级用户(管理员):享有最高权限,具备系统中的所有权限(一般为root),UID为0

  • 普通用户:有权限限制,只能对自己目录下的文件进行操作,可以登录系统,UID>=500(最好用户id大于1024)

  • 系统用户:别称“伪用户”,无法登录系统,一般系统默认持有如bin,nobody等,其主要作用是支撑系统运行,方便系统管理,UID为1-1000(闭区间)

二、用户管理

1、查看账户

[[email protected] ~]# id   查看的是当前登录账户的id信息,identify
uid=0(root)  gid=0(root)  组=0(root)	                    
主属组             
附属组
uid 系统用来识别账户的user identify
gid 系统用来识别组的group identify
[[email protected] ~]# id user1  查看user1这个账户的id信息
[[email protected] ~]# whoami 查看我现在所使用的账户

2、新建账户

[[email protected] ~]# useradd [参数] ... 用户名称
-d  指定家目录
    [[email protected] ~]# useradd -d /user3  user3
    [[email protected] ~]# cat /etc/passwd | grep user3
	 user3:x:502:502::/user3:/bin/bash

-u  指定uid

-o  允许uid重复使用,配合-u选项,不检查UID的唯一性
	[root@qianfeng ~]# useradd -u 2000 user100
	[root@qianfeng ~]# id user100
	uid=2000(user100) gid=2000(user100) 组=2000(user100)
	[root@qianfeng ~]# useradd -o  -u 2000 user101
	[root@qianfeng ~]# id user101
	uid=2000(user100) gid=2000(user100) 组=2000(user100)
	[root@qianfeng ~]# id user100
	uid=2000(user100) gid=2000(user100) 组=2000(user100)


-g  指定主属组
    [[email protected] ~]# useradd -g 1000  user5
    [[email protected] ~]# id user5
    uid=1001(user5) gid=1000(user4) 组=1000(user4)

-c  指定描述字段
    [[email protected] ~]# useradd -c qq-28282828 user6
    [[email protected] ~]# cat /etc/passwd | grep user6
    user6:x:1002:1002:qq-28282828:/home/user6:/bin/bash

-s	指定登录shell
    查看系统现在所支持的shell
    [[email protected] ~]# cat /etc/shells
    /bin/sh
    /bin/bash
    /sbin/nologin
    /bin/dash
    /bin/tcsh
    /bin/csh
    [[email protected] ~]# useradd -s /sbin/nologin user7
    [[email protected] ~]# cat /etc/passwd | grep user7
    user7:x:1003:1003::/home/user7:/sbin/nologin

3、修改账户

1、修改passwd文件
  • 此文件里面除了密码字段能删除不能直接修改之外,其他字段全部都能直接修改

  • [[email protected] ~]# cat /etc/passwd 
    

    账户的基本信息都在这个文件内

  • 用户名:代表密码:uid:gid:账户的描述信息:家目录:登录shell

2、使用命令usermod
用法:usermod [选项] 用户名

选项:
  -c, --comment 注释            GECOS 字段的新值
  -d, --home HOME_DIR           用户的新主目录
  -e, --expiredate EXPIRE_DATE  设定帐户过期的日期为 EXPIRE_DATE
  -f, --inactive INACTIVE       过期 INACTIVE 天数后,设定密码为失效状态
  -g, --gid GROUP               强制使用 GROUP 为新主组
  -G, --groups GROUPS           新的附加组列表 GROUPS
  -a, --append GROUP            将用户追加至上边 -G 中提到的附加组中,
                                并不从其它组中删除此用户
  -h, --help                    显示此帮助信息并推出
  -l, --login LOGIN             新的登录名称
  -L, --lock                    锁定用户帐号
  -m, --move-home               将家目录内容移至新位置 (仅于 -d 一起使用)
  -o, --non-unique              允许使用重复的(非唯一的) UID
  -p, --password PASSWORD       将加密过的密码 (PASSWORD) 设为新密码
  -R, --root CHROOT_DIR         chroot 到的目录
  -s, --shell SHELL             该用户帐号的新登录 shell
  -u, --uid UID                 用户帐号的新 UID
  -U, --unlock                  解锁用户帐号
  -Z, --selinux-user  SEUSER       用户账户的新 SELinux 用户映射
1、修改用户的UID
1、创建测试用户
[[email protected] ~]# useradd edenluo
[[email protected] ~]# id edenluo
uid=1002(edenluo) gid=1002(edenluo) 组=1002(edenluo)
2、修改用户的UID
[[email protected] ~]# usermod -u 1111 edenluo
[[email protected] ~]# id edenluo
uid=1111(edenluo) gid=1002(edenluo) 组=1002(edenluo)

2、修改shell
查看edenluo用户原来的shell
[[email protected] ~]# grep edenluo /etc/passwd
edenluo:x:1111:1002::/home/edenluo:/bin/bash
## 修改shell
[[email protected] ~]# usermod -s /sbin/nologin edenluo
[[email protected] ~]# !grep
grep edenluo /etc/passwd
edenluo:x:1111:1002::/home/edenluo:/sbin/nologin
2、更改用户主目录
先登录到用户家目录创建一个文件便于测试
[[email protected] ~]# cd /home/edenluo/
[[email protected] edenluo]# touch a.txt
可以看到刚刚创建的文件
[[email protected] edenluo]# ll
总用量 0
-rw-r--r--. 1 root root 0 1月  18 20:03 a.txt
使用-d参数移动家目录
[[email protected] edenluo]# usermod  -m -d /tmp/demo edenluo
[[email protected] edenluo]# cd /tmp/demo
可以看到家目录已经移动过来了
[[email protected] demo]# ls
a.txt

这里的 -m选项会自动创建新目录并且移到内容到新目录里面

3、添加说明信息
查看没有添加之前的信息
[[email protected] demo]# grep edenluo /etc/passwd
edenluo:x:1111:1002::/tmp/demo:/sbin/nologin
使用-c参数添加
[[email protected] demo]# usermod -c "i am demo" edenluo
## 查看添加之后的信息
[[email protected] demo]# grep edenluo /etc/passwd
edenluo:x:1111:1002:i am demo:/tmp/demo:/sbin/nologin
4、修改用户名为zhangsan
[[email protected] demo]# usermod -l zhangsan edenluo
[[email protected] demo]# id zhangsan
uid=1111(zhangsan) gid=1002(edenluo) 组=1002(edenluo)
# 可以看到原来的用户没有了
[[email protected] demo]# id edenluo
id: edenluo: no such user
  • 此处需要注意,把edenluo 改为zhangsan
  • 语法为:
  • usermod -l 新用户 要修改的用户名
5、 锁定用户demo
  • 账号锁定之后,普通用户无法su,root 可以su
[[email protected] demo]# usermod -L demo
6、 解锁用户demo
[[email protected] demo]# usermod -U demo
7、添加新的附加组
[[email protected] demo]# usermod -aG 组名 用户名
  • 注意: 组名在前面,用户在后面
8、指定帐号过期日期
[[email protected] demo]# usermod -e 2023/11/11 demo

查看过期时间
[[email protected] demo]# chage -l demo
最近一次密码修改时间			 :1月 18, 2023
密码过期时间					:从不
密码失效时间					:从不
帐户过期时间					:11月 11, 2023
两次改变密码之间相距的最小天数	  :0
两次改变密码之间相距的最大天数	  :99999
在密码过期之前警告的天数	    :7
9、指定用户帐号密码过期多少天后,禁用该帐号
## 先查看lisi用户的账号信息
[[email protected] demo]# sed -n '$p' /etc/shadow    tail -1 /etc/shadow   
lisi:!!:19375:0:99999:7:::
## 使用 -f 参数进行修改
[[email protected] demo]# usermod -f 30 lisi
[[email protected] demo]# !sed
sed -n '$p' /etc/shadow
lisi:!!:19375:0:99999:7:30::
  • 可以看到实效的时间已经变成了30天

4、账户密码操作

1、给账户设置密码

[[email protected] ~]# passwd     并且默认密码符合复杂度, 大写,小写,数字,特殊符号,  8
只适用于root账户	
[[email protected] ~]# passwd 用户名称    passwd 后面要跟用户名,必须root用户

2、锁定密码,不允许修改密码

[[email protected] ~]# passwd -l 账户名称
[[email protected] ~]# passwd -l user10       同时普通用户也无法切换到密码suo
锁定用户 user10 的密码 。
passwd: 操作成功

3、解锁密码,允许修改密码

[[email protected] ~]# passwd -u 账户名称
[[email protected] ~]# passwd -u user10
解锁用户 user10 的密码 。
passwd: 操作成功

4、查看密码状态

[[email protected] ~]# passwd -S 账户名称
[[email protected] ~]# passwd -S user10
user10 PS 2013-11-21 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)
[[email protected] ~]# passwd -S user10
user10 LK 2013-11-21 0 99999 7 -1 (密码已被锁定。)

5、强制指定的用户在下次登陆时必须重置其密码

[[email protected] ~]# passwd -e user10 
Expiring password for user user10. 
passwd: Success

6、删除指定用户的密码值:

[[email protected] ~]# passwd -d user10 
Removing password for user user10. 
passwd: Success

7、静默设置密码

[[email protected] ~]# echo ‘123’ | passwd  --stdin user10 

8、/etc/shadow 又称他为影子文件

[[email protected] ~]# man 5 shadow
eden:$6$Qxq1sIXL$3dG7NNqtwFAj/etKKs3dZ9NzQS0NES42cDn78go/5s8ijGh9fIsEQnqRf2eGtV29eWIcy.mvZdX7asaiafkj00:19590:7:90:7:7::
  • 用户名
  • 密码密文,由3部分组成,其中第一部分表示加密方式:
    1 1 1 表示 MD5
    5 5 5 表示 SHA-256
    6 6 6 表示 SHA-512
    2 a 2a 2a 和 2 y 2y 2y表示Blowfish算法
  • 最后一次更改密码的日期 .(从1970年1月1日开始计算,到修改密码时的天数)
  • 两次修改密码间隔的最小天数,如果是0,表示随时可以修改密码。
  • 两次修改密码间隔的最大天数,超过这个天数,密码将失效(密码有效期)。默认值99999表示永不失效。
  • 密码警告期限(密码失效前多少天提醒用户修改密码)。默认提前一周通知用户修改密码(登录系统时,系统提示修改密码)。
  • 密码禁用期限,密码过期之后,仍然接受此密码的天数(在此期间,用户应该在下次登录时修改密码)
  • 账户过期期限,从1970年1月1日开始计算,超过这个日期,帐户将无法使用。空字段表示账户永不过期。
  • 保留字段

5、删除账户

[[email protected] ~]# userdel -r 用户名称
-r 连带个人信息(家目录,个人邮箱)一起删除	

6、切换账户

[[email protected] ~]# su -  账户    - 完全切换(包括所在路劲切换到用户家目录,bash)  不加- 是不完整切换 bash 保留所在路径
[[email protected] ~]# su -l 账户    -l  login

三、组管理

1、创建组

[[email protected] ~]# groupadd 组名
[[email protected] ~]# groupadd -g gid 组名
[[email protected] ~]# groupadd -g gid -o 组名

2、查看组

[[email protected] ~]# cat /etc/group
  • 组名:代表组密码:gid:组员

3、查看一个用户的所属组

[[email protected] ~]# groups 用户名称

4、修改组

[[email protected] ~]# groupmod 参数 组名
  • ​ -g 修改组id
  • ​ -n 设置群组名称
  • ​ -o 允许重复使用组id
[[email protected] ~]# groupmod -g 2000 grp1
[[email protected] ~]# groupmod -n grp3 grp1

5、给组设置密码

[[email protected] ~]# gpasswd 参数 组名
[[email protected] ~]# gpasswd grp2  

组密码作用:临时切换当前登陆账户组身份,让这个账户暂时拥有所切换组的权限

例子:用户tingting临时切换到1802组,
tingting是不属于1802组的
[tingting@wing ~]$ ll /a
-rw-r----- 1 root 1802 0 Jun 27 10:00 /a

[tingting@wing ~]$ cat /a
cat: /a: Permission denied
[tingting@wing ~]$ newgrp 1802
Password: 
[tingting@wing ~]$ cat /a
[tingting@wing ~]$ 

6、给组添加账户

[[email protected] ~]# gpasswd -a user10 grp2
Adding user user10 to group grp2
  • 同时添加多个用户到组:
[[email protected] ~]# gpasswd -M jim,tom,wing 组名

7、从组删除账户

[[email protected] ~]# gpasswd -d user10 grp2

8、指定组管理员

[[email protected] ~]# gpasswd -A user12 grp2

9、组密码文件

[[email protected] ~]# cat /etc/gshadow
 组名:密码:组管理员:组员

10、删除组

 [[email protected] ~]# groupdel 组名
用户的主属组不能删除

如果有版帮助,帮忙免费的关注一下**公众号「想吃西红柿」「云原生运维实战派」**后续会有更多实用的运维技术分享给伙伴们,您的关注就是我最大的成就。

标签:demo,edenluo,用户,密码,详细,Linux,root,com
From: https://blog.csdn.net/mohuanfenghuang/article/details/141835480

相关文章

  • Linux 磁盘管理-存储设备及类型介绍(超详细)
    今天给伙伴们分享一下Linux磁盘管理-存储设备及类型介绍,希望看了有所收获。我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!如果伙伴们看了文档觉得有用,欢迎大家关注......
  • 《安装Windows 11 系统详细步骤》
    以下是安装Windows11系统的详细步骤: 准备工作: 1. 检查电脑是否满足Windows11的系统要求,包括处理器、内存、存储、TPM等。2. 备份重要的数据,因为安装过程中可能会导致数据丢失。3. 准备一个8GB或以上容量的U盘,并将其格式化为FAT32格式。4. 从微软官方......
  • linux 基础操作
    LinuxOperationsoriginurl(https://ubuntu.com/tutorials/command-line-for-beginners#4-creating-folders-and-files)Fileoperatorsopenaterminal_shift+alt+t_showcurrentworkingdirectory_pwd_changedirectorycd*changedirectorytoroot_cd......
  • ceph:通过传统用户空间 tgtd 工具 以 iscsi 方式使用ceph rdb设备
    如题:安装用户空间的iscsitarget工具。以麒麟v10为例:首先,安装以下iscsitarget工具 然后,配置/etc/tgt/targets.conf,配置cephrbd后端请注意:最核心的配置其实是“bsopts”!根据“scsi-target-utils-rbd”的相关说明文档,可通过配置“bsopts”来制定ceph.conf配置文件的位置。......
  • 0 JavaScript高级程序设计(第4版)【JS红宝书】【详细思维导图】【持续更新】
    ProcessOn访问链接JavaScript高级程序设计(第4版)阅读路线图,涵盖:基本知识进阶内容BOM和DOMJavascriptAPIJavaScript设计模式和实践策略ProcessOn访问链接......
  • Linux-devops
    云原生时代:以Devops、SRE框架为指导,Docker/K8S/微服务为基础,用分布式方式加上Python和Go语言,构建一套云技术产品体系,以及进行高级管理工具的二次开发,实现属于公司自己的自动化运维体系以及云技术体系的自动化产品。使用的自动化运维产品,可以用rancherargoCDtecktonClgit......
  • Linux启动后自动登录root进入控制台
    通过修改/etc/inittab文件来实现1.buildroot编译出来的 /etc/inittab文件如下##Copyright(C)2001ErikAndersen<[email protected]>##Note:BusyBoxinitdoesn'tsupportrunlevels.Therunlevelsfieldis#completelyignoredbyBusyBoxinit.Ifyo......
  • 最新Kali Linux安装教程(非常详细)(附镜像包)
    镜像下载:链接:https://pan.baidu.com/s/1W2Jpl5_UNNFKaIs8fLIl7w?pwd=xxxx 提取码:xxxx  配置虚拟机这里我们以最新的vm17.5为例。进行配置虚拟机。1.创建新的虚拟机2.自定义3.直接下一步4.选择稍后安装操作系统因为kali是基于debian深度开发,这里我们选debia......
  • Linux服务器之TOP命令详解
    在做性能调优的过程中,我们经常需要用到top命令来查看服务器实时的资源占用情况,通过top命令,我们可以查看到服务器的各项性能指标以及各个进行的资源使用情况。命令格式:top[参数]命令参数:-b批处理-c显示完整的治命令-I忽略失效过程-s保密模式-S累积模式-i<......
  • 宠物小程序能为用户提供哪些帮助
    宠物服务小程序为宠物主人提供了一系列便捷的服务,旨在满足宠物日常生活中的各种需求。以下是宠物服务小程序可能提供的主要服务:1.**宠物寄养与托管**:当宠物主人出差或度假时,可以通过小程序寻找可靠的寄养服务,确保宠物在主人不在期间得到妥善照顾。2.**宠物美容预约**:提供......