精华内容
下载资源
问答
  • 2017-03-26 19:38:44

    用户与组的分类

       Linux系统对用户分配如下:
       -系统管理员:root
       -普通用户:普通用户分为以下两种
                  系统用户:系统用户通常是不可登陆的,执行某些服务及进程的帐号
                  登录用户:一般用户,
       我们登录linux系统时,输入的是我们的帐号,但是linux系统并不会直接识别你的帐号,而是通过我们建立帐号时系统分配的ID号码,对于用户类型ID分配如下:
       -系统管理员ID:0 (root用户ID)
       -普通用户ID:1~65535,
              系统用户ID:1~499(CentOS 6),1 ~999(CentOS 7)
              登录用户ID:500~+(CentOS 6),1000~+(CentOS 7)   
       在建立用户帐号时,系统会为用户帐号分配至少两个ID,一个用户ID(UserID,简称UID),一个用户组ID(GroupID,简称GID),上面是UID,下面了解一下GID:
       -管理员组:0 (root组ID)
       -普通组:1~65535,
              系统组ID:1~499(CentOS 6),1 ~999(CentOS 7)
              非系统组ID:500~+(CentOS 6),1000~+(CentOS 7) 
       对于一个用户而言,只有唯一个UID,但是可以有多个不同的组,分别为主组和附加组,主组组名与用户名相同,且只有一个用户,也可以称为私有组。主组以外的组为附加组。

    相关的配置文件

    用户和组的相关配置文件如下:

       /etc/passwd: 用户帐号的相关信息
       /etc/group: 组帐号的相关信息
       /etc/shadow: 用户密码及相关属性
       /etc/gshadow: 组密码及相关属性
    

    配置文档详解:

    /etc/passwd:文件结构

    [root@smartwy ~]# cat /etc/passwd | grep 'wangye' 
         wangye:x:1008:1008:samrtwy:/home/wangye:/bin/bash
    

     passwd文件以”:”将信息分为7字段,各字段意义如下:
          1字段:用户名称
         2字段:用户密码,早期密码就在这个字段,后因安全问题,改放到/etc/shadow
          3字段:UID,该帐号是登录用户,UID(CentOS7)分配为1000+
          4字段:GID
          5字段:对用户的说明信息,(注释)
          6字段:用户的家目录
          7字段:用户的shell
         

    /etc/group:文件结构 

     [root@smartwy ~]# cat /etc/group | grep 'wangye'       
     wangye:x:1008:
    

       group文件以”:”将信息分为4字段,各字段意义如下:
         1字段:组名称
         2字段:用户组密码,因安全问题,改放到/etc/gshadow
          3字段:GID
          4字段:以此组为附加组的用户名称
         

    /etc/shadow:文件结构 

     [root@smartwy ~]# cat /etc/shadow | grep 'wangye'       
     wangye:!!:17251:0:99999:7:::
    

       shadow文件以”:”将信息分为4字段,各字段意义如下:
         1字段:用户名称
         2字段:用户密码,该用户暂未设置密码
          3字段:最后一次变更密码的日期,从1970年1月1日开始计算
          4字段:密码变更锁定天数,与第3段相比锁定天数过后才可变更密码
          5字段:密码使用期限,与第3段相比在此天数内需要重设你的密码
          6字段:密码变更前警告期,与第5段相比密码快要到期时,系统会依据这个字段的天数设置发出”警告”
          7字段:密码过期宽限时间,在此天数内用户没有登录变更密码,那么该帐号的密码将会”失效”
          8字段:帐号失效日期,无论密码是否过期,这个帐号都不能再被使用
          9字段:保留字段
         
       建议:密码的复杂性策略
          1,使用数字,大写字母,小写字母及特殊符号中至少3种
          2,使用非规律密码且足够长
          3,定期更换
          

    /etc/gshadow:文件结构 

     [root@smartwy ~]# cat /etc/gshadow | grep 'wangye'       
     wangye:!::
    

       gshadow文件以”:”将信息分为4字段,各字段意义如下:
         1字段:组名称
         2字段:用户组密码,该用户组暂未设置密码
          3字段:用户组管理者,缺省代表没有管理者
          4字段:组内用户列表,因为这是用户的私有组所以没有其他用户

    用户和组管理命令

    新增,变更与删除用户:useradd,passwd,chage,usermod,userdel

    useradd:新建用户
      [root@smartwy ~]# useradd [OPTIONS] username
      [OPTIONS]选项参数如下:
          -u:指定UID
          -g:指定GID(此组需存在)
          -G:指定用户附加组,多个附加组需使用逗号分隔开(此组需存在)
          -c:指定注释信息
          -d:指定用户家目录
          -s:指定shell,可在/etc/shells文件里查看shell可用种类
          -r:创建系统用户
          -D:修改用户默认选项(修改的是/etc/default/useradd中选项)

    passwd:添加密码
      [root@smartwy ~]# passwd [OPTIONS] username
      [OPTIONS]选项参数如下:
          -l:锁定指定用户密码
          -u:解锁指定用户密码
          -d:清除指定用户密码
          -e:终止用户密码
          -i:非活动期限
          -n:指定密码最短试用期
          -x:密码最长使用期限
          -w:提前多少天警告变更密码
          –stdin:echo “12345678” | passwd –stdin username,将12345678设定为username的密码,一般用于批量新建用户初始密码

    chage:修改密码参数
      [root@smartwy ~]# chage [OPTIONS] username
      [OPTIONS]选项参数如下:
          -l:列出该用户的密码详细参数
          -d:修改shadow第3段(最后一次变更密码的日期)设置为0时,用户首次登录需要变更密码
          -m:修改shadow第4段(密码变更锁定天数)
          -M:修改shadow第5段(密码使用期限)
          -W:修改shadow第6段(密码变更前警告期)
          -I:修改shadow第7段(密码过期宽限时间)
          -E:修改shadow第8段(帐号失效日期)  

    usermod:用户属性修改
      [root@smartwy ~]# usermod [OPTIONS] username
      [OPTIONS]选项参数如下:
          -u:指定UID
          -g:指定GID(此组需存在)
          -G:指定用户附加组,多个附加组需使用逗号分隔开(此组需存在)
          -c:指定注释信息
          -d:指定用户家目录
          -s:指定shell,可在/etc/shells文件里查看shell可用种类
          -r:创建系统用户
          -l:更改用户名
          -L:锁定用户,密码前添加”!”
          -U:解锁用户,去掉密码前的”!”

    userdel:删除用户
      [root@smartwy ~]# userdel [OPTIONS] username
      [OPTIONS]选项参数如下:
          -r:删除用户家目录

    新增,变更与删除组:groupadd,gpasswd,groupmod,groupdel

    groupadd:新建组
      [root@smartwy ~]# groupadd [OPTIONS] groupname
      [OPTIONS]选项参数如下:
          -g:指定GID
          -r:创建系统组

    gpasswd:组密码
      [root@smartwy ~]# gasswd [OPTIONS] groupname
      [OPTIONS]选项参数如下:
          -a user:将用户user添加进该组
          -d user:将用户user移除该组
          -A userlist:设置有组管理权限的用户列表

    groupmod:组属性修改
      [root@smartwy ~]# groupmod [OPTIONS] groupname
      [OPTIONS]选项参数如下:
          -g:修改GID
          -n:修改组名称

    groupdel:删除组
      [root@smartwy ~]# groupdel groupname

    扩展id与su

    id:查看用户相关ID信息

      [root@smartwy ~]# id [OPTIONS]… [USER]
      [OPTIONS]选项参数如下:
          -g:查看该组GID
          -u:查看该用户ID

    su:切换用户

      [root@smartwy ~]# su [user[args]]
               非登录式切换,不会读取目标用户的配置文件
      [root@smartwy ~]# su - [user[args]]
               登录式切换,读取目标用户的配置文件
       注意:root切换其它用户无需密码,非root切换用户时需要密码

    更多相关内容
  • 这些信息保存在 /etc/passwd /etc/shadow 文件中,关于用户账户与权限管理的内容详见 Linux用户和用户组管理相关文件内容详解 关于Linux用户的管理,Linux系统提供了以下工具: 命令 描述 useradd 添加新...

    接上一篇文章Linux shell编程(三): Linux 环境变量

    2.4.1 Linux用户

    Linux安全系统的核心是用户账户。用户权限是通过创建用户时分配的用户ID(User ID,通常缩写为UID)来跟踪的。

    这些信息保存在 /etc/passwd/etc/shadow 文件中,关于用户账户与权限管理的内容详见 Linux用户和用户组管理相关文件内容详解

    关于Linux用户的管理,Linux系统提供了以下工具:

    命令描述
    useradd添加新用户,默认无密码、无主目录、不指定shell版本
    adduser添加新用户,要求用户设置密码、自动创建主目录、指定shell版本
    userdel删除用户
    usermod修改用户账户的字段,还可以指定主要组以及附加组的所属关系
    passwd修改已有用户的密码
    chpasswd从文件中读取登录名密码对,并更新密码
    chage修改密码的过期日期
    chfn修改用户账户的备注信息
    chsh修改用户账户的默认登录shell
    添加新用户

    useradd:命令使用系统的默认值以及命令行参数来设置用户账户。需要使用参数选项指定其他设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本。

    adduser:要求用户设置密码、自动创建主目录、指定shell版本

    useradd

    先讲useradd,如果不使用任何参数,执行命令 sudo useradd testuser ,则创建的用户无密码、无主目录、没有指定shell版本。

    没有密码不能登录,需要后期使用 sudo passwd testuser 命令设置密码才能登录;

    没有主目录就是在 /home 目录下没有该用的目录,按需设置,后期可以使用 usermod -d /testuser testuser 修改,其中 /testuser 为用户主目录, 最后的 testuser 是用户名。

    没有指定shell版本会是默认的 /bin/sh shell,它的交互界面如下:

    在这里插入图片描述

    testuser用户登录后,只有一个命令提示符 $ ,要想修改登录的默认shell版本,可以使用命令 chsh -s /bin/bash testuser ,注意,修改后要重新登录该用户才能生效。

    看起来有些麻烦,可以执行 useradd 命令时使用参数选项一步到位,使用参数 -p 设置密码,-m 设置主目录, -s 指定shell版本,完整命令如下:

    sudo useradd testuser -p password -m -s /bin/bash
    

    否则ueseradd命令只会根据默认值创建用户,系统默认值被设置在/etc/default/useradd文件中。可以使用useradd命令的 -D 选项查看所用Linux系统中的这些默认值,如下:
    在这里插入图片描述

    默认值含义依次为:

    • 新用户会被添加到GID为 100 的公共组
    • 新用户的HOME目录将会位于/home
    • 新用户账户密码在过期后不会被禁用
    • 新用户账户过期日期(此处未设置)
    • 新用户账户默认shell
    • 系统会将/etc/skel目录下的内容复制到新用户的HOME目录下
    • 系统是否为该用户在mail目录下创建一个用于接收邮件的文件

    其中,/etc/skel目录下是一些启动文件,如下:

    在这里插入图片描述

    如有需要,可以自定义新用户的初始文件并放到该目录下。

    可以修改默认值简化创建新用户的操作,比如使用useradd命令时,不想每次指定shell版本,可以修改默认值: useradd -D -s /bin/bash ,其中 -D 代表默认值相关, -s 代表修改默认值中的shell版本,修改默认值的其他参数如下:

    参数描述
    -b default_home更改默认的创建用户HOME目录的位置
    -e expiration_date更改默认的新账户的过期日期
    -f inactive更改默认的新用户从密码过期到账户被禁用的天数
    -g group更改默认的组名称或GID
    -s shell更改默认的登录shell

    useradd命令的其他参数选项:

    参数描述
    -c comment给新用户添加备注
    -d home_dir为主目录指定一个名字(如果不想用登录名作为主目录名的话)
    -e expire_date用YYYY-MM-DD格式指定一个账户过期的日期
    -f inactive_days指定这个账户密码过期后多少天这个账户被禁用;
    0 表示密码一过期就立即禁用, 1 表示禁用这个功能
    -g initial_group指定用户登录组的GID或组名
    -G group …指定用户除登录组之外所属的一个或多个附加组
    -k必须和 -m 一起使用,将/etc/skel目录的内容复制到用户的HOME目录
    -m创建用户的HOME目录
    -H不创建用户的HOME目录(当默认设置里要求创建时才使用这个选项)
    -n创建一个与用户登录名同名的新组
    -r创建系统账户
    -p passwd为用户账户指定默认密码
    -s shell指定默认的登录shell
    -u uid为账户指定唯一的UID

    adduser

    和useradd类似,adduser添加新用户的命令为 sudo adduser testuser ,但adduser会引导你设置新用户的一些信息,如下:

    在这里插入图片描述

    包括新增用户组、在用户组里新增用户、创建用户的主目录、将/etc/skel目录下的内容复制到新用户的HOME目录下、设置用户登录密码、设置用户信息等。

    其余设置根据默认配置文件 /etc/adduser.conf 中的内容自动设置。

    删除用户

    userdel

    默认情况下, userdel 命令会只删除/etc/passwd文件中的用户信息,不会删除系统中属于该账户的任何文件。

    如果加上 -r 参数, userdel 会删除用户的HOME目录以及邮件目录。

    但用户目录中可能会有其他程序运行的必要文件,所以删除之前要检查清楚。

    修改用户

    usermod

    usermod用于修改用户账户信息,参数选项如下:

    参数描述
    -a与-G一起使用,为用户添加附加组
    -c comment修改用户的说明信息(/etc/passwd 文件用户信息的第 5 个字段)
    -d home_dir修改用户的主目录(/etc/passwd 文件用户信息的第 6 个字段)
    -e expire_date修改用户的失效曰期(格式为 “YYYY-MM-DD”,/etc/passwd 文件用户信息的第 8 个字段)
    -g initial_group修改用户的归属组编号GID(/etc/passwd 文件用户信息的第 4 个字段)
    -u uid修改用户的用户编号UID(/etc/passwd 文件用户信息的第 3 个字段)
    -G group修改用户的附加组,如果是为用户添加附加组,一般与-a一起使用,否则该用户的其他附加组都会删除,即修改 /etc/group 文件
    -l user_name修改用户名称(/etc/passwd 文件用户信息的第 1 个字段)
    -L临时锁定用户
    -U解锁用户
    -s shell指定默认的登录shell
    修改用户密码

    passwd

    修改已有用户的密码,但需注意的是,只执行 passwd 命令是修改当前用户的密码,如果想要修改非当前用户的密码,需要使用切换到root账户或使用sudo进行提权,如修改test用户的密码,需要执行 sudo passwd test 命令。

    chpasswd

    从文件中读取登录名密码对,并更新密码。

    如果需要批量更新多个用户的密码,可以使用 chpasswd 命令,他能从标准输入自动读取登录名和密码对(由冒号分割)列表,给密码加密,然后为用户账户设置,如下:

    在这里插入图片描述

    注意,修改密码都要使用超级用户权限。

    但常用的方法是将多个用户的登录名密码对写到文件中,然后重定向给该命令,如下:

    文件内容为:

    在这里插入图片描述

    执行命令为:

    sudo chpasswd < passwd.txt
    

    注意文件中不能有空行,否则会报错。

    修改用户默认shell

    chsh

    修改默认的用户登录shell,要用shell的绝对路径,如:

    chsh -s /bin/bash testuser
    
    修改用户说明信息

    chfn

    修改用户的说明信息,/etc/passwd 文件用户信息的第 5 个字段,

    由于这涉及到用户的信息,也需要输入密码,如果是修改非当前用户的信息,还需要root权限。

    修改用户账户有效期

    chage

    chage 命令用来帮助管理用户账户的有效期,对应 /etc/shadow 文件用户密码信息的第 4-8个字段。

    可以用不同参数修改对应信息,如下:

    参数描述
    -d设置上次修改密码到现在的天数
    -E设置密码过期的日期
    -I (大写的i)设置密码过期到锁定账户的天数
    -m设置修改密码之间最少要多少天
    -W设置密码过期前多久开始出现提醒信息

    chage 命令的日期值可以用下面两种方式中的任意一种:

    • YYYY-MM-DD格式的日期
    • 代表从1970年1月1日起到该日期天数的数值

    对于密码过期的账户,和锁定的账户很相似:账户仍然存在,但用户无法用它登录。


    2.4.2 Linux用户组

    为了控制多个用户共享资源的安全性,Linux系统使用了用户组的概念。

    和用户信息一样,用户组信息也有自己的保存位置 /etc/group ,如下:

    在这里插入图片描述

    每行代表一个组,每个组有4个字段,其格式如下:

    组名:组密码占位符:GID:组中用户(多个用户用","隔开)
    

    其中,

    组密码占位符:和用户密码占位符类似,加密形式的密码单独存放在/etc/gshadow文件中。

    GID:系统账户用的组通常会分配低于500的GID值,而用户组的GID则会从500开始分配。

    组中用户:这个字段为空不代表组中没有用户,因为如果该组是某用户的初始组,则该用户不写在这里。

    创建新用户组

    groupadd 命令可在系统上创建新的用户组。

    删除用户组

    使用 groupdel 命令删除用户组,但删除的用户组不能是任何用户的初始组,否则会删除失败。

    将用户添加到用户组

    使用 usermod 命令将用户添加到用户组,其中 usermod-g 选项是修改用户的归属组(默认组), -G 选项是修改用户的附加组,这里要注意,单独使用 -G 选项是修改附加组,要添加附加组需要配合 -a 选项。

    如果添加附加组时,只用了 -G 选项,当前用户已有的其他附加组都会被删除。补救措施,发生这种情况千万不要重新登录,否则就没有后悔药了(因为当前内存里还保留该用户附加组信息,重新登录的话,会从/etc/group 文件重新读取信息到内存,当前用户附加组信息会被覆盖)。执行 groupsid 命令,会显示当前内存里该用户附加组信息,按照打印修改 /etc/group 文件即可。

    将用户从用户组中删除

    gpasswd -d user group

    修改用户组

    主要是修改 /etc/group 文件的内容,使用 groupmod 命令的 -g 选项可以修改已有组的GID,-n 选项可以修改组名,修改组名时,GID和组成员不会变,只有组名改变。由于所有的安全权限都是基于GID的,
    所以可以随意改变组名而不会影响文件的安全性。

    注意,如果修改了已登录用户的用户组,需要退出重新登录才会生效。

    如下例子首先创建了新用户组 newgroup ,然后将用户 testuser 添加到了该组中,又将用户 testuser 从该组删除,将修改用户组名从 newgroup 修改为 testgroup ,最后删除了用户组 testgroup

    在这里插入图片描述
    下一篇:Linux shell编程(五): Linux文件权限管理

    展开全文
  • Linux用户和用户组管理

    万次阅读 多人点赞 2018-06-19 20:49:28
    一、用户配置文件 用户管理简介: linux把通过把用户分为三个基本,user,group,other来分配基本的权限 用户通过/etc/passwd用过用户名来获取用户的uid,通过/etc/group来获取用户所属的gid,系统只能通过id号...

    一、用户配置文件

       

    用户管理简介:

         linux把通过把用户分为三个基本组,user,group,other来分配基本的权限

        用户通过/etc/passwd用过用户名来获取用户的uid,通过/etc/group来获取用户所属组的gid,系统只能通过id号来识别哦那过户。所以,越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。在linux中主要是通过用户配置文件来查看和修改用户的信息。

           1、用户信息文件 /etc/passwd

                        配置文件信息如下:vim /etc/passwd

                        

                        第一字段:用户名称

                        第二字段:密码标志

                        第三字段: UID

                            0 : 代表超级用户

                            1-499:代表系统用户(伪用户)【默认很多 不能删除给os中启动服务不能登陆不能操作】

                            500——65535+:代表自定义的普通用户

                            

                        第四字段:GID用户初始组【只有一个,创建用户时自动建立,不推荐改】和附加组【同时属于其他组,像是大学的社团】

                        

                        第五字段:用户说明

                        第六字段:家目录【普通用户 home/用户名【二级目录】  超级用户:/root/【一级目录】】

                        第七字段:登陆之后的shell:linux的命令解释器标准:bin/bash  sbin/nologin

                        注意:Root不一定是管理员 uid=0的一定是管理员

           2、影子文件 /etc/shadow

                        配置文件信息如下:vim /etc/shadow

                        

                        

                        第一字段:用户名

                        第二字段:加密密文【密码相同,密文也不相同】 sha521加密  **  !!没密码

                        第三字段:密码的最后一次修改日期  【时间戳表示 1970.1.1后的一天为一戳】

                        第四字段:两次密码修改间隔的时间

                        第五字段:密码的有效期273年

                        第六字段:到期之前的提醒天数

                        第七字段:到期后的宽限时间

                        第八字段:账号失效时间【不管它之前的有效期限   时间戳转换 date –d “1970-01-01  17000days”】

                        第九字段:保留字

           3、组信息文件 /etc/group和组密码文件 /etc/gshadow

                        配置文件信息如下:vim /etc/group

                        

                        第一字段:组名

                        第二字段:组密码标志

                        第三字段:GID

                        第四字段:组中附加用户

        4、用户家目录:/home/用户名

                        普通用户:/home/用户名/,所有者和所属组都是此用户,权限时700;

                        超级用户:/root/,所有者和所属组都是root用户,权限时550;

        5、用户邮箱:/var/spool/mail/用户名

                        用户模板目录:ls -a;

                        用户的隐藏文件:用户创建时自动建立,/etc/lkel;


           注意:在Linux中,写入配置文件时才能永久生效,执行命令行的形式可能重启后失效。

    二、用户管理相关文件和用户管理命令

        用户添加命令:useradd

                useradd [选项] 用户名

                    -u UID :手工指定用户的UID;

                    -d 家目录:手工指定用户的家目录;

                    -c 用户说明:手工指定用户的用户说明;

                    -g 组名:手工指定用户的初始组;

                    -G 组名:指定用户的附加组;

                    -s shell:手工指定用户登陆的shell,默认是/bin/bash;

                        添加完用户查看用户信息:

                            useradd sc

                                grep sc /etc/passwd

                                        

                                grep sc /etc/shadow

                                        

                                grep sc /etc/group

                                        

                                grep sc /etc/gshadow

                                        

                                ll -d /home/lamp

                                        

                                ll /var/spool/mail/lamp

                                        

        修改用户密码:passwd

        修改用户信息:usermod

        修改用户密码状态:chage

        删除用户:userdel

        用户切换命令:su

        用户默认值文件:

            /etc/default/useradd

                GROUP=100            用户默认组

                HOME=/home         家用户目录

                INACTIVE=-1            密码过期宽限天数,shadow文件7字段

                EXPIRE=                     密码失效时间,shadow文件8字段

                SHELL=/bin/bash        默认shell

                SKEL=/etc/skel            模板目录

                CREATE_MALL_SPOOL=yes            是否建立邮箱

            /etc/login.defs

                PASS_MAX_DAYS 9999    密码有效期天数(5)

                PASS_MIN_DAYS 0           密码修改间隔(4)

                PASS_MIN_LEN    5            密码最小位数

                PASS_WARN_AGE    7        密码到期警告

                UID_MIN            500            最小和最大UID范围值

                GID_MAX            60000

                ENCRYPT METHOD    SHA521    密码的加密模式

        修改用户密码状态chage

        chage 【选项】 用户名

            选项:

            -l :列出用户的详细密码状态

            -d 日期:修改密码最后一次的更改日期 shadow3字段

            -m 天数:两次密码修改间隔(4字段)

            -M天数:密码有效期(5字段)

            -W天数:密码过期前警告天数(6字段)

            -I(i天数):密码过后宽限天数(7字段)

            -E(日期):账号失效时间(8字段)


        chage -d 0 lamp

    注释:这个命令其实是把密码修改日期归0了(shadow第三字段)

           :这样用户一登陆就要修改密码

    手工删除用户:

        vi /etc/passwd

        vi /etc/shadow

        vi /etc/group

        vi /etc/gshsdow

        rm -rf /var/spool/mail/lamp

        rm -rf /home/lamp


    切换用户身份:su

        su 【选项】 用户名

            选项:

                -:选项只使用“-”代表连接用户环境变量一起切换

                -c:仅执行一次命令,而不切换用户身份


        Env:查看用户的环境变量名【用户当前所操作的环境】

    su - root    ;切换为root用户

    su - root -c "useradd user3"    ;不切换成root,但是执行useradd命令添加user3用户

    四、用户组管理相关命令

    添加用户组:

        groupadd 【选项】 组名

            -g GID      指定组ID

            

    修改用户组:

        groupmod 【选项】组名

            -g GID     修改组ID

            -n 新组名:    修改组名

        groupmod -n testgrp group1    ;把组名group修改为testgrp

    删除用户组:

    groupdel 组名

    要想删除组,不允许有初始用户存在,如果存在,则不能删除。

    展开全文
  • Linux进阶】用户和组管理(详解)

    千次阅读 多人点赞 2022-03-26 16:39:02
    Linux用户和组管理,很详细

    本章学习目标

    • 了解多用户系统的概念
    • 掌握用户和组的概念
    • 掌握管理用户和组的方法

    image.png
    Linux操作系统是多用户、多任务系统——即允许多个用户同时登录Linux系统并启动多个任务(有的用户是远程登陆)。用户账号和用户组是进行身份鉴定和权限控制的基础,身份鉴别的目的是规定哪些人可以进入系统,而权限控制的目的则是规定进入系统的用户能做哪些操作。

    🐶多用户系统

    一个安装好的但是没有启动的Linux系统是静态的系统,静态的Linux系统一般由根分区上的文件、目录和交换分区组成,内容不会发生改变。而启动的Linux系统成为动态的西永,动态的Linux系统一般由根分区上的文件、目录和虚拟内存(含交换区和物理内存)中的进程组成,动态系统里的内存会时刻发生变化。zijihuade


    动态的Linux系统(多用户运行级别)允许已经注册的用户登录
    R-C.jpg
    所谓的多用户系统就是指一台计算机启动后,允许多个用户同时登录并使用计算机,最常见的例子就是很多用户通过网络远程登陆到一台运行Linux的计算机

    🐧用户和组的概念

    🌏用户的概念

    有的人喜欢说“用户”,有的人喜欢说“账号”,再Linux系统中,他们是指同一个概念:使用Linux系统的人,他的信息必须事先已经在Linux系统中登记好,
    1648263575698-screenshot.png在Linux中,创建(即登记)一个用户时需要提供如下信息:
    1、用户名:也叫账号,合法的账号由AZ,az,09,-和_组成,账号长度介于132.在Linux系统中用户名是唯一的,用户名主要用于身份鉴别。
    2、口令:或称为密码,主要用于身份鉴别,一个好的口令最好同时包含大小写字母、数字和其他字符,长度建议大于6 注意:密码中字符的大小写是由区分的
    3、用户ID号:简称为UID,犹如人的身份证号,uid-gid-etc-passwd-file-linux.webp
    image.png
    image.png
    4、组:每一个用户只能归属于一个主要组群,但是可以同时归属于多个附加组群。给用户分组主要是便于管理同一类用户的权限,例如赋予一个组某种权限,那么这个组所有的用户自动拥有该权限
    image.png
    5、家目录:使用户登录之后默认进入的目录,如果不特别指定,用户的家目录就是/home/<账号>,例如创建用户Gremmie102,那么默认的家目录就是/home/Gremmie102。root用户的家目录有些特别,默认是/root
    6、登录shell:用户登录Linux的过程中,会自动执行一系列的程序,其中最后执行的那个程序成为shell程序。shell以为“壳”,可以想象为包裹在Linux系统外面的壳,用户登录之后就一直在这个壳中,用户输入的任何命令都由Shell代为执行1648268827367-screenshot.png
    7、备注:对用户的描述,这个可以省略
    这些用户信息主要保存在文件/etc/passwd中,加密过后的密码保存在文件/etc/shadow中。/etc/passwd每一行对应一个用户,格式如下。

    用户名:密码:UID:GID:备注:家目录:登录shell

    每个参数之间用“:”分开,其中的“密码”都用x来表示,GID是该用户的主要组群的组号。
    例如/etc/passwd文件中由如下一行:
    image.png
    从上面这一行可以获得这些信息:用户名是Gremmie3,密码的位置出现x是表示加密后的密码串错放在/etc/shadow中,用户ID号是1000,隶属主要族群1000号,用户的家目录是/home/Gremmie2003,登录Shell是bin/bash,没有备注信息。
    同样/etc/shadow也是一行对应一个用户,格式如下:

    账号:密码:最后一次更改密码的日期:密码有效期最少天数:密码有效期最多的天数:密码修改警告期:密码禁用期:账号过期日期:保留字段

    image.png
    1、密码:经过加密之后的密文。这种加密算法是不可逆的,也就是说不能从密文反推出原始密码。在用户登录校验密码时,Linux系统采用相同的加密方法对用户登录时输入的密码进行加密得到密文,然后通过比较两份密文是否相同来判断密码输入是否正确,这里图中的感叹号则表示还未设置密码
    2、上一次更改密码的日期:具体表现为从1970年1月1日以来的天数。例如在2022年3月26日修改过密码,那么这里就是19077.
    image.png
    3、密码有效期最少天数:即上次修改密码之后要过多少天之后才允许再次修改密码。如果为0或者空表示没有显示,即可随时修改密码。
    4、密码有效期最多天数:即多少天前必须修改密码,如果过了有效期最多天数还没有修改密码,那么下一次用户登录时提示用户必须修改密码;为空则表示没有限制,同时也没有密码修改警告期;如果密码有效期最多天数小于密码有效期最少天数,那么用户不能修改密码。
    5、密码修改警告期:即开始不断地通知用户要修改密码,如果为0或者空则不通知
    6、密码警用期:过了密码有效期最多天数如果仍然没有修改密码,则进入密码禁用期,在禁用期内,用户登录时要求强行修改密码。过了禁用期,那么账号就完全冻结了,冻结的账号经过解冻之后就可以继续使用
    7、账号过期日期:表示为从1970年1月1日以来的天数,为空则表示没有限制。账号过期之后不能再使用了。例如打算让账号在2022年3月26日失效,那么这里的值就是19077.
    参数之间的关系表示为👇:
    1648273557320-screenshot.png
    Linux系统的用户分为3类,分别是超级用户root、系统用户和普通用户。在安装系统时默认创建超级用户root,root的权力没有限制,它的UID和GID都是0.
    image.png
    超级用户的作用是管理系统,例如创建用户、给硬盘分区、配置网络等。系统用户主要用来启动服务或者用作一些特殊权限控制,系统用户的权限收到限制,系统用户也是在安装Linux或者应用软件时自动创建的,它们得到UID小于1000,系统用户不能登录。普通用户也是由超级用户root创建并分配给Linux系统的使用者,权限有限制,使用者用普通用户登录以完成他们的日常工作,普通用户的UID一般大于等于1000.
    image.png
    image.png

    🍰组的概念

    Linux下组群的概念如下👇:
    组群.png
    一个用户必须且只能属于一个主要组群,但是可以属于0个或者多个附加组群,一个组群可以包含0个或者多个用户。例如我是南京医科大学的一个学生,我只能属于21生物信息班(主要族群),但我可以同时加入计算机设和音乐社(附加组群)。
    用户和组群的关系.png

    🤯用户和组的管理

    用户和组的管理包括创建、删除、修改属性、修改密码等。具体操作可以采用可视化的图形界面方式,也可以采用命令方式,这里重点介绍后者。Linux下的命令语法为:<命令> <选项> <目标>
    “命令”是用来操纵“目标”的,那么怎么操纵呢?这是由“选项”规定的。由于可能存在多个选项,所以选项采用 “-<一个数字或字母>[参数]”或者“-<多个数字或字母>[参数]”的形式,例如创建用户Gremmie102的命令为:useradd -u 1007 -d /home/zbc–shell/bin/bash Gremmie102
    image.png
    命令是useradd,目标是Gremmie102,选项是-u 1007 -d /home/zbc–shell/bin/bash
    文件/etc/login.defs定义了组群和用户的默认属性,在创建用户和组的时候,如果没有给出相对应的参数,那么就去默认值。主要参数如下👇:

    序号参数默认值说明
    1PASS_MAX_DAYS99999密码有效期最多多少天
    2PASS_MIN_DAYS0密码有效期最少多少天
    3PASS_WARN_AGE7密码警告十七,密码到期前7天发出警告
    4PASS_MIN_LEN5密码最小长度,即密码必须多于5个字符
    5UID_MIN1000创建用户时默认选择的UID最小值
    6UID_MAX60000创建用户时默认选择的UID最大值
    7GID_MAX1000创建组群时默认选择的GID最小值
    8GID_MIN60000创建组群时默认选择的GID最大值

    🦖组的管理

    我们可以利用groupadd --help、groupdel --help、groupmod --help来查询相关的命令说明
    image.png
    image.png
    image.png

    🦉创建组

    (1)创建组群class1:groupadd class1
    image.png
    (2)创建组群grade2且指定GID为555:groupadd -g 555 grade2
    image.png
    (3)创建已经存在的组群root的别名组群administrators:groupadd -g 0 -o administrators
    image.png
    注意:只能创建不存在的组群。新建的组信息保存在/etc/group中,可以采用more或cat命令查看,例如
    cat /etc/group
    image.png

    🦝删除组群

    删除组群class1:groupdel class1
    注意:只能删除已经存在的空组群,也就是组里没有用户成员

    🦌修改组群的属性

    1. 修改组群sales的组号(GID)为1650:groupmod -g 1650 sales
    2. 修改组群sales的组群名为sales1:groupmod -n sales1 sales
    3. 用一条命令完成上述两个任务:groupmod -g 1650 -n sales1 sales

    注意:只能修改已经存在的组群属性。

    🛹查看组群的信息

    查看文件/etc/group 的内容即可,可以采用cat、more、tail等命令进行查看
    (1)查看文件/etc/group的末尾10行:tail /etc/group
    image.png
    (2)翻页显示/etc/group的信息:more /etc/group
    image.png

    🚃用户管理

    同样,我们可以用useradd --help、userdel --help、usermod --help来查询命令信息
    image.png
    image.png
    image.png

    🎥创建用户

    我们常常用到这几个选项
    -d, --home-dir HOME_DIR home directory of the new account
    -m, --create-home create the user’s home directory
    -g, --gid GROUP name or ID of the primary group of the new account
    -s, --shell SHELL login shell of the new account

    在你的创建的classmates中加入一个叫做bingdundun的用户

    useradd -m -g classmates bingdwendwen
    useradd -m -g classmates -s /bin/bash bingdwendwen

    📸删除用户

    userdel -r bingdundun 删除用户bingdundun
    userdel -r bingdundun 删除用户bingdundun,连同家目录一起删除
    userdel -f -r bingdundun 强行删除用户bingdundun ,即便此用户已经登录

    注意,只能删除已经存在的用户

    🥸修改用户属性

    uesermod -d /opt/bingdundun -s /bin/tcsh

    👆修改用户的家目录和登录的shell

    usermod -g grade1 -G class2 -a bingdundun

    👆修改用户的主要族群为grade1,同时再加入附加组群class2

    usermod -l bingdundun Gremmie

    👆修改bingdundun的用户名为Gremmie

    usermod -u 1020 bingdundun

    修改用户bingdundun的UID为1020

    usermod -d /opt/bingdundun -s /bin/tcsh -g grade1 -G class2 -a -l Gremmie -u 1020 -m bingdundun

    合并上述操作

    🐱用户密码管理

    passwd -l bingdundun

    锁住bingdundun,被锁的用户不能登录

    passwd -u bingdundun

    解锁后的用户可以继续登录

    passwd bingdundun

    修改bingdundun的密码
    注意:用户的密码只有root和用户本人可以修改

    passwd -d nanjinglele

    删除用户nanjinglele的密码,这样nanjinglele就可以不用密码直接登录了

    passwd -n 10 -x 20 -w 3 -i 5 bingdundun

    修改用户bingdundun的密码老化时间,密码有效期最少天数10,最大天数20,过期前3天会发出警告,密码禁用期5天。

    🥽查看用户信息

    id Gremmie

    查看Gremmie的UID、主要组群和附加组群的GID
    image.png

    more /etc/passwd

    这里有个小细节,我将Gremmie放入了sudo系统组群中,这样Gremmie就可以使用sudo的权限

    🎏批量添加用户

    for name in shueyrhonrhon nanjinglele
    do
    echo “$name is pending”
    useradd -m -g classmates -s /bin/bash n a m e e c h o " name echo " nameecho"name:beijing2022" | chpasswd
    done

    加了冰墩墩,也别忘了雪容融,还有南京砳砳,哈哈哈哈。写个for循环吧,因为不好passwd,这次换chpasswd来批量设置初始密码。这个命令的用法是:echo “user:password” | chpasswd

    😣遇到的一些错误

    image.png
    切换用户时要区分好大小写,特别是登入云服务器root身份的时候
    image.png
    每一步都要打对,,哭了
    image.png
    这里我要用Gremmie的身份,用sudo的命令来雪融融的主目录创建一个Gremmie.is.visiting的文件
    这里-u后面应该时xuerongrong,不是Gremmie,弄混了。。。
    image.png
    这里的错误在于,组群2021bioinformatics根本不存在,原因是什么呢?
    我在创建组群的时候,创建成了2022bioinfomatics少了一个r。。。
    成功创建之后就是应该是这样
    image.png
    学习笔记就到这里,希望可以帮到大家,也感谢我学校的邵老师对我的敦敦教诲,我的超人!
    有遗漏或补充请大佬私聊或在评论区指出,
    感谢阅读~😊

    展开全文
  • Linux用户和用户组详解

    千次阅读 2021-10-01 10:50:38
    今天继续给大家介绍Linux基础知识,本文主要给大家介绍Linux用户和用户组。 一、Linux用户和用户组 (一)用户和用户组简介 与windows类似,Linux也有用户和用户组的概念。在Linux系统中,每次登录系统都必须以一个...
  • Linux用户管理:新建用户组和新建用户

    万次阅读 多人点赞 2018-11-21 20:27:50
    一,新建用户组 1.用户组文件  / etc / group,存储当前系统中所有用户组信息,格式:组名:组密码占位符:组编号:组中用户名列表  / etc / gshadow,存储当前系统中用户组的密码信息,格式:组名称:组密码:...
  • Linux练习题】用户和组管理

    千次阅读 多人点赞 2020-12-21 19:29:35
    ① 掌握在Linux系统下利用命令方式实现用户和组管理。 ② 掌握利用图形配置界面进行用户和组管理。 二、实训内容 练习用户和组管理。 三、实训练习 (1)用户管理 创建一个新用户userX,设置其主目录为/home...
  • Linux——用户和用户组管理

    千次阅读 2021-11-12 23:34:00
    学习完了前面的基本命令,小伙伴们是否已经掌握了呢,在这一章中,我们开始学习用户和用户组的基本管理! 用户和用户组的关系 用户和用户组的对应关系有以下 4 种: 一对一:一个用户可以存在一个组中,是组中...
  • 实训 Linux用户管理和权限命令操作实训4 Linux用户的管理、权限及相关命令一.?? 实验目的:1.?掌握在Linux系统下利用命令方式实现用户的管理;2.掌握Linux权限命令的基本使用;二.??? 实验内容...
  • Linux用户组和权限管理

    千次阅读 2022-03-14 22:03:15
    1.创建用户gentoo,附加为binroot,默认shell为/bin/csh,注释信息为"Gentoo Distribution" [root@kezai ~]#useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo [root@kezai ~]#id gentoo uid=...
  • Linux实验四——Linux用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。 Linux用户分为三个基本组:...
  • Linux--用户及用户组管理基本命令

    万次阅读 多人点赞 2021-08-11 18:25:05
    目录学习背景一、用户组管理1.1 用户组查看1.2 用户组添加1.2.1 直接添加用户组1.2.2 指定GID值添加用户组1.2.3 用户组修改1.2.4 用户组删除1.2.5 用户组密码1.2.6 用户组切换1.2.7 管理用户组用户1.2.8 查看用户组...
  • Linux用户和组权限管理

    万次阅读 2021-08-05 16:37:40
    用户组基本概念(1)用户(2)用户组(3)用户组的关系(4)安全上下文 1.前言   Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的...
  • 目录一、背景进程权限最小权限原则linux系统安全模型用户用户组用户组的关系安全上下文进程的用户ID函数setreuidsetregid函数seteuidsetegid思考:UID能为TEE安全世界带来什么用处呢? 一、背景 Linux的用户在...
  • ①超级用户:root管理员,有着最高的权限 ②普通用户:由root所创建的用户 ③程序用户:不能登录只能维持系统某个程序正常运行的用户 2.账号 分为:基本组和附加 基本:账号只有一个,一般是创建用户时...
  • Linux 用户和用户组知识小结

    千次阅读 2022-03-13 21:00:30
    Linux 用户和用户组知识小结
  • 重拾Linux(三)用户和用户组管理

    千次阅读 2021-11-25 23:08:56
    Linux是一个多用户多任务的操作系统,任何一个想要使用系统资源的用户,都必须向系统管理员申请一个账号,然后用这个账号...一、用户组管理 用户组:类似于角色,系统可以对有共性的多个用户进行统一管理。 1. 新...
  • Linux用户和组详解。

    千次阅读 2018-09-11 11:12:57
    Linux用户和组详解。 环境:Xshell6远程连接到Ubuntu18.04。 用户和组: 用户和组的概念应该还是比较好理解的。Linux是一个多用户多任务的操作系统,而肯定是少数有管理员权限的用户管理着所有用户。作为系统的...
  • Linux系统下的用户和用户组的创建和管理

    万次阅读 多人点赞 2020-07-04 09:53:42
    Linux用户和用户组的创建和管理一. Linux用户身份概述1.1 Linux用户介绍1.2 Linux用户相关文件1.3 三个重要passwd,shadow,group文件的介绍二. 创建Linux用户2.1 添加Linux用户——adduser /useradd2.2 设置Linux...
  • linux修改文件权限和用户组管理小结

    千次阅读 2021-05-10 20:54:51
    如何在linux下修改权限chmod g+r path/file 加读权限 当前目录chmod -R g+r path/file 加读权限 当前目录以及子目录g-r 减读权限g+w 加写权限g-wg+x 加执行权限g-x经常会用到的命令,记一下。1.chgrp修改文件所属...
  • linux 用户和用户组命令

    千次阅读 2021-05-09 01:49:06
    -g 用户组 指定用户所属的用户组。-G 用户组用户组 指定用户所属的附加组。-s Shell文件 指定用户的登录Shell。-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标...
  • linux下添加用户组和用户

    千次阅读 2021-05-08 21:17:27
    1,linux下文件权限管理,添加用户组并添加用户添加组:groupadd 组名groupadd deploycat /etc/group | grep deploy如图:删除组:groupdel 组名groupdel deploycat /etc/group | grep deploy查询组:cat /etc/group...
  • Linux用户管理

    千次阅读 2018-09-05 10:52:30
    一、用户管理的配置文件 1、配置文件 (1)、/etc/passwd的文件格式 (2)、用户类型 (3)、伪用户 一、与系统相关:比如有些伪用户是与系统的某些操作相关(比如关机,重启等等,会调用伪用户的身份)。...
  • [root@localhost ~]# id user3 uid=1004(user3) gid=0(root) =0(root) [root@localhost ~]#

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 433,215
精华内容 173,286
关键字:

linux用户和组的管理