本节概述

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版本相关。

系列教程--Linux基础--12--用户和组相关推荐

  1. linux基础入门---用户和组管理命令

    计算机中用户的作用:主要实现资源分享,在分享资源同时涉及到资源安全,又新增用户密码认证,使其资源由特定权限的用户或用户组才可访问. linux系统中用户和组分类: 用户分为:管理员用户(root).普 ...

  2. linux基础:用户与组,权限管理

    linux中用户与权限管理 与Window的单用户系统不同,Linux操作系统在设计之初就遵循着多用户.多任务的理念.而在这种情况下,安全问题非常重要,不同用户,不同的用户组之间的隐私保护,安全管理就 ...

  3. usermode linux网络空间,(RHCE笔记)linux基础之三 用户、组及权限

    一.user 1.每个用户将指派唯一用户ID(UID) root的ID为0 普通用户ID从500开始(0-500系统使用) 2.用户名和用户ID存在 /etc/passwd中 3.当用户登陆时系统自动 ...

  4. linux 查看当前用户和组的信息,Linux查看所有用户和组信息

    主要通过以下两个命令: cat /etc/passwd cat /etc/group 步骤一:cat /etc/passwd查看所有的用户信息,详情如下图: 步骤2:cat /etc/passwd|g ...

  5. linux基础试卷笔试,顽石系列:Linux基础笔试

    顽石系列:Linux基础笔试 系统操作 压缩文件 扩展名压缩程序 *.Z compress *.zip zip *.gz gzip *.bz2 bzip2 *.xz xz *.tar tar 程序打包 ...

  6. Linux——万字总结用户与组相关知识!建议收藏!

    目录 用户和组 用户账户 用户的家目录 组账号 创建用户背后发生了什么? ​ 小练习:# 截取第七字段并查找出几种 useradd命令 userdel -r 用户名 -->家目录和本地邮件目录全 ...

  7. 汇编语言系列教程之基础入门 (一)

    汇编语言系列教程之基础入门 (一) http://www.cnblogs.com/flyor/p/7208948.html 机器字长 机器字长是指CPU一次运算所能处理的数据的位数,一般来说这个数的和 ...

  8. python独立网站教程_python从零到独立建设网站系列教程之基础知识篇(二)

    python从零到独立建设网站系列教程之基础知识篇(二)python的安装在Windows上安装python点击Download链接 然后就是按导航走点击确认,需要注意的是要把python加入到系统变 ...

  9. linux下创建用户及组

    linux下创建用户及组: 1.创建组 groupadd  组名 2.创建用户,并将用户添加到组 useradd  用户名  -g  组名 3.更改用户的密码 password  用户名 4.修改目录 ...

最新文章

  1. 深度优先(DFS)和广度优先(BFS)
  2. BZOJ4280 : [ONTAK2015]Stumilowy sad
  3. .net erp(办公oa)开发平台架构概要说明之表单设计器
  4. 12 | 套路篇:CPU 性能优化的几个思路
  5. 面试常考题---交换变量
  6. 分布式架构高可用与高并发那些在工作中常用到的那些变态应用
  7. ASM:《X86汇编语言-从实模式到保护模式》第8章:实模式下硬盘的访问,程序重定位和加载...
  8. 【预测模型】基于蝙蝠算法改进SVM实现预测matlab源码
  9. isupper函数用法
  10. 网络正常但Chrome不能上网的解决方法
  11. 如何卸载Windows预安装内置应用
  12. 信号与系统18(拉普拉斯变换性质)
  13. 官网下载Eclipse(包含历史版本及该版本的子版本)
  14. 操作系统-软件架构设计
  15. VirtualBox 解决不能为虚拟电脑打开一个新任务问题
  16. 分析用VBScript编写的网页***
  17. 软件定义网络SDN(计算机网络-网络层)
  18. C++ Primer 5th 中文版 源码_无需金币(百度网盘)
  19. 2022年全球市场艰难梭菌的分子诊断总体规模、主要生产商、主要地区、产品和应用细分研究报告
  20. 面向应用CMDB,来自优维科技与国信证券的实践

热门文章

  1. Solved: ERROR: Failed building wheel for hdbscan
  2. 用unity实现大转盘
  3. Android最新最全100余款开源App(对应Github开源项目)
  4. 购买服务器的个人经验
  5. 美团大众点评往届笔试面试题汇总
  6. 【读书笔记】《杜月笙全传》读书笔记
  7. spring data JPA常用注解
  8. 实战 .Net 数据访问层 - 19
  9. 掌握“盘带技术”——比较磁盘存储和磁带存储
  10. 算法租用游艇问题c语言,动态规划租用游艇问题