用户、组和权限 

   安全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:::    看格式对比就行了







                                 今天博客服务器不知道是不是出问题了, 竟然插图插不上j_0062.gif

   这样也好多打字符练练手j_0068.gif 

  

                                                                作者:小马哥(xiaomag)