主要介绍Linux中用户、组的基本概念,对应的配置文件,用户组的管理包括添加、修改、删除。




Linux用户、组概念介绍



用户一种技术、产品、服务的使用者。计算机中用户即使用计算机功能的对象。

用户类别:管理用户与普通用户

管理用户:root

普通用户:系统用户与登录用户

系统用户:分配给相应进程使用,特点无交互式登陆。在程序启动时自动使用相应系统用户。

登录用户:交互式登陆

用户标识:UserID简称UID是16bits的二进制数字其表示范围:0-65535

管理员UID:0

普通用户:1-65535

系统用户:1-499(CentOS6.x) 1-999(CentOS7.x)

登陆用户:500-60000CentOS6.x) 1000-60000(CentOS7.x)

对于系统来说它依靠UID这个数字来识别用户


:系统中的组可以看做一个容器,在它所属下面的所有用户都具有这个容器的相关特性。

若这个组对某个文件有读写执行这三个权限,那么它下面的所有成员对这个文件也具有读写执行三个权限。

组按其不同性质可分三种:

1、

管理员组

普通用户组:系统组、登陆组

组标识:GroupID简称GID

管理员组:0

普通用户组:1-65535

系统用户组:1-499(CentOS6.x) 1-999(CentOS7.x)

登陆用户组:500-60000(CentOS6.x) 1000-60000(CentOS7.x)

2、

用户的基本组 

用户的附加组

3、

私有组:组名同用户名,且只包含一个用户

公共组:组内包含了多个用户



用户在登陆系统时系统会对所登陆用户进行认证,这个认证过程是通过对比事先存储在系统文件的信息与登录时提供的信息是否一致来判断。

对比的文件有/etc/passwd/etc/shadow/etc/gshadow/etc/group

下面对这四个文件做下详细介绍


/etc/passwd 这个文件存储的是用户相关的信息

[root@localhost ~]# tail -5 /etc/passwd
user7:x:3006:3006::/testdir/user7:/bin/csh
user8:x:3007:3007::/testdir/user8:/bin/csh
user9:x:3008:3008::/testdir/user9:/bin/csh
user10:x:3009:3009::/testdir/user10:/bin/csh
laowang:x:4322:4322::/home/laowang:/bin/bash

可以看到该文件有固定的表达格式。

其格式每一项的意义如下

第一项:为name用户名

第二项:为password,可以是加密的密码,也可以是占位符x,这里通常为占位符,而把密码放在另一个文件/etc/shadow内,这样更加安全。

第三项:为UID

第四项:为GID

第五项:为GECOS注释信息

第六项:为Directory用户的家目录

第七项:为shell用户的默认shell,登录时默认的shell程序


/etc/group这个文件存储的是组相关信息

[root@localhost ~]# tail -3 /etc/group
user10:x:3009:
sysadmins:x:5003:
laowang:x:4322:

第一项:groupname组名

第二项:password密码

第三项:GID

第四项:userlist该组的用户成员,以此组为附加组的用户的用户列表。


/etc/shadow此文件为存储用户密码信息的文件

[root@localhost ~]# tail -3 /etc/shadow
user9:$6$EYxzH/dhRFw/zg4V$BQakOIX/HsZJobHdAhpSu5MK.pP1Jtpi/nVwktde/eoOxz5zm1oPUfliy4gzKPmYB5Wf0fBX6OPEEDvNWoUl3/:17016:0:99999:7:::
user10:$6$5eJ8JKiwo/6h42$lhx.J9r6m6dKq8.xKQ82WeiRvLOAQcoTRvEw43DfmxsOB.qfiO1Esyu2oZVCFcejq613h0WEA3G0FD.jxUE3W1:17016:0:99999:7:::
laowang:!!:17016:0:99999:7:::

第一项:user用户名

第二项:password用户密码,密文,默认使用sha512加密

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

第四项:密码最短使用期限,密码再过几天可以被更改,0表示随时可被更改

第五项:最长使用期限,密码再过几天必须变更,99999表示永不过期

第六项:警告期段,密码过期前几天系统提醒用户

第七项:过期期限,密码过期几天后账号被锁定

第八项:保留字段,从1970年1月1日算起,多少天后账号失效。


/etc/gshadow此文件为存储组密码信息的文件,其文件格式与/etc/group相同,却别仅在于第二项密码部分。

[root@localhost ~]# tail -3 /etc/gshadow
user10:*::
sysadmins:$6$RRCfdNW.e$R1CqBN/5WZ8HrYuDlQrgRlP313sg5NNDCdrq2eGkUsieaZAjMM.Dhj8oGvvy/NKsb0joGLQlSspiiQPs78xJ3/::
laowang:!::

第一项:groupname组名

第二项:password组密码,密文,默认sha512加密

第三项:GID

第四项:userlist该组的用户成员,以此组为附加组的用户的用户列表。



这里的四个文件都涉及到密码内容,这里就插点关于密码的相关内容,这内容会加深对加密方式的理解。

在上面的/etc/shadow、/etc/gshadow两个文件内,在第二项密码中,我们看到其开头都有$6,这里$6表示的是sha512加密算法。

加密算法

对称加密:加密和解密使用同一个密码

非对称加密:加密解密使用一对密钥

密钥对儿:公钥、私钥

因为以上还是不够安全所以又有了单项加密

单项加密:只能加密,不能解密,提取数据特征码:

其特性:定长输出、雪崩效应(一点点的变化就会引起大变动)

Linux中使用的加密算法有以下6种:

$1 md5      由128bits二进制表示

$2 sha      由160bits二进制表示

$3 sha224   由224bits二进制表示

$4 sha256   由256bits二进制表示

$5 sha384   由384bits二进制表示

$6 sha512   由512bits二进制表示

近期由于md5的加密方式已被破解所以之前Linux默认使用的md5加密算法已被更新为sha512。



Linux用户、组管理


用户管理:创建、修改、删除

用户创建

命令格式:useradd [OPTION] USERNAME

OPTION:

      -u 指定UID

      -g 指定基本组ID,此组需事先存在

      -c 指明注释信息

      -G 指明用户所属附加组,附加组需事先存在。

      -d 指明用户家目录,通过复制/etc/skel/此目录并重命名实现,指定的家目录路径如果事先存在,则不会为用户复制环境配置文件

      -s 指定用户默认shell

      -r 创建系统用户

      -D 显示创建用户的默认配置

      -D + [选项] 修改用户的默认配置 /etc/login.def   修改的结果保存于/etc/default/useradd中


用户修改

usermod

命令格式:usermod [OPTION] USERNAME

OPTION:

      -u 修改用户的ID为指定的新UID

      -g 修改用户的GID为新的GID

      -c 修改该用户注释信息

      -G 修改该用户所属附加组,附加组需事先存在。

      -d 修改用户家目录,用户原有的文件不会被转移至新位置

      -m 与-d一起使用,将原来的家目录移动至新家目录(-m放在-d后面使用)

      -l 修改用户名

      -s 修改该用户默认shell

      -L 锁定用户密码

      -U 解锁用户密码


用户删除

userdel

命令格式:userdel [OPTION] USERNAME

OPTION:

      -r 删除用户时一并删除家目录


组管理:创建、修改、删除

组创建

groupadd

命令格式:groupadd [OPTION] GROUPNAME

OPTION:

      -g 指定GID,默认是上一个组的GID+1

      -r 创建系统组


组修改

groupmod

命令格式:groupadd [OPTION] GROUPNAME

OPTION:

      -g 修改GID

      -n 修改组名


组删除

groupdel GROUPNAME


其他的命令

groups USERNAME

查看用户的所属组信息


[root@localhost test]# groups gentoo
gentoo : gentoo distro peguin netadmin


这说明gentoo用户的基本组是gentoo,distro peguin netadmin是其附加组。



下面通过几个例子来具体感受用户、组管理的具体作用


1、创建用户u1,附加组g1,g2,默认shell为/bin/csh,注释信息为“UUU”

要实现上述内容,需先创建组g1、g2,之后再创建u1。

[root@localhost ~]# groupadd g1
[root@localhost ~]# groupadd g2
[root@localhost ~]# useradd u1 -G g1,g2 -s /bin/csh -c "UUU"
[root@localhost ~]# tail -1 /etc/passwd
u1:x:4323:4323:UUU:/home/u1:/bin/csh
[root@localhost ~]# groups u1
u1 : u1 g1 g2


2、创建下面的用户、组和组成员关系

名字为admins的组

用户u2,使用admins作为附属组

用户u3,也是用admins作为附属组

用户u4,不可交互登陆系统,默认家目录为/test/u4,u2、u3、u4密码都是centos

[root@localhost ~]# useradd -G admins u2
[root@localhost ~]# useradd -G admins u3
[root@localhost ~]# useradd -s /sbin/nologin -d /test/u4 u4
[root@localhost ~]# echo "centos" | passwd --stdin u2
更改用户 u2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# echo "centos" | passwd --stdin u3
更改用户 u3 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# echo "centos" | passwd --stdin u4
更改用户 u4 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# tail -5 /etc/passwd
laowang:x:4322:4322::/home/laowang:/bin/bash
u1:x:4323:4323:UUU:/home/u1:/bin/csh
u2:x:4324:4324::/home/u2:/bin/bash
u3:x:4325:4325::/home/u3:/bin/bash
u4:x:4326:4326::/test/u4:/sbin/nologin

不可交互指的是其默认shell为/sbin/nologin


3、修改u4用户的家目录为/home/u4,要求其原文件仍能被用户访问

[root@localhost ~]# usermod -d /home/u4 -m u4
[root@localhost ~]# ll /home
总用量 8
drwx------.  3 fedore  fedore    89 8月   2 22:04 fedore
drwxr-xr-x.  3 root    root      74 8月   2 22:00 gentoo
drwx------.  5 laowang laowang 4096 8月   4 16:06 laowang
drwxr-xr-x.  3 root    root      74 8月   3 10:49 test1
drwx------.  3 u1      u1        74 8月   4 17:25 u1
drwx------.  3 u2      u2        74 8月   4 17:38 u2
drwx------.  3 u3      u3        74 8月   4 17:38 u3
drwx------.  3 u4      u4        74 8月   4 18:18 u4
[root@localhost ~]# tail -1 /etc/passwd
u4:x:4326:4326::/home/u4:/sbin/nologin
[root@localhost ~]# ll /test/
总用量 948
-rw-rw-r--. 1 gentoo gentoo      0 8月   4 16:05 a
-rw-rw-r--. 1 gentoo gentoo      0 8月   4 16:05 b
-rwxr-sr-x. 1 root   root    33040 8月   4 16:02 echo
-rw-rw-r--. 1 gentoo gentoo     59 8月   4 16:09 fedora
-rw-rw-r--. 1 gentoo root       34 8月   4 16:23 laowang2
drwx---rwx+ 2 root   root       26 8月   3 11:46 t1
-rw-r--r--. 1 root   root      162 8月   3 08:49 userpd
-rw-r--r--. 1 root   root      432 8月   3 08:45 user.txt
-rwxr-sr-x. 1 root   root   910040 8月   4 16:02 vi