当前位置: 首页 > article >正文

账户和组管理

账户和组管理

1.账户和工作组的分类

1.1 用户分类

  • 超级用户——账户名为root,它具有一切权限,只有进行系统维护(例如:建立用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。
  • 系统账户——是Linux系统正常工作所必需的账户,主要为了满足相应的系统进程对文件属主的要求而建立的,如:bin、daemon、adm、sshd等,注意:系统账户不能登录。
  • 普通用户——是为了让使用者能够使用Linux系统资源而建立的,大多数用户属于此类。

1.2 工作组分类

  • 基本组(私有组):新建立账户时,若没有指定账户所属的工作组,会建立和账户名相同的组
  • 扩展组(公有组):可以容纳多个用户,组中的账户都具有组所拥有的权利。

1.3 账户和工作组的配置文件

  • 账户名、密码、工作组信息和工作组密码存储在以下配置文件中
文件功能文件名称
用户账户文件/etc/passwd
用户密码文件/etc/shadow
用户创建和密码设置的默认规则文件/etc/login.defs
用户骨文件模板目录/etx/skel
工作组账号文件/etc/group
工作组密码文件/etc/gshadow
  • 用户账号文件/etc/passwd

    • /etc/passwd 是一个文本文件,用于定义系统的账号,由于所有账户都对passwd有读权限,所以该文件中只定义用户账号,而不保存口令。
    [root@localhost Desktop]# ll /etc/passwd
    -rw-r--r--. 1 root root 2237 Oct 26 19:15 /etc/passwd
    [root@localhost Desktop]# head -1 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    
    • /etc/passwd文件中字段说明

      • 由7个字段组成,字段之间用“:”分隔,意义:账号名:密码:UID:GID:个人资料:主目录:Shell
      • 账号名:用户登录Linux系统时使用的名称。
      • 密码:以前是以加密格式保存密码的位置,现在密码保存在/etc/shadow文件中,此处只是密

      码占位符“x”或“*”。若为“x”,说明密码经过了shadow的保护。

      • UID:账户的ID值,是一个数字标识,相当于账户的“身份证编号”,具有唯一性
        • root账户UID——0
        • 系统账户的UID——1~999
        • 普通账户的UID——≥1000
        • 注意:普通账户从1000开始编号,连续编号,即使系统管理员某些账户号码未使用,普通账户也不可使用
      • GID:基本组的ID值,用来区分不同的工作组,相同的组具有相同的GID。
      • 个人资料:注释信息,可以记录账户的完整姓名、地址、办公室电话、家庭电话等个人信息。
      • 家目录:类似Windows 的个人目录,通常是/home/账户名
      • Shell:定义用户登录后激活的Shell,默认是Bash Shell
    • id命令

    • 作用:查看账户的UID、GID等信息

    • 格式:

      id	账户名
      
    • 例:

      [root@localhost Desktop]# id root
      uid=0(root) gid=0(root) groups=0(root)
      
  • 用户创建和密码设置的默认规则文件/etc/login.defs

    • 用户创建相关:

      • MAIL_DIR:指定新用户的邮件目录位置。

      • PASS_MAX_DAYS:设置密码的最长有效天数。

      • PASS_MIN_DAYS:设置密码的最短有效天数,防止用户频繁更改密码。

      • PASS_MIN_LEN:设置密码的最小长度。

      • UID_MINUID_MAX:定义用户 ID 的范围。

      • GID_MINGID_MAX:定义用户组 ID 的范围。

    • 密码设置相关:

      • ENCRYPT_METHOD:指定密码加密方法。
  • 用户骨文件模板目录/etc/skel

    • 作用

      当创建一个新用户时,系统会自动将/etc/skel目录中的所有文件和子目录复制到新用户的主目录中。这样做的目的是为新用户提供一些默认的配置文件和环境设置,以便新用户在登录后能够立即开始使用系统,而无需手动创建一些基本的文件和目录。

    • 常见的文件和目录

      [root@localhost Desktop]# ls -a /etc/skel
      .  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
      
      .:表示当前目录本身。
      ..:表示当前目录的父目录。
      .bash_logout:当用户退出 Bash 会话时执行的脚本。
      .bash_profile:在用户登录时执行的脚本,用于设置环境变量等。
      .bashrc:Bash shell 的配置文件,可设置命令提示符、别名等。
      .mozilla:可能是与 Mozilla 相关的配置目录(如果系统中有安装相关软件)。
      
    • 管理和定制

    1. 系统管理员可以根据需要修改/etc/skel目录中的文件和目录,以满足特定的系统要求或组织标准。例如,可以添加特定的环境变量设置、安装特定的应用程序并提供其配置文件等。
    2. 当对/etc/skel目录进行修改后,新创建的用户将自动获得这些修改后的配置。这使得系统管理员能够轻松地为大量新用户提供一致的初始环境。
  • 用户密码文件/etc/shadow

    • /etc/shadow存储密码加密后的密文,又称为“影子文件”,该文件为了保证了账户密码的安全性只有

      root 账户拥有读权限,注意:若该文件权限发生变化,需要留心恶意攻击

    [root@localhost Desktop]# ll /etc/shadow
    ----------. 1 root root 1340 Oct 27 17:27 /etc/shadow
    [root@localhost Desktop]# head -1 /etc/shadow
    root:$6$px.DkOT/y976y8k9$GOfglcENwValUFxReu/UDDssWQL2r7ziK7NPm7ASf6cDHcoPMgg0Ffv951Vy3BuvTEtrbNGHNBBB89o6y88fv1::0:99999:7:::
    
    • /etc/shadow文件中的每行9个字段的含义为:

      登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
      
  • 工作组帐号文件/etc/group

    • /etc/group文件存储每个组工作组信息

      [root@localhost Desktop]# ll /etc/group
      -rw-r--r--. 1 root root 907 Oct 26 19:15 /etc/group
      [root@localhost Desktop]# head -1 /etc/group
      root:x:0:
      
    • 字段说明:

      字段说明
      Groupname组的名字
      Passwd组的加密口令
      GID是系统区分不同组的ID,在/etc/passwd域中的GID字段是用这个数来指定账户的基本组
      Userlist是用","分开的账户名,列出的成员以该组为附加组

2. 用户管理

2.1 添加新用户

  • 格式:

    useradd -参数 账户名
    
  • 参数:

    参数解释
    -c注释信息:设置相关的说明信息,如,:真实姓名、邮箱地址等。
    -d目录:设定账户的家目录(默认为/home/用户名)。
    -eYYYY-MM-DD:设置用户的失效日期,此日期后将不能使用该账号。
    -f天数:指定密码到期后多少天账号被禁用,若指定为0,则表示账号到期后被立即禁用;若指定 为-1,则表
    示账号过期后不被禁用(即密码永不过期)。
    -g组名或GID号:为账户指定所属的基本组,该组在指定时必须已存在。
    -G组名或GID号列表:为账户指定所属的扩展组,各组在指定时已存在,附加组可以有多个,组之间用“,”分隔。
    -M不创建账户家目录。
    -N不创建与账户名同名的基本组。
    -p密码:指定账户的登录密码。
    -sshell名:指定账户登录后使用的Shell,默认是bash。
    -u用户号:设置账号的UID,默认是已有账户的最大UID加1。如果同时有-o选项,则可以重复使用其他用户的
    标识号。
  • 例:

    • 新建用户test1,并查看对应的配置文件和家目录

      [root@localhost Desktop]# useradd test1
      [root@localhost Desktop]# tail -1 /etc/passwd
      test1:x:2003:2005::/home/hhh:/bin/bash
      [root@localhost Desktop]# tail -1 /etc/shadow
      test1:!!:20027:0:99999:7:::		# !!表示密码未设置
      [root@localhost Desktop]# ls -A /home/test1
      .bash_logout  .bash_profile  .bashrc  .mozilla
      [root@localhost Desktop]# ls -ld /home/test1
      drwx------. 3 hhh hhh 78 Oct 31 14:59 /home/hhh
      
    • 新建账户test2,指定UID为2001、登录Shell为/bin/bash,账号永不过期

      [root@localhost Desktop]# useradd -u 2001 -s /bin/bash -e -1 test2
      
    • 新建用于访问FTP的test3账户,禁止其登录且不创建家目录(系统用户)

      [root@localhost Desktop]# useradd -M -s /sbin/nologin test3
      
    • 新建账户test4,UID=3001, 工作组=test2 , 家目录=/test

      [root@localhost Desktop]# useradd -u 3001 -g test2 -d /test test4
      

2.2 修改账户信息

  • 格式:

    usermod -参数 账户名
    
  • 参数:常用参数 -c,-d,-m,-g,-G,-s,-u 等,意义与useradd命令中的参数相同

    参数解释
    -l新账户名:更改账户的名称,必须在该用户未登录的情况下才能使用
    -L锁定(暂停)用户账户,使其不能登录使用
    -U解锁用户账户
  • 例:

    • 将用户test1的名称修改为TEST1,并暂停使用该账号

      [root@localhost Desktop]# usermod test1 -l TEST1 -L
      
    • 将上例账户test4的家目录移至/home/test4目录下

      [root@localhost Desktop]# ls /home
      [root@localhost Desktop]# mkdir /home/test4
      [root@localhost Desktop]# usermod test4 -d /home/test4
      [root@localhost Desktop]# tail -1 /etc/passwd
      test4:x:3001:1001::/home/test4:/bin/bash
      

2.3 账号设置密码

  • 原则:Linux的账户必须设置密码后,才能登录系统

  • 格式:

    passwd - 参数 账户名
    
  • 参数:

    参数解释
    -d清空指定用户的口令,与未设置口令的账户不同,未设置口令的账户无法登录系统,而口令为空的账户可以。
    -e使用户的账号密码立即过期,强迫用户下次登录时必须修改口令。
    -i口令过期后多少天停用账户。
    -l锁定(停用)用户账户。
    -n指定口令的最短存活期。
    -x指定密码的最长使用期限。
    -u解锁用户账户。
  • 例:

    • 例1:设置root账户密码

      [root@localhost Desktop]# passwd root
      更改用户 root 的密码 。
      新的密码:
      无效的密码: 密码少于 8 个字符
      重新输入新的密码:
      passwd:所有的身份验证令牌已经成功更新。
      
    • 例2:使用户的账号密码立即过期,强迫用户下次登录时必须修改口令。

      [root@localhost Desktop]# passwd -e  test1
      
    • 例3:锁定账户test2,尝试登录

      [root@localhost Desktop]# passwd -l  test2
      
  • 注意:

    • 密码不能为空

    • 密码不要写成回文

    • 可以使用以下命令设置密码

      echo 密码 | passwd --stdin 用户名
      
      echo 密码 | passwd --stdin 用户名 > /dev/null # 无信息提示
      
    • 只有 root 用户才能指定用户名

      [root@server ~]# useradd test5
      [root@server ~]# passwd test5
      更改用户 test5 的密码 。
      新的密码:
      无效的密码: 密码少于 8 个字符
      重新输入新的密码:
      passwd:所有的身份验证令牌已经成功更新。
      [root@server ~]# su test5
      [test5@server root]$ passwd test5
      passwd:只有 root 户才能指定用户名。
      

2.4 删除账户

  • 格式:

    userdel 账户名
    
  • 参数:

    • -r:在删除该账户的同时,一并删除该账户对应的家目录
  • 例:

    [root@localhost Desktop]# userdel -r test1
    [root@localhost Desktop]# userdel -r test2
    [root@localhost Desktop]# userdel -r test3
    [root@localhost Desktop]# userdel -r test4
    

2.5 账户切换

  • 格式:

    su 账户名
    
  • su和su - 命令区别:

    • 区别:加载的配置文件不一样
    • su 切换方式加载的文件: ~/.bashrc,/etc/bashrc
    • su - 切换方式加载的文件: /etc/bashrc,/etc/profile,/.bashrc,/.bash_profile
    • 注意:su - 相当于重新建立环境,若全局变量需要继续使用则不能使用su - 命令
  • 注意:

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

2.6 控制用户对系统命令的使用权限–sudo

  • 作用:

    • 使用 sudo 命令可以提高普通用户的操作权限,使用前需要root进行配置

    • 例:

      [root@server ~]# su fox
      [fox@server root]$ cd /root
      bash: cd: /root: 权限不够
      [fox@server root]$ sudo cd /root
      我们信任您已经从系统管理员那里了解了日常注意事项。
      总结起来无外乎这三点:
      #1) 尊重别人的隐私。
      #2) 输入前要先考虑(后果和风险)。
      #3) 权力越大,责任越大。
      [sudo] fox 的密码:
      fox 不在 sudoers 文件中。此事将被报告。
      
  • sudo的执行流程如下:

    • 当执行sudo提权时,需要输入自己密码来确认(root执行sudo时不需要输入密码)
    • 若密码输入成功,系统会去/etc/sudoers文件中查找该用户是否有执行sudo的权限
    • 若用户具有执行sudo的权限,便开始sudo后续接的命令;
  • 配置**/etc/sudoers**文件方式

    • 执行visudo 或 vim /etc/sudoers

      [root@server ~]# visudo
      root ALL=(ALL) ALL
      # 账户名 允许使用的主机=(以谁的身份) 可执行的命令列表
      #说明:ALL是关键字,代表任何身份、主机或命令。
      
  • 例:上例继续

    [root@server ~]# vim /etc/sudoers
    # 定位100行输入:
    fox ALL=(ALL) ALL
    # 需要wq!强制保存退出
    [root@server ~]# su fox
    [fox@server root]$ cd /root
    bash: cd: /root: 权限不够
    [fox@server root]$ sudo cd /root
    [sudo] fox 的密码:
    [fox@server root]$ pwd
    /root
    

3. 工作组管理

3.1 创建工作组

  • 格式:

    groupadd -参数 工作组名
    
  • 参数:

    • -g GID:指定新工作组的GID,默认值是已有的最大的GID加1
    • -r: 建立一个系统组账号,与-g不同时使用时,则分配一个1~999的GID
  • 例:

    [root@localhost Desktop]# groupadd -g 3000 group1
    

3.2 修改工作组

  • 格式:

    groupmod -参数 工作组名
    
  • 参数:

    • -g GID——为用户组指定新的组标识号
    • -n 新用户组——将用户组的名字改为新名字修改用户组的名称和用户组的GID值
  • 例:

    [root@localhost Desktop]# groupmod -g 2000 group1
    [root@localhost Desktop]# groupadd -g 2000 -n group group1
    

3.3 添加/删除组成员

  • 格式:

    gpasswd -参数 账户 工作组
    
  • 参数:

    参数解释
    -r删除组密码
    -a把用户加入组
    -d把用户从组中删除。
    -M可同时添加多个用户
    -A给组指派管理员。
  • 例:

    [root@localhost Desktop]# gpasswd -a user1 group
    [root@localhost Desktop]# gpasswd -A user1 group
    [root@localhost Desktop]# gpasswd -d user1
    
  • 注意:

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

3.4 删除工作组

  • 格式:

    groupdel 工作组名
    
  • 例:

    [root@localhost Desktop]# groupdel group
    
  • 注意:

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

4. 查看用户登录系统的情况

4.1 users命令

  • 作用:查看当前登录系统的用户

  • 例:

    [root@localhost Desktop]# users 
    root root
    

4.2 last命令

  • 作用:列出目前与过去登入系统的用户相关信息,该命令默认会去读取**/var/log/wtmp**文件,并把该文件记录的登入系统的用户名单全部显示出来

  • 例:

    [root@localhost Desktop]# last
    root     tty2         tty2             Thu Oct 31 14:57   still logged in
    root     seat0        login screen     Thu Oct 31 14:57   still logged in
    reboot   system boot  5.14.0-427.13.1. Thu Oct 31 14:45   still running
    root     tty2         tty2             Wed Oct 30 20:56 - crash  (17:49)
    root     seat0        login screen     Wed Oct 30 20:56 - crash  (17:49)
    reboot   system boot  5.14.0-427.13.1. Wed Oct 30 20:43   still running
    root     tty2         tty2             Wed Oct 30 18:27 - crash  (02:15)
    

4.3 lastlog命令

  • 作用:查看每个账号的最近登录时间,该命令会读取**/var/log/lastlog**文件

  • 例:

    [root@localhost Desktop]# lastlog
    Username(用户名)   Port(端口/字符设备)     From                           Latest(最后一次登录时间)
    root             	tty2                                               Thu Oct 31 14:57:22 +0800 2024
    bin                                                                 **Never logged in**
    
    

4.4 w命令

  • 作用:显示登录到系统的用户信息

  • 例:

    [root@localhost Desktop]# w
     16:00:12 up  1:03,  2 users,  load average: 1.19, 0.71, 0.34
    USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
    root     seat0     14:57    0.00s  0.00s  0.01s /usr/libexec/gdm-wayland-sessio
    root     tty2      14:57    1:14m  0.09s  0.08s /usr/libexec/gnome-session-bina
    # 通过 w  -i  可以查看登录地址
    [root@localhost Desktop]# w -i
     16:01:09 up  1:04,  2 users,  load average: 0.92, 0.72, 0.37
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     seat0    login-           14:57    0.00s  0.00s  0.01s /usr/libexec/gd
    root     tty2     tty2             14:57    1:15m  0.09s  0.08s /usr/libexec/gn
    
  • 结果分析:

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

    • 第二行只是各个项目的说明

      • USER:表示登录系统的用户
      • TTY:表示用户使用的TTY名称
      • FROM:表示用户从哪里登录进来
      • LOGIN@:用户登录的日期和时间
      • idle:表示空闲时间
      • JCPU:在某段时间内所有与该终端相关的进程任务所耗费的cpu时间
      • PCPU:当前活动进程使用的系统时间
      • WHAT:表示当前用户执行的进程名称和选项
    • 第三行以后,每行代表一个用户登录的信息

4.5 who命令

  • 作用:显示目前登录到系统的用户,会从/var/run/utmp文件来获取信息

  • 例:

    [root@localhost Desktop]# who
    root     seat0        2024-10-31 14:57 (login screen)
    root     tty2         2024-10-31 14:57 (tty2)
    
    
  • 结果分析:

    who命令的输出格式名称状态终端时间活动进程标识主机名
    说明用户的登录名表明终端是否对用户都是可写的类似于pts/1、pts/2等用户登陆系统的时间某个用户在自己的终端上最后一次活动发生以来到现在的时间,如果是"."表示一分钟内的终端活动用户登录shell的进程id登录到Linux系统上的客户端机器标识
  • 例:

    [root@server ~]# who -b 列出系统最近启动的日期
    system boot 2022-05-09 15:38
    [root@server ~]# who -m 列出关于当前终端的信息
    root pts/0 2022-05-09 15:38 (192.168.168.1)
    [root@server ~]# who am i
    root pts/0 2022-05-09 15:38 (192.168.168.1)
    [root@server ~]# who am I
    root pts/0 2022-05-09 15:38 (192.168.168.1)
    [root@server ~]# who -q 列出在本地系统上的用户和用户数的清单
    root
    # users=1
    [root@server ~]# who -r 显示当前系统的运行级别
    run-level 3 2022-05-09 15:38
    [root@server ~]# who -u 显示当前每个用户的用户名、登录终端、登录时间、终端活动、进程和主机名
    root pts/0 2022-05-09 15:38 . 1510 (192.168.168.1)
    [root@nserver ~]# who -T 显示tty终端的状态,“+”表示对任何人可写,“-”表示仅对root用户或所有者可写,“?”表示遇到终端故障
    root + pts/0 2022-05-09 15:38 (192.168.168.1)
    [root@server ~]# who -w 和-T一样
    root + pts/0 2022-05-09 15:38 (192.168.168.1)
    

http://www.kler.cn/a/374526.html

相关文章:

  • 重工业数字化转型创新实践:某国家特大型钢铁企业如何快速落地基于实时数仓的数据分析平台
  • Linux笔记--基础入门
  • Xcode 15.4 运行flutter项目,看不到报错信息详情?
  • 使用 Git 命令将本地项目上传到 GitLab
  • 模型的中间失忆特性是什么;有位置信息嵌入,为什么还会中间失意;模型中间失意怎么解决
  • 无人机避障——2D栅格地图pgm格式文件路径规划代码详解
  • 若依框架部署到服务器刷新或者是退出登录出现404
  • Spring Boot2.x教程:(十)从Field injection is not recommended谈谈依赖注入
  • PVE修改Ubuntu虚拟机的硬盘大小
  • nginx 根路径同时代理 http ws sse 三种请求
  • WebGL 快速入门构建你的第一个 3D 应用
  • 在浏览器中运行 Puppeteer:解锁新能力
  • USB接口类型及引脚信号详解
  • java 实现对 word 文档中占位符进行替换
  • Spring学习笔记_13——@Autowired
  • 内网穿透技术选型PPTP(点对点隧道协议)和 FRP(Fast Reverse Proxy)
  • 手机功耗异常大数据看板建设
  • IMU技术引领骑行新体验
  • linux中网口测试
  • JVM—类加载器、双亲委派机制
  • git入门教程6:git基本版本控制
  • 中英文如何快速切换?小达人盘点10款翻译工具给你
  • 芯片技术创新,GPU 服务器厂家聚焦服务器性能新巅峰
  • Nuxt.js 应用中的 components:extend 事件钩子详解
  • CSS常用标签笔记
  • 详解汉明纠错码原理以及FPGA实现