Linux-8 用户管理

news2025/1/19 3:42:30

Linux-8 用户管理

什么是用户?

  • Linux/Windows通过用户来管理和维护系统;

    • Windows下的管理员用户:Administrator
    • Linux下的管理员用户:root
  • Windows/Linux都是多用户系统

    • Windows同一时间只能使用1个用户
    • Linux可以多用户同时登陆,互相之间不影响
  • 用户识别的本质(Linux如何识别用户)

    • 人类:看用户名
    • Linux识别用户通过UID(用户的id号码)
      • root用户的UID是0
    [root@destiny ~]# id
    uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    [root@destiny ~]# id root
    uid=0(root) gid=0(root) groups=0(root)
    
  • Linux用户分类

    用户分类作用特点
    root(uid 0)管理维护整个系统老子天下第一
    普通用户(uid>=1000)只能查看和管理自己的一亩三分地管理特定服务
    虚拟用户(傀儡用户)(uid 1~1000)让linux下面服务正常运行所需要的为了服务正常运行所需要,并不需要登录到系统,设置密码,切换用户
    [root@destiny ~]# id hanyi
    uid=1000(hanyi) gid=1000(hanyi) groups=1000(hanyi)
    

为什么要有用户

  • Linux系统日常维护需要使用用户
  • 服务/进程运行也是需要用户

用户相关文件-/etc/passwd(熟练)

image-20230108112736169
  • /etc/passwd并不是用来记录密码
  • 记录的是用户的信息:用户名、uid、家目录、命令解释器
  • 格式:用户名:密码:UID:GID:用户说明信息:用户的家目录:用户使用的命令解释器shell
    • 密码:存放账户的口令,暂用x表示,密码保存在/etc/shadow
    • UID:user id 身份证号码 用户id
    • GID:group id 户口本号码、家庭号码 组id
    • 一般UID和GID是一样的
    • root家目录是/root,普通用户家目录存在/home/username(可自定义)
  • 用户使用的命令解释器
    • /bin/sh和/bin/bash是普通用户或者root用户
    • /sbin/nologin说明该用户是虚拟用户/傀儡用户
    • /bin/sh是/bin/bash的软链接,在一般的linux系统当中,使用sh调用执行脚本相当于打开了bash的POSIX标准模式,也就是说 /bin/sh 相当于 /bin/bash --posix
    • /bin/sh执行过程中,若出现命令执行失败,则会停止执行;/bin/bash执行过程中,若命令执行失败,仍然会继续执行
    • Ubuntu原来的命令解释器叫做/bin/dash
    • unix的命令解释器叫做csh或者tcsh

用户相关文件-/etc/shadow(了解)

image-20230108114400106
[root@destiny ~]# man 5 shadow
[root@destiny ~]# cat /etc/shadow
  • 密码信息

    字段名称						注释说明
    1.用户登陆名					//用户的账号名称
    2.加密后的密码				//用户密码,这时加密过的口令
    ------------------了解----------------------------------------------
    3.最近一次密码更改时间		//从1970年到最近一次更改密码时间之间过了几天
    4.密码最少使用几天				//密码最少使用几天才可以更改密码(0表示无限制)
    5.密码最长使用几天				//密码使用多少天需要修改密码(默认99999永不过期)
    6.密码到期前警告期限				//密码过期前多少天提醒用户更改密码(默认是过期提前7天警告)
    7.密码到期后保持活动的天数		//在此期限内,用户依然可以登录系统并更改密码,指定天数过后,账户								被锁定
    8.账户到期标志				//从1970年起,账户在这个日期前可使用,到期后失效
    9.标志							//保留
    
  • 查询某个特定的用户是否存在

    1. 使用grep

      [root@destiny ~]# grep "test" /etc/passwd | wc -l
      1		-->说明用户存在;则跳过判断;
      2		-->说明用户不存在;则进行创建操作;
      
    2. 使用id

      id username
      [root@destiny ~]# id root
      uid=0(root) gid=0(root) groups=0(root)
      
      $?  # 判断上一次的命令是否执行成功;0 成功;其他任何数字都是失败;
      
  • 创建用户会在系统的哪个配置中保存信息

    • /etc/passwd:用户信息;

      • root:x:0:0:root:/root:/bin/bash		#以冒号为分隔符
        

        第一列:用户名称

        第二列:用户的密码;x——>不可见——>/etc/shadow

        第三列:用户的UID

        第四列:用户组的GID

        第五列:用户的描述信息;(手机号;等等)

        第六列:用户的家目录

        第七列:用户的登录Shell类型 /bin/bash——>正常登录 /sbin/nologin——>禁止登陆

    • /etc/shadow:密码信息;

      • bin:*:18535:0:0:99999:7:2:66275:
        

        第一列:用户名称

        第二列:用户的密码;(一段不可读的密文;(* !! 说明这个用户没有密码;))

        第三列:最近一次变更密码,用户从1970年 到现在过了多少天;

        第四列:密码的最短使用天数;0为不限制;

        第五列:密码最长使用的天数;99999为不限制;

        第六列:密码到期前7天,系统会警告

        第七列:密码到期后,密码过期后2天强制提示用户更改密码

        第八列:账户失效时间,从1970年起,账户在这个日期前可使用,到期后失效;

    • 管理用户和密码的方式,不仅仅只有用户+密码这一种

      • 密钥;
      • 堡垒机;
      • ldap;
  • 如何创建用户,删除用户,修改用户?

    • 创建用户

      • useradd

      • adduser

      • [root@destiny ~]# which useradd
        /usr/sbin/useradd
        [root@destiny ~]# which adduser
        /usr/sbin/adduser
        
        # 它们都在同一个目录下
        
        [root@destiny ~]# ll /usr/sbin/adduser
        lrwxrwxrwx. 1 root root 7 Dec  6 16:55 /usr/sbin/adduser -> useradd
        
      • #1. 创建bgx用户,UID5001,基本组students,附加组sa 注释信息:2019 new student,登录shell:/bin/bash
        # 先创建组
        [root@destiny ~]# groupadd sa
        [root@destiny ~]# groupadd students
        # 再创建用户 useradd
        	# -u:指定UID
        	  -g:指定组名称
        	  -G:指定附加组名称
        	  -c:附加描述信息(可忽略)
        	  -s:指定登录Shell窗口的类型
        [root@destiny ~]# useradd -u 5001 -g students -G sa -c "2019 new student" -s /bin/bash bgx
        [root@destiny ~]# id bgx
        uid=5001(bgx) gid=1002(students) groups=1002(students),1001(sa)
        
        
        #2. 创建mysql系统 用户,
        	# -M:不建立用户家目录,
        	# -s:指定nologin使其用户无法登录系统
        	# -r:创建系统用户
        [root@destiny ~]# useradd mysql -r -M -s /sbin/nologin
        [root@destiny ~]# id mysql
        uid=996(mysql) gid=994(mysql) groups=994(mysql)
        
      • 基本组:原生家庭;

        附加组:认来的;

        ——————————>有一些操作无法执行;但是附加组是有权限的;加入附加组;就具备操作这类资源的权限;

    • 修改用户

      • usermod

      • #选项
        	# -u:指定要修改用户的UID
        	# -g:指定要修改用户基本组
        	# -G:指定要修改用户附加组,使用逗号隔开多个附加组,覆盖原有的附加组
        	# -d:指定要修改用户家目录
        	# -s:指定要修改用户的bash Shell
        	# -c:指定要修改用户注释信息
        	# -l:指定要修改用户的登录名
        	# -L:指定要锁定的用户
        	# -U:指定要解锁的用户
        	
        # 1.检查此前创建的用户信息
        [root@destiny ~]# grep "bgx" /etc/passwd
        bgx:x:5001:1002:2019 new student:/home/bgx:/bin/bash
        # 2.修改bgx用户uid,gid,附加组
        [root@destiny ~]# groupadd -g 5008 network_sa
        [root@destiny ~]# groupadd -g 5009 devops
        [root@destiny ~]# usermod -u 6001 -g5008 -a -G 5009 bgx
        # 3.修改bgx用户的注释信息,用户家目录,登录shell,登录名
        [root@destiny ~]# usermod -c "2019 new student" -md /bgx -s /bin/sh -l change_bgx bgx
        #检查是否修改成功
        [root@destiny ~]# grep "bgx" /etc/passwd
        change_bgx:x:6001:5008:2019 new student:/bgx:/bin/sh
        [root@destiny ~]# id change_bgx
        uid=6001(change_bgx) gid=5008(network_sa) groups=5008(network_sa),1001(sa),5009(devops)
        [root@destiny ~]# ll -d /bgx
        drwx------. 2 change_bgx network_sa 62 Jan 12 08:44 /bgx
        
    • 删除用户

      • userdel

      • #选项 -r:删除用户同时删除它的目录
        # 1.删除user1用户,但不删除用户家目录和mail spool
        [root@destiny ~]# userdel user1
        
        # 2.-r参数可以连同用户家目录一起删除(慎用)
        [root@destiny ~]# userdel -r user1
        
        # 有进程正在使用该用户,无法删除;只有进程退出后,用户没有被占用,才可以处理;
        [root@destiny ~]# userdel www
        userdel: user www is currently used by process 2559
        
    • 与用户相关的还有很多命令,以下简单列举一些,但都不是常用命令,所以了解即可

      1. 使用finger命令查询用户信息以及登录信息,示例:finger UserName
      2. 使用chfn命令修改用户信息,示例:chfn UserName
      3. 使用chsh命令修改用户登录Bash Shell,示例:chsh UserName
      4. 使用who、whoami、w检查用户登陆情况
  • 如何为用户设定密码,又如何修改密码?

    1. 不能太简单;容易被暴力破解;

    2. 太复杂;记不住;

      不用记住密码;就要复杂;——>专门存储密码的文件或软件;lastpass 1password

      使用passwd命名来实现:

      1. 超级管理员

        1. 随意修改任何人的密码
        2. 密码强度可以随意
      2. 普通用户执行

        1. 仅修改自己的,不可以修改其他人
        2. 密码强度必须要满足8个字符及以上
      3. passwd使用方法:

        交互式修改密码:

        ​ passwd username

        #root用户
        [root@destiny ~]# passwd dba
        Changing password for user dba.
        New password: 
        BAD PASSWORD: The password is shorter than 8 characters
        Retype new password: 
        passwd: all authentication tokens updated successfully.
        
        #普通用户
        [dba@destiny ~]# passwd dba
        passwd: Only root can specify a user name.
        [root@destiny ~]# passwd
        Changing password for user dba.
        Changing password for dba.
        (current) UNIX password:
        New password: 
        BAD PASSWORD: The password is shorter than 8 characters
        New password: 
        Retype new password: 
        passwd: all authentication tokens updated successfully.
        

        非交互式修改密码:

        [dba@destiny ~]# echo "123" | passwd --stdin dba
        Changing password for user dba.
        passwd: all authentication tokens updated successfully.
        

        ​ 强度较高的密码:

        # -l 长度
        # -d 数字
        # -c 小写
        # -C 大写
        # -s 特殊字符
        [root@destiny ~]# mkpasswd -l 10 -d 3 -c 3 -C 3 -s 1
        0BAuH|8hz0
        [root@destiny ~]# mkpasswd -l 10 -d 3 -c 3 -C 3 -s 1
        6jj|JsF90Y
        
        #设定一个随机密码
        [root@destiny ~]# echo "$(mkpasswd -l 10 -d 3 -c 3 -C 3 -s 1)" | tee ok.txt  | passwd --stdin dba
        Changing password for user dba.
        passwd: all authentication tokens updated successdully.
        [root@destiny ~]# cat ok.txt
        Hp7uHEc=32
        

用户创建的流程

  • 系统创建用户参考的两个配置文件

    • /etc/login.defs

      [root@destiny ~]# grep -vE "^#|^$" /etc/login.defs
      MAIL_DIR	/var/spool/mail
      PASS_MAX_DAYS	99999
      PASS_MIN_DAYS	0
      PASS_MIN_LEN	5
      PASS_WARN_AGE	7
      # 定义普通用户的UID范围
      UID_MIN                  1000
      UID_MAX                 60000
      # 定义系统用户的UID范围
      SYS_UID_MIN               201
      SYS_UID_MAX               999
      # 定义组的GID范围
      GID_MIN                  1000
      GID_MAX                 60000
      #定义系统组的GID范围
      SYS_GID_MIN               201
      SYS_GID_MAX               999
      
      CREATE_HOME	yes
      UMASK           077
      USERGROUPS_ENAB yes
      ENCRYPT_METHOD SHA512
      
    • /etc/default/useradd

      # useradd defaults file
      GROUP=100
      HOME=/home	#把用户的家目录建在/home中
      INACTIVE=-1		#是否启用账号过期停权,-1表示不启用
      EXPIRE=		#账号终止日期,不设置表示不启用
      SHELL=/bin/bash		#新用户默认所有的shell类型
      SKEL=/etc/skel		#配置新用户家目录的默认文件存放路径
      CREATE_MAIL_SPOOL=yes	#创建mail文件
      
  • 当使用useradd创建用户时,创建的用户家目录下会存在.bash_*环境变量相关的文件,这些环境变量文件默认从/etc/skel目录中拷贝。这个默认拷贝环境变量为u之是由/etc/defaults/useradd配置文件中定义的

    #故障案例,在当前用户家目录执行了rm -rf .*,喜爱次登陆系统时出现-bash-4.1$,如何解决:
    -bash-4.1$ cp -a /etc/skel/.bash* ./
    -bash-4.1$ exit
    [root@destiny ~]# 	#重新连接即可恢复
    
  • 如果在创建时,我们自行指定了参数,那么优先使用定义的;如果没有定义则使用默认配置(/etc/login.defs | /etc/default/useradd)

用户组如何管理

  • 什么是组?

    在整个网络中,各个访问网络的用户的权限可能是各不相同的,可以将具有相同权限的用户划为一组。

  • 组的分类

    • 默认组:创建与用户同名的组;
    • 基本组:用户的主要的组; -g 指定
    • 附加组:额外指定的组; -G 指定
    • useradd kk -G video,book
      • 创建kk用户;创建一个默认组kk;
      • 将kk用户添加到video组 和 book组;
  • 创建组

    groupadd

    选项:-g :指定gid

    [root@destiny ~]# groupadd g1 -g 1456
    [root@destiny ~]# tail -1 /etc/group
    g1:x:1456:
    
    • 四列:
      1. 组名称
      2. 组密码
      3. 组gid
      4. 附加组成员
  • 修改组

    groupmod

    [root@destiny ~]# tail -1 /etc/group
    g1:x:1456:
    [root@destiny ~]# groupmod g1 -g 5656
    [root@destiny ~]# tail -1 /etc/group
    g1:x:5656:
    
  • 删除组

    groupdel

    [root@destiny ~]# groupdel g1
    
    • 组中存在成员怎么办?

      • 附加组还是基本组

        • 附加组:

          如果组中只有附加组成员,直接删除;用户附加组信息会自动被移除;

        • 基本组

          1. 直接创建用户,会创建一个同名的组

            [root@destiny ~]# useradd nice
            [root@destiny ~]# id nice
            uid=1007(nice) gid=1010(nice) groups=1010(nice)
            
            #用户存在,不可以直接删除组
            [root@destiny ~]# groupdel nice
            groupdel: cannot remove the primary group of user 'nice'
            
          2. 创建一个组;有一些成员加入,该如何删除该组;

            [root@destiny ~]# useradd zhangsan -g dev
            [root@destiny ~]# useradd lisi -g dev
            [root@destiny ~]# id zhangsan
            uid=1007(zhangsan) gid=1010(dev) groups=1010(dev)
            [root@destiny ~]# id lisi
            uid=1008(lisi) gid=1010(dev) groups=1010(dev)
            [root@destiny ~]# groupdel dev
            groupdel: cannot remove the primary group of user 'zhangsan'
            
            # 移除所有用户即可删除该组
            

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

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

相关文章

STL - Vector容器

基本概念 功能: vector数据结构和数组十分类似,也成为单端数组 vector和普通数组的区别: 不同之处在于数组是静态空间,而vector可以动态扩展 动态扩展: 并不是在原空间后续再接空间&#x…

【pandas】用户手册:10分钟熟悉pandas(下)

数据分组 Splitting : 利用某些条件将数据进行分组Applying : 函数应用于每个单独的分组Combining : 合并最终的结果 df pd.DataFrame({"A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo&q…

【正点原子FPGA连载】第十四章Linux基础外设的使用 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第十四章Linux基…

百趣代谢组学文献分享:间歇性禁食调节糖尿病脑损伤多组学研究

百趣代谢组学文献分享,糖尿病已经成为一个全球问题,国际糖尿病联盟(IDF)发布的全球糖尿病地图(第9版)[1]显示,全球糖尿病患者人数不断上升,全球平均增长率为51%,目前有4.…

C#,图像二值化(23)——局部阈值的绍沃拉算法(Sauvola Thresholding)及源程序

1、局部阈值的绍沃拉算法(Sauvola Thresholding)Niblack和Sauvola阈值算法Niblack和Sauvola阈值是局部阈值技术,对于背景不均匀的图像非常有用,尤其是对于文本识别1、2。代替为整个图像计算单个全局阈值,通过使用考虑到…

【5】K8S_Deployment

目录 1、Deployment作用 2、deployment的冗余能力 3、deployment的多副本部署 4、deployment的扩缩容 5、deployment的自愈能力 6、滚动更新 7、版本回退 1、Deployment作用 控制Pod,使Pod拥有多副本,自愈,扩缩容等能力 2、deployme…

【正点原子FPGA连载】第十五章开发环境搭建 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第十五章开发环境…

uniapp 窗口小工具、桌面小部件、微件(日历、时间) Ba-AwCalendarS

简介(下载地址) Ba-AwCalendarS 是一款窗口小工具(桌面小部件、微件)插件,默认为简单的时间样式,有其他界面需要,可联系作者定制。 支持定时更新(本插件为每分钟)支持点…

基于springboot,vue二手交易平台

开发工具:IDEA服务器:Tomcat9.0, jdk1.8项目构建:maven数据库:mysql5.7系统用户前台和管理后台两部分,项目采用前后端分离前端技术:vue elementUI服务端技术:springbootmybatis项目功…

【数据结构】开端序幕

写在前面,感同身受初学数据结构,是不是一脸懵,下面你中招了几条?😭怎么全是指针!指针都不会啊!怎么变量名那么长,好难理解啊!什么p,什么next,pp->next究竟…

LeetCode[1753]移除石头的最大得分

难度:中等题目:你正在玩一个单人游戏,面前放置着大小分别为 a、b和 c的 三堆 石子。每回合你都要从两个 不同的非空堆 中取出一颗石子,并在得分上加 1分。当存在 两个或更多 的空堆时,游戏停止。给你三个整数 a、b和 c…

动手深度学习-多层感知机

目录感知机多层感知机激活函数sigmoid函数tanh函数ReLU函数多层感知机的简洁实现参考教程:https://courses.d2l.ai/zh-v2/ 感知机 模型: 感知机模型就是一个简单的人工神经网络。 感知机是二分类的线性模型,其输入是实例的特征向量&#x…

智慧管廊智能化运维管理平台详情

运维管理平台 ​ 平台主界面完成各分系统情况的全局性展现,用图形界面的方法提升视觉效果感染力,根据图色区分正常、异常情况。 1、自然环境及设备监控 ​ 选用全景分层三维可视化地理信息系统及其多元化的二维在线地图从温度、风速、电力、排水、安防…

windows检测远程主机是否连通或者某个端口是否开启

文章目录一、检测主机是否连通步骤二、测试端口是否打开步骤telnet安装一、检测主机是否连通 ping命令是个使用频率极高的网络诊断工具,在Windows、Unix和Linux系统下均适用。它是TCP/IP协议的一部分,用于确定本地主机是否能与另一台主机交换数据报。根…

2022年度总结 EXI-小洲

文章目录一、第一次自我介绍二、2022我都干了些什么(我的收获)1.大专顺利毕业2.后端开发辞职3.第二次代表学校参加江西省职业院校大数据技能大赛4.专升本考试5.参加泰迪杯第五届"数据分析技能赛"6.在csdn开始写博文7.在本科阶段,我又认识了几个会喝点酒的…

【2022年度总结】总结过去,展望未来

文章目录前言回顾过去一、刷题道路两眼黑二、助人为乐本身便是一种快乐展望未来兔年Flag博客文章竞赛目标学习目标志同道合前言 注册CSDN一年了,新年伊始,正好趁着这个时间复盘一下逝去的2022! 很幸运,在对计算机知识懵懂无知的时…

分布式调度XXL-JOB急速入门

文章目录1.业界分布式定时任务框架简介2.分布式调度XXL-JOB核心特性3.Docker部署MySQL8.04.XXL-JOB数据库脚本介绍5.Docker部署XXL-JOB服务端6.XXL-JOB UI菜单模块介绍7.SpringBoot整合XXL-JOB8.分布式调度参数传递9.分布式调度日志埋点10.自定义返回执行成功或失败11.XXL-Job高…

C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二)

C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二) 测试软件: TIA PORTAL V15.1 S7-PLCSIM ADVANCED V3.0 Visual Studio 2019 在上次的分享中,我们了解了TIA博途一侧的具体组态配置,具体内容可参考以下链接中的内容: C#上位机基础学习_基于SOCKET实现与PLC服务…

【ROS】—— 机器人系统仿真 —URDF优化_xacro (十四)

文章目录前言1. URDF优化_xacro2. Xacro_快速体验3. Xacro_语法详解3.1 属性与算数运算3.2 宏3.3 文件包含4. Xacro_完整使用流程示例4.1 编写 Xacro 文件4.2 集成launch文件5. Xacro_实操前言 📢本系列将依托赵虚左老师的ROS课程,写下自己的一些心得与笔…

SpringBoot自动配置原理

1、自动配置原理 1、我们编写的SpringBoot启动类上有一个SpringBootApplication注解,表示当前类是springboot的启动类(入口类)。 package com.baidou;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBo…