用户和组

     用户:

          1:用户和UID对应

          2:用户需要有权限才能读、写、执行其他用户的文件

     组:

          1:组和GID对应

          2:用户需要加到组中

          3:每个用户都有自己的默认组,可以附加到其他的组

          4:同组的用户可以根据组的权限,共享文件,协同合作

UID(User id ):linux系统对用户账号的识别,因为系统不会识别你的账号名,而是通过对账号分配数字ID,便于识别,账号名只是易于用户记忆,便于人类操作

     UID范围

          root:0

          系统账号:小于500

          一般账号:大于500

     对应的账号信息在 /etc/passwd 中

     对应密码信息在 /etc/shadow 中

GID(Group id):和UID同样原理

     对应的账号信息在 /etc/group 中

     对应密码信息在 /etc/groupshadow 中


用户登录验证过程

     1:查看/etc/passwd中有没有相应的账号,没有跳出,有则读取该账号的 uid、gid、home目录、使用的shell

     2:查看/etc/shadow找到相应的账号uid,将密码与输入的密码进行核对

     3:核对正确成功登录

/etc/passwd 数据格式

    [root@boxin ~]# head /etc/passwd

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

     以冒号分开七部分

     1:账号名

     2:早期的密码字段,为了安全性,以将密码保存到/etc/shadow

     3:UID

     4:GID

     5:用户信息说明

     6:家目录,root为/root,一般用户为/home/username

     7:shell,用户登录时使用的bash shell,若为/sbin/nologin 可以使账号无法登录(无法取得shell)

/etc/shadow 数据格式

    [root@boxin ~]# head /etc/shadow

    root:$1$oh1B3zs5$MjrySLOFo0u7IaYsuMsvD0:16558:0:99999:7:::

     1:用户名

     2:加密的密码,在这个字段前加上!或*,就可以使密码失效,因为如MD5加密,密码长度是固定的,长度改变密码就会失效

     3:最近更改密码的日期:以1970/01/01 为1,累加的天数

     4:密码不可改动的天数,以字段3为标准,多少天内不能再改密码,0表示可随意更改

     5:密码在这个天数内需要更改,否则过期,以字段3为标准

     6:密码失效前的警告天数,以字段5为标准

     7:密码过期后的宽限时间,字段3+字段5的值,密码失效时间,过期表示还可以登录,但要改密码,失效表示无法使用

     8:密码失效日,直接设置失效时间,以1970以来的时间标准

     9:保留

/etc/group 数据格式

    [root@boxin ~]# head /etc/group

    root:x:0:

    bin:x:1:bin,daemon

     1:组名

     2:组密码 已移到/etc/gshadow

     3:GID

     4:属于此用户组的用户,将账号名添加到此段可以加入本组

/etc/pshadow 数据格式

    [root@boxin ~]# head /etc/gshadow

    root:::

    bin:::bin,daemon

     1:组名

     2:密码

     3:用户组管理员账号,通过gpasswd可以设置一个用于管理组的,用户组管理员

     4:属于次用户组的用户


相关命令

id:查看用户参数信息

useradd:添加用户

     useradd [-u UID] [-r 类型为系统用户] [-g 初始用户组] [-G 次要用户组] [-c 添加说明密码文件第五列] [-d 家目录] [-s 指定登陆的shell] 账号名

passwd:修改密码

usermod:修改用户设置,参数和useradd一样

userdel:删除用户

     userdel -r username  // -r完整删除用户所有数据,包括邮箱和crontab残留

groupadd:添加组

     groupadd [-g GID] [-r 添加系统类型的组]groupname

groupmod:修改

     groupmod [-g GID] [-n 修改组名] groupname

groupdel:删除组

     前提是空组

chsh:修改shell

     chsh -l //查看可用shell

     chsh -s shellname //修改当前用户的shell


具体例子
1:根据以下要求创建用户,用户组和组成员:

  • 一个名为 admin 的组。

      groupadd admin

  • 一个名为 mary 的用户,并且以 admin 作为其第二所属组。

      useradd -G admin mary

  • 一个名为 alice 的用户,并且以 admin 作为其第二所属组。

      useradd -G admin alice  

  • 一个名为 bobby 的用户,并且此用户在系统中没有交互式的shell 环境,即是nologin

      useradd -s /sbin/nologin bobby

  •  mary,alice,bobby用户都必须要以“password”作为用户密码。

      passwd mary

      echo password | passwd --stdin mary

2:根据以下要求创建一个本地的目录/common/admin。

  • 此目录的拥有组为 “admin”。

     mkdir -p /common/admin

     chgrp -R admin /common/admin

  • -- 此目录必须对于 admin 组的组成员有可读,可写,可执行的权限。但是,除了此目录的拥有组与拥有者外,其他人不能有任何权限。

     chmon 770 /common/admin

   

  • -- 在 /common/admin 中创建的所有文档或目录都自动继承 admin 组。

     chmod g+s /common/admin


3:将umask改为003 ,查看root用户和普通用户创建文件和目录的权限(减去3为去掉 w权限 而非单纯的减去3)

4:复制/etc/fstab/ 到/var/tmp下。

  • 文档的拥有者和组都是root

     cp /etc/fstab /var/tmp

  • 对任何其他用户都没有权限

     cd /var/tmp

     chmod 770 fstab

  • alice可以对文件进行读写执行操作

     setacl -m u:alice:rwx fstab