zoukankan      html  css  js  c++  java
  • 用户与安全 -(1)Linux用户及组管理

    关注「开源Linux」,选择“设为星标”

    回复「学习」,有我为您特别筛选的学习资料~

    前言

    Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。而用户和用户组管理,顾名思义就是添加用户和用户组、更改密码和设定权限等操作。

    用户和组的概念

    Linux 系统对用户与组的管理是通过ID号来实现的。我们在登录系统时,输入用户名与对应密码,操作系统会将用户名转化为ID号后再判断该用户是否存在,并对比密码是否匹配。

    Linux 中,用户ID号被称为UID,组ID号被称为GID。其中,UID为0,代表超级管理员,也就是通常所说的root用户。Linux用户总共分为三种,分别如下:

    • root用户(ID 0)

    • 系统用户(ID 1~499)

    • 普通用户(ID 500-60000)

    Linux 操作系统中的组分为基本组与附件组,一个用户仅可以加入一个基本组中,但可以同时加入多个附加组。默认在创建用户时,系统默认会自动创建同名的组,并设置用户加入该基本组中。

    Linux用户管理

    01 创建用户

     用法:useradd [选项] 用户名称
     常用选项:
     
    -c    设置用户描述信息,一般为用户全程
    
    -d    设置用户家目录,默认为/home/用户名
    
    -e    设置用户失效日期,格式为YYYY-MM-DD
    
    -g    设置用户的基本组
    
    -G    设置用户的附件组,多个附件组中间用逗号隔开
    
    -M   不创建用户家目录,一般与-s结合使用
    
    -s    设置账号登录shell,默认为bash
    
    -u    指定用户UID
    
    示例:
    
    [root@qll ~]# useradd -s /sbin/nologin -M user01
    # 创建用户user01,限制该用户无法登陆系统且没有家目录
    
    [root@qll ~]# useradd -c administrator -d /home/admin -e 2020-03-11 -g root -G mail,bin admin
    # 创建一个名为admin的账号,描述是administrator,账号家目录为/home/admin,账号失效时间为2021年2月25号,账号基本组为root,附件组为mail、bin
    

    02 设置用户属性

    用法:usermod [选项] 用户名称
    常用选项:
    
    -d   修改用户家目录
    
    -e   修改用户失效日期
    
    -g   修改用户所属基本组
    
    -G   修改用户所属附件组
    
    -s    修改用户登录shell
    
    -u    修改用户UID    
    
    示例:
    
    [root@qll ~]# usermod -d /home/nginx nginx01
    # 修改nginx01家目录为/home/nginx
    
    [root@qll ~]# usermod -u 1005 admin
    # 修改admin用户的UID为1005
    
    [root@qll ~]# usermoud -s /sbin/nologin admin
    # 限制admin用户无法登陆系统
    

    03 修改用户属性

    用法:passwd [选项] [用户名称]
    常用选项:
    
    -l  锁定账号,仅root用户可使用此选项
    
    --stdin 从文件或管道读取密码
    
    -u  解锁密码
    
    -d  快速清空账号密码,仅root用户可使用此选项
    
      示例:
    
    [root@qll ~]# echo "abc123" | passwd --stdin admin
    # 无交互式创建admin账号的密码为adc123
    
    [root@qll ~]# passwd -l admin
    # 锁定admin账号
    

    04 删除用户

    用法:userdel [-r] 用户名
    常用选项:
    
    -f:强制删除用户,即使用户当前已登录
    -r:在删除用户的同时删除用户的家目录
    
    示例:
    
    [root@qll ~]# userdel -r admin
    # 删除admin用户,同时删除admin的家目录文件。
    

    Linux用户组管理

    01 创建用户组

      用法:groupadd [选项] 用户组名称
      常用选项:
        -g    设置组ID
    
    [root@qll ~]# groupadd -g 1008 test01
    # 创建用户组test01,同时指定GID为1008
    

    02 修改用户组属性

    (1) 用户组重命名:

    groupmod -n 新用户组名  原用户组名
    
    [root@qll ~]# groupmod -n new_test test01
    # 将用户组test01重命名为new_test
    

    (2) 重设用户组的 GID:

    groupmod -g new-group_GID 用户组名称
    
    [root@qll ~]# groupmod -g 1002 new_test
    # 将用户组new_test的GID修改为1002
    

    03 删除用户组

      语法:groupdel 用户组名
    
    [root@qll ~]# groupdel new_test
    # 删除组new_test
    

    04 添加用户到指定组

    语法:gpasswd -a 用户账户  用户组名
    
    [root@qll ~]# gpasswd -a test_user admin
    # 将test_user用户添加至admin用户组
    

    05 从用户组中移除某用户:

    语法:gpasswd -d 用户账户  用户组名
    
    [root@qll ~]# gpasswd -d test_user admin
    # 将admin用户组中的test_user用户移除
    

    06 将用户指派为用户组管理员

    语法:gpasswd -A 用户账户 用户组名
    
    [root@qll ~]# gpasswd -A test_user admin
    # 将test_user用户设置为admin用户组管理员
    

    总结:查看用户的常用方法

    (1) id命令

    描述:查询指定用户的用户和组信息。
    用法:id [选项]... [用户名]
    说明:如果省略用户名,打印打印当前用户的用户和组信息。
    
    [root@qll ~]# id test_user
    uid=1000(test_user) gid=1000(test_user) 组=1000(test_user)
    [root@qll ~]# id
    uid=0(root) gid=0(root) 组=0(root)
    

    (2) who命令

    描述:查询当前登录的所有用户信息
    
    [root@qll ~]# who
    root     tty1         2021-02-19 21:45
    root     pts/0        2021-02-19 23:40 (10.47.12.7)
    test_user pts/1        2021-03-05 23:52 (10.47.12.18)
    

    (3) whoami命令

    描述:查询当前登录用户的名称
    
    [root@qll ~]# whoami
    root
    

    (4) last命令

    描述:查询目前与过去登录系统的用户相关信息
    说明:该命令默认读取/var/log/wtmp文件,数据直接查看是乱码,防止人为修改。
    
    

    (5) lastb命令

    描述:查询登入系统失败的用户相关信息。
    说明:该命令默认读取/var/log/btmp文件,数据直接查看是乱码,防止人为修改。
    

    (6) lastlog命令

    描述:查询系统中所有用户最近一次登录信息。
    说明:该命令默认读取/var/log/lastlog文件,数据直接查看是乱码,防止人为修改。
    
    

    (7) last reboot命令

    描述:查看系统重启记录
    

    
    关注「开源Linux」加星标,提升IT技能
    
    
    十年磨一剑
  • 相关阅读:
    spring的原理
    角色&权限
    Redis在springboot项目的使用
    项目接口的设计思想
    springboot项目注册接口
    Redis
    cookie&session
    python enumerate()
    原来,一直没有完全理解range()函数
    python zip()和zip(*)方法
  • 原文地址:https://www.cnblogs.com/qinlulu/p/14671393.html
Copyright © 2011-2022 走看看