zoukankan      html  css  js  c++  java
  • 用户管理

    一、用户相关文件

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

      root:x:0:0:root:/root:/bin/bash

      第一列    用户名

      第二列    密码位

      第三列    用户ID,0  超级用户UID,1-499    系统用户(伪用户)UID,500-60000    普通用户UID

      第四列    组ID  

      第五列    用户说明

      第六列    用户家目录

      第七列    登录shell

      2. /etc/shadow         root:$6$UL.IbTJScIBEZOCU$duGBnJDyRDqcJvPbxYKZZqZxdpGyRvVbPaQBJRA7bwxJ3deJXNCQJRXWp/BSuJMBLuwBJHOuqDb47HRpn5jj7.::0:99999:7:::

      第一列    用户名

      第二列    加密密码

             我们也可以在密码前人为的加入“!”或“*”改变加密值让密码暂时失效,使这个用户无法登陆,达到暂时禁止用户登录的效果。

             注意所有伪用户的密码都是“!!”或“*”,代表没有密码是不能登录的。当然我新创建的用户如果不设定密码,它的密码项也是“!!”,代表这个用户没有密码,不能登录

      第三列    (时间戳)密码最近修改时间,以1970年1月1日作为标准时间

      第四列    两次密码的修改间隔时间(和第3字段相比)

      第五列    密码有效期(和第3字段相比)

      第六列    密码修改到期前的警告天数(和第5字段相比)

      第七列    密码过期后的宽限天数(和第5字段相比)

      第八列    密码失效时间

             这里同样要写时间戳,也就是用1970年1月1日进行时间换算。如果超过了失效时间,就算密码没有过期,用户也就失效无法使用了

      第九列    保留

      3. /etc/group  组信息文件

      root:x:0:

      第一列    组名

      第二列    组密码位

      第三列    GID

      第四列    此组中支持的其他用户.附加组是此组的用户

      初始组:每个用户初始组只能有一个,初始组只能有一个,一般都是和用户名相同的组作为初始组

      附加组:每个用户可以属于多个附加组。要把用户加入组,都是加入附加组

      4. 用户邮箱目录

        /var/spool/mail/

      5. 用户模板目录

        /etc/skel

    二、用户管理命令

      1. 添加用户

        1.1 useradd命令

        useradd 选项 用户名

        -u    550    指定用户UID

        -g    组名    指定初始组,不要手工指定

        -G      组名    指定附加组,把用户加入组,使用附加组

        -c    说明    添加说明

        -d    目录    指定用户家目录,目录不需要事先建好

        -s    shell    /bin/bash

        1.2 useradd默认值

        useradd添加用户时参考的默认值文件主要有两个,分别是/etc/default/useradd和/etc/login.defs

          1.2.1 /etc/default/useradd

          

          GROUP=100      

          这个选项是建立用户的默认组,也就是说添加每个用户时,用户的初始组就是GID为100的这个用户组。目前我们采用的机制私有用户组机制。

          HOME=/home

          这个选项是用户的家目录的默认位置,所以所有的新建用户的家目录默认都在/home/下

          INACTIVE=-1

          这个选项就是密码过期后的宽限天数,也就是/etc/shadow文件的第七个字段。如果是天数,比如10代表密码过期后10天后失效;如果是0,代表密码过期后立即失效;如果是-1,则代表密码永远不会失效。这里默认值是-1,所以所有新建立的用户密码都不会失效

          EXPIRE=

          这个选项是密码失效时间,也就是/etc/shadow文件的第八个字段。也就说用户到达这个日期后就会直接失效。当然这里也是使用时间戳来表示日期的。默认值是空,所以所有新建用户没有失效时间,永久有效

          SHELL=/bin/bash

          这个选项是用户的默认shell的。/bin/bash是Linux的标志shell,所以所有新建立的用户默认都具备shell赋予的权限

          SKEL=/etc/skel

          这个选项就是定义用户的模板目录的位置,/etc/skel/目录中的文件都会复制到新建用户的家目录当中

          CREATE_MAIL_SPOOL=yes

          这个选项定义是否给新建用户建立邮箱,默认是创建,也就是说所有的新建用户系统都会新建一个邮箱,放在/var/spool/mail/下和用户名相同

          1.2.2 /etc/login.defs

          

      2. 设定密码

        passwd [选项] 用户名

        -l        暂时锁定用户。仅root用户可用

        -u          解锁用户。仅root用户可用

        --stdin      可以将通过管道符输出的数据作为用户的密码。主要在批量添加用户时使用

        echo "123" | passwd --stdin sss

        可以通过命令,把密码修改日期归零(shadow第3字段).这样用户一登陆就要修改密码

        chage -d 0 sss

      3. 用户信息修改

        usermod [选项] 用户名

        -u    修改用户UID

        -d    修改用户家目录。家目录必须写绝对路径

        -c    修改用户说明

        -g    修改用户初始组

        -G    修改用户附加组

        -s    修改用户的登录shell

        -e    修改用户的失效日期,格式为“YYYY-MM- DD”。也就是/etc/shadow文件的第八个字段

        -L    临时锁定用户(Lock)

        -U    解锁用户(Unlock)

      4. 删除用户

        userdel [-r] 用户名

        -r    在删除用户时同时删除用户的家目录

      5. 切换用户

        su [选项] 用户名

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

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

        '-' 不能省略,它代表切换用户身份时,用户的环境变量也要切换成新用户的环境变量。

    三、组管理命令

      1.添加用户组,groupadd

        groupadd [选项] 组名

        -g GUID    指定组ID

      2. 删除用户组,groupdel

        groupdel 组名

        要删除的组不能是其他用户的初始组,也就是说这个组中没有初始用户才可以删除。如果组中有附加用户,则删除组时不受影响

      3.把用户添加进组或从组中删除:gpasswd

        gpasswd命令是用来设定组密码并指定组管理员的,但是gpasswd命令现在主要用于把用户添加进组或从组中删除

        gpasswd [选项] 组名

        -a 用户名    把用户加入组

        -d 用户名    把用户从组中删除

        也可以使用usermod命令把用户加入某个组,不过usermod命令的操作对象是用户,命令是“usermod -G grouptest user1”,把用户名作为参数放在最后;

        而gpasswd命令的操作对象是组,命令是“gpasswd -a user1 grouptest”,把组名作为参数放在最后。

      4. 改变有效组,newgrp

        newgrp 组名

        当用户属于多个组时,在创建文件时哪个组身份生效。使用newgrp命令可以在多个组身份之间切换。

        

         

  • 相关阅读:
    Android 开发 深入理解Handler、Looper、Messagequeue 转载
    Android 开发 Handler的基本使用
    Java 学习 注解
    Android 开发 AlarmManager 定时器
    Android 开发 框架系列 百度语音合成
    Android 开发 框架系列 Google的ORM框架 Room
    Android 开发 VectorDrawable 矢量图 (三)矢量图动画
    Android 开发 VectorDrawable 矢量图 (二)了解矢量图属性与绘制
    Android 开发 VectorDrawable 矢量图 (一)了解Android矢量图与获取矢量图
    Android 开发 知晓各种id信息 获取线程ID、activityID、内核ID
  • 原文地址:https://www.cnblogs.com/sswind/p/11799546.html
Copyright © 2011-2022 走看看