Linux 用户与组管理详解(system

Stella981
• 阅读 682

用户与组管理

  1. 什么是用户,用户是人吗?
  2. 用户是干啥的?
  • 用户账号

    • 超级管理员: root
    • 普通用户: ruochen
    • 系统/程序用户: 系统中为某个程序而产生的用户,这类用户一般不允许登录操作系统
  • 组账号

    • 定义: 用户的集合
    • 基本组: 与用户同名的一个组
    • 附加组: 将其他用户增加到某个组中,那么这个组称为其他用户的附加组
  • 用户作用

    • Linux 基于用户身份对资源进行访问控制
  • UID 和 GID 号

    • uid(user identity) : 用户标识号
    • gid(group identity): 组标识号
    • root用户uid号: 0
    • 普通用户uid号:1000-60000(rhel7) 500+(rhel6)
    • 系统用户uid号: 1-999(rhel7) 1-499(rhel6)

用户相关文件

  • /etc/passwd 保存用户的账号信息

      sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
      ruochen:x:1000:1000:ruochen:/home/ruochen:/bin/bash
    
    • 字段1: 用户账号名称
    • 字段2: 'x' 代表密码占位符 /etc/shadow
    • 字段3: 用户账号的uid号
    • 字段4: 用户基本组账号的gid号
    • 字段5: 用户的全名
    • 字段6: 宿主目录(用户的家目录)
    • 字段7: 用户登录shell信息
      • /bin/bash(默认登录shell)
      • /sbin/nologin(不允许用户登录系统)
  • /etc/shadow 保存用户的密码信息

      root: 用户账号名称
      $6$3rb.lU2l/JOMd/T5$dwR0X/HIgpbHZtIqtWQbTYyB268B80nJAnXgQ8foZsOm8eRx7wynqTdZG485k8jKu5fnbEpHJOCChpWGndXHL1: 用户密码信息,采用哈希算法加密
      18050: 上次修改密码的时间(1970.1.1)
      0: 密码的最短有效天数
      99999: 密码的最长有效天数
      7: 密码过期警告时间
      :  密码过期后是否还允许登录 0 不允许 10 允许十天 -1 长期
      :  密码过期时间
      :  保留字段(未使用)
    

组账号相关文件

  • /etc/group 保存组账号基本信息
  • /etc/gshadow 保存组账号密码信息

用户和组管理软件:

  • yum install system-config-users -y
  • [root@localhost ~]# system-config-users
  • 查看用户信息

基于命令行的用户和组管理

创建用户


  • useradd [选项] username
    • -u: 为账号指定 uid

    • -g: 指定用户 gid

    • -s: 为账号指定默认的登录shell

    • -G: 将用户添加到指定的附属组里面

    • -c: 为用户添加文本描述

    • -d: 为主目录指定不同于登录名的名称

    • -m: 创建用户的家目录(默认创建)

    • -M: 不创建用户的家目录

    • -p passwd: 为用户指定一个默认密码

    • -r: 创建一个系统账号

    • -e: 指定用户账号的逾期时间 YYYY-MM-DD

        [root[@localhost](https://my.oschina.net/u/570656) ~]# useradd susa
        [root[@localhost](https://my.oschina.net/u/570656) ~]# useradd -u 3000 -s /sbin/nologin user
      

查看用户信息


  • id username

      [root[@localhost](https://my.oschina.net/u/570656) ~]# id user
      uid=3000(user) gid=3000(user) groups=3000(user)
    

删除用户


  • userdel -r username

      [root@localhost ~]# userdel -r susa
      [root@localhost ~]# id susa
      id: susa: no such user
      [root@localhost ~]# userdel -r user
      [root@localhost ~]# id user
      id: user: no such user
      [root@localhost ~]#
    

修改用户信息


  • usermod [选项] username
    • -u: 重新指定用户的 uid 号

    • -s: 重新指定用户的登录shell

    • -G: 将用户添加到附加组内

    • -L: 用于锁定账号,使用户无法登录

    • -U: 用于解除账号锁定,使用户能够登录

        [root@localhost ~]# usermod -u 2000 -s /sbin/nologin harry 
        [root@localhost ~]# usermod -u 2000 -s /bin/bash  harry 
        [root@localhost ~]# id harry
        uid=2000(harry) gid=1001(harry) groups=1001(harry)
      

为用户创建密码


  • passwd username

  • echo 'passwd' | passwd --stdin username

      [root@localhost ~]# passwd harry
      Changing password for user harry.
      New password: 
      Retype new password: 
      passwd: all authentication tokens updated successfully.
      [root@localhost ~]# su - harry
      [harry@localhost ~]$ 
    
      [root@localhost ~]# usermod -L harry
      [root@localhost ~]# su - harry
      Last login: Sat May 16 22:17:41 EDT 2020 on pts/1
      [harry@localhost ~]$
    

此处已经锁定用户了,为何还能登录?

[root@localhost ~]# usermod -U harry
[root@localhost ~]# su - harry
Last login: Sat May 16 22:18:29 EDT 2020 on pts/1
[harry@localhost ~]$ 

更改用户密码信息

  • chage -m 0 -M 90 -W 7 -I -1 username
  • -d 0: 强制用户下此登录修改密码
  • -E YYYY-MM-DD: 指定密码的过期时间
  • -l username: 列出用户当前密码设置

Linux 用户与组管理详解(system

创建组

  • groupadd [选项] groupname
  • -g: 指定组的 gid 号

删除组

  • groupdel groupname

      [root@localhost ~]# groupdel manager
    

创建下列用户、组和组的成员关系:

  • 一个名为 manager 的组
  • 一个名为harry 的用户,其属于 manager 组,这个组是该用户的从属组
  • 一个名为natasha 的用户,其属于 manager 组,这个组是该用户的从属组
  • 一个名为strlt 的用户,其在系统中没有可交互的shell,并且该用户不是 manager 组的成员
  • 用户natasha、harry和strlt 的密码都要设置为 default
[root@localhost ~]# groupadd manager
[root@localhost ~]# useradd -G manager harry
[root@localhost ~]# useradd natasha
[root@localhost ~]# usermod -G manager natasha
[root@localhost ~]# useradd -s /sbin/nologin strlt
[root@localhost ~]# echo 'default' | passwd --stdin harry
Changing password for user harry.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo 'default' | passwd --stdin natasha
Changing password for user natasha.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo 'default' | passwd --stdin strlt
Changing password for user strlt.
passwd: all authentication tokens updated successfully.

查看当前登录到系统的用户

  • users, w, who

      [root@localhost ~]# w
    

23:16:53 up

2:23,

3 users,

load average: 0.19, 0.17, 0.14

登录时间

运行时间

用户总数

负载程度(1/5/15)

USER

TTY

LOGIN@

IDLE

JCPU

PCPU

WHAT

登录用户

登录所用终端

登录时间(LOGIN@ == LOGIN AT)

用户空闲时间

消耗CPU时间

任务执行后消耗时间

任务是谁

root     :0        20:55   ?xdm?   7:03   0.16s gdm-session-worker [pam/gdm-pas
root     pts/0     21:09    1:18m  0.32s  0.32s -bash
root     pts/1     21:33    5.00s  0.22s  0.00s w
  • whoami
    • 显示当前用户下的用户名
  • who am i
    • 显示登录时用的用户名
  • who
    • 显示当前真正登录系统的用户(不会显示su切换的用户)

        [root@localhost ~]# who
        root     :0           2020-05-16 20:55 (:0)
        root     pts/0        2020-05-16 21:09 (192.168.37.1)
        root     pts/1        2020-05-16 21:33 (:0)
        [root@localhost ~]# whoami
        root
        [root@localhost ~]# who am i
        root     pts/0        2020-05-16 21:09 (192.168.37.1)
        [root@localhost ~]# su - ruochen
        [ruochen@localhost ~]$ who am i
        root     pts/0        2020-05-16 21:09 (192.168.37.1)
        [ruochen@localhost ~]$ whoami
        ruochen
      
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
2年前
Linux用户管理命令
Linux用户管理命令Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,必须先向管理员申请一个账号。Linux的用户至少要属于一个组。添加用户基本语法​useradd【选项】用户名示例​useraddxiaoming
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Stella981 Stella981
2年前
Linux 创建用户 用户组 用户权限
首先你要有个root账号然后才能做下面几条操作:useraddusername  创建用户usernamepasswduser\_pwd    给已创建的用户username设置密码关于useradd的某些参数:\uUID:指定UID,这个UID必须是大于等于500,并没有其他用户占用的UID\gGID/GR
京东云开发者 京东云开发者
6个月前
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这