• 关于UID和GID的创建、修改、删除;简要举例


    用户、组和权限 

       安全3A资源分派   

     (authentication)认证

     (authorization)授权

     (accounting)审计

       user( 用户)

    Linux用户:Username/UID   (用户的名称和用户的UID)

     管理员:root,0   管理员的UID是0  (一般系统默认root为管理员,用户UID为0的都可以作为管理员)

     普通用户:1-65535 

     普通用户分为两种:

         系统用户:1-499(CentOS6),1-999(CentOS) 

           对守护进程获取资源进行权限分配

         登录用户:500+(CentOS6),1000+(centos7)

           通过交互式交互式登录

    【用户是UID、组是GID】

       group(组)一些用户或组的集合 称之为组

     Linux组:Groupnname/GID   (组的名称和组的GID)

     管理员组:root,0  管理员组的GID是0

     系统组:1-499(centos6) 1-999(centos7) 

     普通组:500+(centos 6) 1000+(centos 7)

     对于一个普通用户而言可以有多个不同的组,分别称之为用户的基本组(主组)和附加组;基本组

     组名与用户名相同,切仅仅包含一个用户,也叫私有组。基本组以外的组属于用户的附加组 

     例如:[root@MKB ~]# cat /etc/passwd

     执行结果:root:x:0:0:root,chfn,xiaomage,sdad:/root:/bin/bash

     格式:(用户名:密码:UID:GID:主组,附加组:家目录:用户默认的shell)

            Linux组的类别

     用户的主要组称为(主组):

     用户必须属于一个并且只有一个主组

     组名同用户名,且仅包含一个用户称为(私有组)

     用户的付加组称为(辅助组):

        一个用户可以属于零个或者多个辅助组

     例如: ~]# groups   (查看当前所在组)

     执行结果:  root          

     例如: ~]# groups bin(查看用户主组,有没有附加组)

     执行结果:   bin : bin daemon sys   (用户):(主组)(附加组)

     例如: ~]# id bin  (显示指定用户或当前用户的用户与组信息) 

     执行结果 : uid=1(bin) gid=1(bin) groups=1(bin),2(daemon),3(sys)                                        (用户)(主组)    组的列表= 主组,辅助组,附加组 

     例如: ~]# id -u makangbo  (仅显示有效用户ID)

     执行结果:500    (命令加选项,用户id)

     例如:  ~]# getent passwd makangbo (查看家目录的路径信息)

            makangbo:x:500:500::/home/makangbo:/bin/bash

       (用户名:密码:UID:GID:用户注释信息:用户的家目录:用户默认的shell)

     security context (安全上下文)

     运行中的程序:进程(process)

     以进程发起者的身份运行:例如# root:/bin/cat

                             例如# xiaomag:/bin/cat

     进程所能访问资源的权限取决于进程的运行者的身份

     而不是取决于资源的所有者 (人不一样权限不一样,跟程序无关)

            

        Linux用户和组的主要配置文件:

             /etc/passwd:用户及其属性信息(名称、UID、主组ID等)

             /etc/group:组及其属性信息

             /etc/shadow:用户密码及其相关属性

             /etc/gshadow:组密码及其相关属性

     ~]# pwunconv  (密码从shadow转换到passwd)

     ~]# pwconv   (密码不转换)

       passwd 文件格式  (用户及其属性信息)

    login name:登录用户名(xiaomage)

    passwd: 密码 (x)

    UID:用户身份编号(1000)

    GID:登录默认所在组编号(1000)

    GECOS:用户全名或注释

    home directory:用户主目录(/home/xiaomag)

    shell:用户默认使用shell(/bin/bash)

    例如:~]# cat /etc/passwd

    执行结果:xiaomage:x:3010:3010::/home/xiaomage:/bin/bash

       格式:(用户:密码:UDI:GID:用户全名或注释:家目录:当前所用的shell)

                                                                                           

        shadow 文件格式  (用户密码及其相关属性)

     登录用户

     用户密码:一般用sha512加密

     从1970年1月1日起到密码最近一次被更改的时间

     密码再过几天可以被变更(0表示随时可被变更)

     密码再过几天必须被变更(9999表示永不过期)

     密码过期前几天系统提示用户(默认为一周)

     密码过期几天后帐号会被锁定

     从1970年1月1日算起,多少天后帐号失效。

     例如:~]# cat /etc/shadow

     执行果结果:xiaomage:$6$3C3XJDxs$2sUoIOWp3IoHu6jzz3lXVVCmUcq.ABX8LQv/YywLSFWhowlmN1eWKWUWmkl.HQ.gYufi030F3m0XnfE9jLslo/:17015:0:99999:7:::

     格式   (用户名:加了密的密码:最近一次更改密码的日期:密码的最小使用期限:密码的最大使用期限:提示密码警告时间段:密码禁用期:账户过期日期:保留字段)

           密码的加密解密机制

     加密:明文- 密文

     解密: 密文- 明文

     单项加密:哈希算法,原文不同,密文必不同

     相同算法定长输入,获取密文不可逆推原始数据

     雪崩效应:初始条件的卫校改变,引起结果的巨大改变

      sha256:256bits

      sha512:512bits

     更改加密算法 authconfig --passalgo=sha256 --update

         group文件格式   (组及其属性信息)

     群组名称

     群组密码:通常不设定,密码是被记录在/etc/gshadow

     GID:就是群组的ID

     以当前组为附加组的用户列表(分隔符为逗号)

     例如:~]# cat /etc/group 

     执行结果   bin:x:1:bin,daemon

      格式    (组名称:组密码:组GID:当前组为组的附加组用户列表,以逗号分隔开)

      

        gshdow文件格式    (组密码及其相关属性)

    群组名称 

    群组密码

    组管理员列表:组管理员列表,更改组密码和成员

    以当前组为附加组的用户列表:(分隔符为逗号)  

        文件操作

     vipw和vigr  (编辑密码、组、影子密码或影子组文件)

     pwck (检查密码的完整性)

     grpck(检查组组文件的完整性) 

    vipw, vigr - 编辑密码、组、影子密码或影子组文件。

    vipw [选项]

    vigr [选项]

      描述 vipw 和 vigr 命令分别编辑 /etc/passwd 和 /etc/group 文件。使用 -s 标识时

           ,将编辑这些文件的影子版,即分别为 /etc/shadow 和 /etc/gshadow。这些程序

           将设置相应的锁,以防止文件损坏。寻找编辑器时,首先尝试环境变量 $VISUAL,

           然后是环境变量 $EDITOR,最后是默认编辑器 vi(1)。

    选项:

         

    -g, --group

               编辑 group 数据库。

           -h, --help

               现实帮助信息并退出。

           -p, --passwd

               编辑 passwd 数据库。

           -q, --quiet

               安静模式。

           -R, --rootCHROOT_DIR

               适用于chroot_dir目录的变化和使用从chroot_dir目录的配置文件。

           -s, --shadow

               编辑 shadow 或 gshadow 数据库。

           pwck (检查密码的完整性)

      用户管理命令

      useradd (增加用户)  

      usermod (修改用户)

      userdel  (删除用户)

      组帐号维护命令

      groupadd (建立组)

      groupmod (修改组)

      groupdel (删除组)

      useradd - 创建一个新用户或更新默认新用户信息

      

           useradd [选项] 登录

           useradd -D

           useradd -D [选项]

    描述

           如果使用时不带 -D 选项,useradd 命令使用命令行上指定的值和系统的默认值创

           建一个新用户。根据命令行选项,useradd 命令也会更新系统文件和创建新用户的

           主目录并复制初始文件。

           默认上,也会为用户创建组

           

           

             -u, --uidUID

               用户 ID 的数字值。此值必须为唯一的,除非使用了 -o 选项。此值必须非负

               ,默认使用大于等于 UID_MIN,且大于任何其他用户 ID 最小值。

             -o, --non-unique

               允许使用重复的 UID 创建用户账户。

               此选项只有和 -u 选项组合使用才有效。         

             -g, --gidGROUP

               用户初始登陆组的组名或号码。组名必须已经存在。组号码必须指代已经存在

               的组。    指明用户所属基本组,可为组名也可为GID

             -c, --commentCOMMENT

               任何字符串。通常是关于登录的简短描述,当前用于用户全名。 用户注释信息

             -d, --home-dir HOME_DIR

               以指定的路径(不存在)为家目录

             -s, --shellSHEL

               指明用户的默认shell程序;可用在列表/etc/shell 文件中

             -G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]

               为用户指明附加组,组必须事先存在

               受到了 -g 选项给定的组同样的限制。

             -N, --no-user-group

               不创建私用组做主组,使用users做主组

             -r, --system

               创建系统用户

             -m, --create-home

               如果不存在,则创建用户主目录。骨架目录中的文件和目录(可以使用 -k 选

               项指定),将会复制到主目录。

    练习:1

    创建testuser uid 1234,主组:bin,辅助组:root,ftp,shell:/bin/csh home:/testdir/testuser

    #useradd testuser -u 1234 -g bin -G root,ftp -m -d home/testdir/testuser -s /bin/csh

    (命令选项加家目录名称)(加选项-u创建UID)(-g创建主组) (-G创建附加组)(-d创建家目录路径-  m配合-d使用具体的看上面选项)

         usermod (修改用户)

      usermod [选项] 登录

    描述   usermod 修改系统账户文件和在命令行上指定的相关更改。

           -c, --commentCOMMENT   ('xiaomage')

           用户密码文件中注释字段的新值。通常使用 chfn(1) 工具对其进行修改。新的注释信息              -u, --uidUID

               用户 ID 的新数值。

               这个值必须是唯一的,除非使用了 -o 选项,必须是非负值。

           -g, --gidGROUP

            新基本组GID   用户的新初始登录组的组名或数字代号。此组必须存在。

                          用户主目录中,属于原来的主组的文件将转交新组所有。

           G, --groups GROUP1[,GROUP2,...[,GROUPN]]]

      新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项,表示append(附加,贴上)

           -s, --shellSHELL

           用户的新登录 shell 的名称。将此字段设置为空会让系统选择默认的登录 shell

           -d, --homeHOME_DIR

           新家目录不会自动创建,原家目录的文件不会移动至新家目录;

           若要创建新家目录并移动原家目录数据,同时使用-m选项。

           -m, --move-home              

          将家目录内容移至新位置 (仅于 -d 一起使用)

           -l, --loginNEW_LOGIN

           修改为新的名字

          -L, --lock

            指定用户名字,在/etc/shadow,密码栏中增加!字符进行锁定

          -U, --unlock

            指定用户,在/etc/shadow,密码栏中删除!字符  进行解锁                                     -e, --expiredateEXPIRE_DATE

            指明 用户账户将过期的日期。日期以 YYYY-MM-DD 格式指定。

          

          -f, --inactiveINACTIVE

            密码过期之后,账户被彻底禁用之前的天数。

            0 表示密码过期时,立即禁用账户;-1 表示不使用这个功能。

            此选项需要一个 /etc/passwd 文件。

           

          userdel  (删除用户)

       

          userdel [选项] 登录

    描述   userdel 修改系统账户文件,删除与用户名 LOGIN 相关的所以项目。给出的用户

           名必须存在。

       

           -r, --remove   删除用户家目录

           用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中

           的文件必须手动搜索并删除。

    练习:2

    修改testuser uid:4321,主组:root,辅助组:nobody, loginname:test,home:/home/test 家数据迁移

     ~ ]# usermod -u 4321 -g root -G nobody -l test -m -d /home/test testuser

    (命令加-u选项修改UID)(-g修改主组 -G改新家目录)(-l改附加组) (-d创建新家目录-m般原始数据迁移到新家目录)(原家目录)

    练习:3

    批量创建帐号:user1...user10  uid:3000-3009,shell:/bin/csh,home:/testdir/username

       passwd:usernamepass  

        注意家目录相关配置,使用户正常登录

    先来创建用户

    ]# vim u.txt 用编辑器 编辑一个自定义名称的txt文档  文档格式看下面

    ]# cat u.txt    查看文档的内容

    user:x:3000:3000::/home/testdir/user:/bin/csh

    user1:x:3001:3001::/home/testdir/user1:/bin/csh

    user2:x:3002:3002::/home/testdir/user2:/bin/csh

    user3:x:3003:3003::/home/testdir/user3:/bin/csh

    user4:x:3004:3004::/home/testdir/user4:/bin/csh

    user5:x:3005:3005::/home/testdir/user5:/bin/csh

    user6:x:3006:3006::/home/testdir/user6:/bin/csh

    user7:x:3007:3007::/home/testdir/user7:/bin/csh

    user8:x:3008:3008::/home/testdir/user8:/bin/csh

    user9:x:3009:3009::/home/testdir/user9:/bin/csh

    ]# newusers u.txt  (新增用用户的命令,新增文档内的用户)

    ~]# ll /home/testdir/ (查看路径是否成功)

    总用量 40

    drwx------. 2 user  user  4096 8月   2 19:58 user

    drwx------. 2 user1 user1 4096 8月   2 19:58 user1

    drwx------. 2 user2 user2 4096 8月   2 19:58 user2

    drwx------. 2 user3 user3 4096 8月   2 19:58 user3

    drwx------. 2 user4 user4 4096 8月   2 19:58 user4

    drwx------. 2 user5 user5 4096 8月   2 19:58 user5

    drwx------. 2 user6 user6 4096 8月   2 19:58 user6

    drwx------. 2 user7 user7 4096 8月   2 19:58 user7

    drwx------. 2 user8 user8 4096 8月   2 19:58 user8

    drwx------. 2 user9 user9 4096 8月   2 19:58 user9

    ~]# cat /etc/passwd   (查看用户信息)

    user:x:3000:3000::/home/testdir/user:/bin/csh

    user1:x:3001:3001::/home/testdir/user1:/bin/csh

    user2:x:3002:3002::/home/testdir/user2:/bin/csh

    user3:x:3003:3003::/home/testdir/user3:/bin/csh

    user4:x:3004:3004::/home/testdir/user4:/bin/csh

    user5:x:3005:3005::/home/testdir/user5:/bin/csh

    user6:x:3006:3006::/home/testdir/user6:/bin/csh

    user7:x:3007:3007::/home/testdir/user7:/bin/csh

    user8:x:3008:3008::/home/testdir/user8:/bin/csh

    user9:x:3009:3009::/home/testdir/user9:/bin/csh

    以上就是创建用户成功了

    账户都有了但是没有密码,这就不正常了,下面要批量创建密码

     ~]# vim m.txt 用编辑器 编辑一个自定义名称的txt文档 上面已经有个用户的文档了,

                   尽量不要搞重名的文档,不然会报错  文档格式看下面

     ~]# cat m.txt    查看文档内容

    user:userpass

    user1:user1pass newusers

    user2:user2pass

    user3:user3pass

    user4:user4pass

    user5:user5pass

    user6:user6pass

    user7:user7pass

    user8:user8pass

    user9:user9pass

                文档创建成功 ,接下来读取

    ~]# cat m.txt |chpasswd   (把文档用管道符 传给设置密码的命令)

    ~]# cat /etc/shadow     (查看用户密码及其相关属性)

    user1:$6$9RYuW/M8iMIv$e5rTqpt4bPWycu9dflgmlmTxqsC5V9KVF.IvANn16YxI.QC3gRII7zXdBnEDOiiKY70SxtDeqeA/i76RgMSFh.:17015:0:99999:7:::

    user2:$6$gmd.k/BQ$1Ql1A6PNP7EVG.BVfinrZYsO0vDpyuk8mp7pGkE.tkHdIQQcjQqfeI4JjtnTq5VSi.OmCy9/TvxscuYazQxy71:17015:0:99999:7:::

    user3:$6$iUyAeZuXLR/Sn$Oyg98sTOyQL49LOv1.xPg4sjj6nrOHtPzIza8rXn9LFzsTg2Nfo/lODx5SKrbp9ymlZq3eBRcERoWvn8x7ptx/:17015:0:99999:7:::

    user4:$6$WgQDi/WewTe$ajT38DDqkSdhTMkvdAW8koAqiWe85jo8CtrunpVu3mcF7HleO6Qr3W1u2hLkrPzPr2rAOL5F63PV7JmdzNXn70:17015:0:99999:7:::

    user5:$6$RpHcooAEzPWfXE$K2enpej7BLJptsBVfgrEnhKIYVNtWHEqF5kEb450QfQ7RvGcSvyIxFhUrfz3APU68McEIlFpVR4Hj2jN/WK7J.:17015:0:99999:7:::

    user6:$6$VNZIrZd/$ANJbrUlG62NKiuxM5SmiMx8.NGwdcQYcFOHbXzbIMAw1LO8DZmSoXoHvvObMaVmVd4U4MjT.JrDQRBZF5ZAqE/:17015:0:99999:7:::

    user7:$6$oR0Alfvtp$2ZC6f8O3A09sc.eXZXpo3DPRnLLBWmY5AOG7mRXPwc50xg/jmmlEifLYh/mres8K9Q3VMjr.Cr9MSszcENEZT0:17015:0:99999:7:::

    user8:$6$QVxA9n13$ShUI1NGBOOI5DsLcZXpUsUHPTMqIcWDn9C5aZlklrkstopXD8/ToJwvDzgj5wxF8YOXgq5XLOcVRHaY7HPoUA.:17015:0:99999:7:::

    user9:$6$eWpxt/KyUX1FmNgB$ByklE1y2ESnglrfvPpOYxoaJZnIhgs/jmj4empwc.T1qILZP11zwCwNyaCBMT/3A9DBNQdIU8QP4Fvro4QLTr1:17015:0:99999:7:::

    这就是成功了,当然密码经过加密了。

    下面找一个没设置密码的做对比:test:!!:17015:0:99999:7:::    看格式对比就行了

  • 相关阅读:
    android.mk 文件中变量
    【转】An Intuitive Guide To Exponential Functions & e
    卷积相关
    opencv 调试时不显示图像
    Luhn 算法-- 信用卡号码的校验
    perl 脚本实现简单搜索修改文件并生成diff文件
    【转】gcc: multiple definition of [转]
    【转】undefined reference问题总结
    【转】pthread_cond_t怎么使用
    linux编程使用记录
  • 原文地址:https://www.cnblogs.com/yubolin/p/5985083.html
Copyright © 2020-2023  润新知