系列教程--Linux基础--12--用户和组

本节概述

Linux 用户、组简介

Linux 用户管理

Linux 组管理

账号相关配置文件分析

userconf 管理用户、组

环境准备

操作系统:Centos7.2、Centos6.5。

一、Linux 用户、组简介

Linux 系统是一个多用户多任务的分时操作系统,任何一个需要使用系统资源的用户都必须先向系统管理员申请一个账号,然后使用分配的账号进入系统。

用户账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制用户对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个账户都拥有唯一的用户名和对应的密码信息。

用户在登录时输入正确的用户名和密码,即可进入系统和自己的家目录。

实现用户账号管理,要完成的工作主要分为如下几个方面:

  1. 用户账号的添加、删除和修改。
  2. 用户密码(或者密钥)的管理。
  3. 用户组的管理。

二、Linux 用户管理

Linux 账号的管理工作主要涉及到用户账号的添加、修改和删除。

添加用户即在系统中创建一个新的账号,然后为新的账号分配用户号、用户组、用户家目录和登录shell等资源。

  刚添加的账号是被锁定的,无法使用,需要添加密码后才可进行使用。

  Linux 下根据账号的功能个可以分为:

  超级用户:uid 0

  系统用户:uid 1-499

  普通用户:uid 500+

1. 添加账号

命令:useradd

格式:useradd <选项> 用户名

参数:

  -c 描述性信息。

  -d 指定用户家目录。

  -g 指定用户所属的用户组。

  -G 指定用户所属的附加组。

  -s 指定用户的登录shell。

  -u 指定用户的用户号。

  -M 不创建主目录。

举例:

 [root@localhost ~]# useradd user2   #添加用户user2,家目录默认在/home

[root@localhost ~]# id user2  #查看用户user2的id

uid=1003(user2) gid=1003(user2) groups=1003(user2)

[root@localhost ~]# ls /home

git  user1  user2

[root@localhost ~]# useradd -d /usr/user3 user3  #新建用户user3,并指定家目录为/usr/user3

[root@localhost ~]# id user3

uid=1004(user3) gid=1004(user3) groups=1004(user3)

[root@localhost ~]# ls /usr

bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp  user3

[root@localhost ~]# useradd -s /bin/sh user4 #添加用户user4,并指定shell为/bin/sh

[root@localhost ~]# id user4

uid=1005(user4) gid=1005(user4) groups=1005(user4)

[root@localhost ~]# ls /home

git  user1  user2  user4

2. 修改账号

修改账号即根据实际情况更改用户的有关的属性,如用户的id、用户家目录、用户组、用户的登录shell。

命令:usermod

格式:usermod <选项> <用户名>

参数:-c、-d、-m、-M、-g、-G、-s 等选项的意义和useradd的一样,可以为用户指定新的值。

举例:

[root@localhost ~]# id user2

uid=1003(user2) gid=1003(user2) groups=1003(user2)

[root@localhost ~]# usermod -s /bin/sh -d /usr/user2 -g user3 user2

[root@localhost ~]# id user2

uid=1003(user2) gid=1004(user3) groups=1004(user3)

3. 用户口令管理

用户管理的一项重要的内容是用户口令的管理,即密码管理。

用户刚创建时并没有口令,被系统锁定,无法使用,必须为新建的用户指定口令后才可使用,即使口令是空口令也可使用。

不加用户名时默认修改当前用户的口令。

普通用户修改口令时无需输入原口令,直接输入新的新口令即可,普通用户修改口令时需要输入原先的口令再输入两次新的口令。

处于安全考虑,建议密码长度大于8位,且包含大小写字母、数字、特殊字符。

             命令:passwd

             格式:passwd <选项> <用户名>

             参数:

               -l 锁定口令,进禁用账号

              -u 口令解锁

              -d 取消账号口令

              -f 强迫用户下次登录时修改口令

             举例:

             [root@localhost ~]# passwd    #默认修改当前用户的口令,root直接修改。

Changing password for user root.

New password:

BAD PASSWORD: The password is shorter than 8 characters  #密码警告

Retype new password:

passwd: all authentication tokens updated successfully.

[root@localhost ~]# passwd

Changing password for user root.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

[root@localhost ~]# passwd user2  #为user2设置密码

Changing password for user user2.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

[root@localhost ~]# su - user2  #切换到普通用户user2

Last login: Sat Apr  7 05:03:22 PDT 2018 on pts/0

su: warning: cannot change directory to /usr/user2: No such file or directory

-sh-4.2$ passwd

Changing password for user user2.

Changing password for user2.

(current) UNIX password:    #普通用户需要先输入当前的密码

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

[root@localhost ~]# passwd -d user2  #清空user2的密码

Removing password for user user2.

passwd: Success

[root@localhost ~]# su - user3  #切换到user3

[user3@localhost ~]$ su - user2  #user3切换到user2此时不需要密码。

Last login: Sat Apr  7 05:04:08 PDT 2018 on pts/0

su: warning: cannot change directory to /usr/user2: No such file or directory

-sh-4.2$ exit

logout

[user3@localhost ~]$ exit

logout

[root@localhost ~]# passwd -l user2  #锁定user2,不能使用user2登录。

Locking password for user user2.

passwd: Success

4. 账号删除

  如果一个用户账号不再使用,如对应的人离职,可以从系统中将此账号删除,删除用户账号时可以连同用户的家目录一并删除。

  命令:userdel

  格式:userdel <选项> 用户名

  参数:

    -r 连同用户家目录一并删除,默认不删除家目录。

  举例:

[root@localhost ~]# useradd user5

[root@localhost ~]# useradd user6

[root@localhost ~]# ls /home

git  user1  user5  user6

[root@localhost ~]# userdel user5  #删除user5

[root@localhost ~]# ls /home  

git  user1  user5  user6   #user5删除后家目录还在。

[root@localhost ~]# rm -rf /home/user5  #手工删除user5家目录

[root@localhost ~]# userdel -r user6  #删除user6,及其家目录。

[root@localhost ~]# ls /home

git  user1    #家目录一并被删除

用户相关其他命令

查看当前登录系统的用户

[root@localhost ~]# whoami

root

[root@localhost ~]# who am i

root     pts/0        2018-04-08 21:14 (192.168.93.1)

批量用户密码设置:

工作中一般需要管理的服务器非常多,如果需要给大量用户修改密码或者设置密码,使用passwd 用户名这种交互式的方法不合适,可以使用如下方法:

            Centos6.x: echo 123456 | passwd --stdin user1

            Centos7.x: echo root:123456 | chpasswd  

            可以将上述方法写到shell脚本中。

三、Linux 组管理

Linux 用户组根据账号的功能可以分为:

  超级用户组:gid 0

  系统用户组:gid 1-499

  本地用户组:gid 500+

每一个用户都一个和用户名同名的组。

每个用户用户组(-g)只能有一个,附加组(-G)可以有多个。

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理,linux中的用户默认所属的用户组和用户名相同,用户组在新建用户时同时创建。

用户组的管理实际就是对文件/etc/group的更新操作。

1. 新建用户组

命令:groupadd

格式:groupadd <选项> 用户组

参数:

  -g  指定用户组的标识GID。

  -o  表示新用户组的GID可以与已有的用户组的GID相同。

举例:

 [root@localhost ~]# groupadd group1  #默认GID为在已有最大GID基础上加1。

[root@localhost ~]# groupadd -g 2000 group2   #新建组时指定GID

           可以在文件/etc/group 中查看具体的组信息,包含GID:

                  

2. 修改用户组

命令:groupmod

格式:groupmod <选项> 用户组

参数:

  -g  指定信息的GID

  -o  指定的新的GID可以与已有的GID相同

  -n  修改用户组的名字

举例:

[root@localhost ~]# groupmod -g 3000 group2  #修改组group2 GID为3000

[root@localhost ~]# tail -1 /etc/group     #查看group2 GID是否已修改

group2:x:3000:

[root@localhost ~]# groupmod -g 2000 -n group3 group2  #修改group2组ID为2000并将组名改为group3

[root@localhost ~]# tail -1 /etc/group  #查看是否已经修改

group3:x:2000:

3. 删除用户组

命令:groupdel

格式:groupdel 用户组

举例:

 [root@localhost ~]# groupdel group3   #删除group3

[root@localhost ~]# tail -1 /etc/group  #查看是否已经删除

group1:x:1006:

4. 切换用户组

一个用户如果属于多个用户组或者附加组,可以在多个组之间进行切换。

命令:newgrp

格式:newgrp 用户组

举例:

[root@localhost ~]# useradd user6

[root@localhost ~]# id user6

uid=1005(user6) gid=1007(user6) groups=1007(user6)

[root@localhost ~]# groupadd group3

[root@localhost ~]# usermod -G group3 user6  #为user6添加附加组group3

[root@localhost ~]# id user6

uid=1005(user6) gid=1007(user6) groups=1007(user6),1008(group3)

[root@localhost ~]# passwd user6

Changing password for user user6.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

[root@localhost ~]# su - user6

[user6@localhost ~]$ touch file1

[user6@localhost ~]$ ll file1

-rw-rw-r--. 1 user6 user6 0 Apr  8 22:43 file1

[user6@localhost ~]$ newgrp group3

[user6@localhost ~]$ touch file2

[user6@localhost ~]$ ll

total 0

-rw-rw-r--. 1 user6 user6  0 Apr  8 22:43 file1

-rw-r--r--. 1 user6 group3 0 Apr  8 22:44 file2

四、账号相关配置文件

1. 用户

用户账号信息主要涉及两个配置文件:

/etc/passwd  账号信息

/etc/shadow  密码信息

passwd 文件 解析:

passwd 文件信息格式和对应的含义:

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

  用户名:密码占位符:UID:GID:用户描述信息:用户家目录:用户默认shell

密码占位符不是密码,真正的密码信息存储在shadow文件中,密码占位符删掉后登录时不需要密码。

  上面截图中root的默认shell是/bin/bash。但shell 分为很多种,常见的有:

/bin/sh、/bin/bash、/sbin/csh等,每种shell都有自己特有的优势。 可以通过命令查看当前的机器支持的shell种类:

[root@localhost ~]# cat /etc/shells

/bin/sh

/bin/bash

/sbin/nologin

/usr/bin/sh

/usr/bin/bash

/usr/sbin/nologin

/bin/tcsh

/bin/csh

shadow文件解析:

shadow 文件格式和对应的含义:

root:$1$NTB91BaJ$Cj1I4RmREQqu7s5BlPQhr/:17630:0:99999:7:::

用户名:加密后的密码:更改密码的日期:密码最小寿命:密码最大寿命:密码过期前几天提醒:密码不可用期限:账号过期时间:保留位

参数解释:

  加密后的密码: 对应passwd文件中的x位,加密算法如sha512等。

  更改密码的日期:单位为天,即距离1970-01-01的天数。

  密码最小寿命:即如需要更改密码最少需要多少天后才可修改。

  密码最大寿命:到达这个日期后提醒用户更新密码(此时密码还是可用的)。

  密码过期前几天提醒:过期前预留的提醒天数。

  密码不可用期限:密码到期后会提醒,但是还可以使用,但是过了这个时间后密码不可用。

  账号过期时间:密码过期后账号实际可用的剩余时间。

2. 用户组

用户组信息主要配置文件也是两个:

/etc/group  账号信息

/etc/gshadow  密码信息

group 文件解析:

         

           root:x:0:

           组名:组密码占位符:GID:组员

gshadow文件解析:

 root:$1$NTB91BaJ$Cj1I4RmREQqu7s5BlPQhr/:17630:0:99999:7:::

 用户组的gshadow文件格式类似用户的shadow文件,具体组成可以参考shadow文件的解析。

五、拓展

  1. 查找linux shadow文件破解工具,为用户设置简单的密码,尝试使用工具破解。

     提示:破解工具一般和具体的Linux版本相关。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值