在Linux中,每个文件都分3类权限:账户本身的权限,账户所在群组的权限和其它权限。账户和群组是多对多的关系,即一个账户可以属于多个群组,一个群组可以包含多个账户。但是,对于每一个已登录的账户,只能存在一个当前生效的群组(初始群组)。

账户管理相关配置文件如下:账户信息文件是/etc/passwd、账户密码文件是/etc/shadow、群组信息文件是/etc/group、群组密码文件是/etc/gshadow。

1、/etc/passwd文件怎么看

如上图,/etc/passwd文件中每一行为一个账户,以冒号作为分割的每个字段意思按序号分别如下:

[1] 账户名。改名使用命令usermod -l

[2] 密码,该字段已启用。账户密码在/etc/shadow文件配置

[3] UID,账户的唯一标识。影响该字段值的命令包括:useradd -u、usermod -u

[4] GID,初始群组的唯一标识,关联/etc/group文件的第3个字段。该群组为账户默认的有效群组(有效群组可以使用newgrp命令进行切换)。影响该字段值的命令包括:useradd -g、usermod -g

[5] 描述。影响该字段值的命令包括:useradd -c、usermod -c

[6] 家目录绝对路径。影响该字段值的命令包括:useradd -d、usermod -d

[7] shell,账户默认启用的shell,当为/sbin/nologin时账户无法登录。账户能使用的shell可以用命令chsh -l查询(查询结果为/etc/shells文件的内容)。影响该字段值的命令包括:useradd -s、usermod -s

2、/etc/shadow文件怎么看

如上图,文件/etc/shadow的每一行对应一个账户的密码信息,以冒号作为分割的每个字段意思按序号分别如下:

[1] 账户名,关联/etc/passwd文件的第1个字段

[2] 密码,加密后的密文,加密算法由/etc/login.defs文件中的ENCRYPT_METHOD指定,此处为SHA512。影响该字段值的命令包 括:usermod -L(前置!!冻结)、usermod -U(解冻)、passwd -l(冻结)、passwd -u(解冻)、

[3] 创建日期,上图显示的是一个数字,该数字表示自1970-01-01以来所经历的天数。影响该字段值的命令包括:chage -d

[4] 密码创建之后需经历多少天才能再次修改,0表示无此限制。影响该字段值的命令包括:passwd -n、chage -m

[5] 密码创建多少天之后就过期,99999天约等于99999/365年,好几百年意味着密码不会过期。影响该字段值的命令包括:passwd -x、chage -M

[6] 密码过期前多少天开始向用户发送警告信息。影响该字段值的命令包括:passwd -w、chage -W

[7] 密码过期后还能宽限多少天,在此时间段内用户还可以登录和修改密码,过了这个时间段用户就不能够登录了。影响该字段值的命令包括:useradd -f、usermod -f、passwd -i、chage -I

[8] 失效日期,一个数字,该数字表示自1970-01-01以来所经历的天数。过了这一天用户的密码就失效,无论是否过期均不可再登录。影响该字段值的命令包括:useradd -e、usermod -e、chage -E

[9] 保留

3、/etc/group文件怎么看

如上图,文件/etc/group的每一行对应一个群组,以冒号作为分割的每个字段意思按序号分别如下:

[1] 群组名。改名使用命令:groupmod -n

[2] 密码,已启用,群组密码在/etc/gshadow文件中配置

[3] GID,群组唯一标识,由/etc/passwd文件中的第4个字段关联,作为对应账户的初始群组。影响该字段值的命令包括:groupadd -g、groupmod -g

[4] 帐号名列表,以逗号隔开。这些帐号可以主动切换为该群组的成员,如上图用户mophee(初始群组为mophee)可使用newgrp命令将其生效群组切换为mysql或mail。影响该字段值的命令包括:useradd -G、usermod -[a]G

4、/etc/gshadow文件怎么看

如上图,文件/etc/gshadow中的每一行对应一个群组的密码信息,以冒号作为分割后的每个字段意思按序号分别如下:

[1] 群组名,与/etc/group中的群组名对应

[2] 密码,加密后的密文,使用命令gpasswd group_name可设置群组密码,使用gpasswd -r group_name删除密码

[3] 群组管理员,使用命令gpasswd -A user1,... group_name 可设置群组的管理员。注:群组管理员可以为群组成员设置密码

[4] 群组成员,该字段与/etc/group的第4个字段相同且同步更改,除了使用useradd -G、usermod -G命令维护外,还可使用gpasswd -[adM]进行维护。影响该字段值的命令包括:useradd -G、usermod -[a]G

-----------------------------------------------

理论上,修改以上4个配置文件就可以进行账户管理,但不建议这样进行账户管理。Linux提供足够的命令对账户进行管理,虽然这些命令实质上也是修改这4个文件的内容,但建议使用这些命令:

useradd:添加账户

useradd mophee #建立群组mophee,建立账户mophee,建立家目录/home/mophee且权限为700。无密码,无法登录。
useradd -u 519 -g users mophee2 #建立账目mophee2并指定UID为519,指定初始群组为users
useradd -r mophee3 #建立系统帐号mophee3,UID和GID范围:100~499,无家目录

usermod:修改账户

userdel:删除账户

userdel mophee #删除账户mophee:
#1、从/etc/passwd和/etc/shadow删除;
#2、从/etc/group和/etc/gshadow的最后一个字段除移;
#3、若其初始群组无其它成员账户,则删除群组
userdel -r mophee #除了删除账户外,还删除其家目录和邮件目录

passwd:账户密码管理

passwd -S mophee #列出帐号mophee相关的密码信息

chage:修改账户密码,一般用户可用此命令修改自己的密码

chage -l mophee #列出帐号mophee相关的密码信息

groupadd:添加群组

groupmod:修改群组

groupdel:删除群组

gpasswd:群组密码、群组管理员和成员管理

groups:查看所属群组

groups mophee #列出帐号mophee所属的群组

newgrp:切换有效群组

----------------------------------------------

与账户管理有关的其它配置文件:/etc/login.defs、/etc/default/useradd(使用命令useradd时的一些默认值)。

1、文件/etc/default/useradd怎么看

GROUP:预设的群组ID

HOME:家目录的基准目录,添加账户且创建其家目录等同于在该基准目录下新建一个与账户名同名的目录,影响/etc/passwd的第6个字段

INACTIVE:设置密码过期后是否失效,-1表示不会失效,影响/etc/shadow的第7个字段

EXPIRE:密码失效日期,影响/etc/shadow的第8个字段

SHELL:默认的shell,影响/etc/passwd的第7个字段

SKEL:创建家目录是参考的初始内容,即创建家目录时会将该目录下的内容复制一份到家目录中

CREATE_MAIL_SPOOL:是否创建对应的mailbox目录,yes/no,yes时会在/var/spool/mail/目录下创建与帐号名同名的目录用于存储该账户的邮件

2、文件/etc/login.defs怎么看

MAIL_DIR:邮件目录的基准目录,一般为/var/spool/mail

PASS_MAX_DAYS:自密码创建之日起到过期的天数,影响/etc/shadow的第5个字段

PASS_MIN_DAYS:密码创建之后不允许更改的天数,影响/etc/shadow的第4个字段

PASS_MIN_LEN:设置密码允许的最短长度,已启用,由pam模块取代该功能

PASS_WARN_AGE:密码过期之前开始发送警告信息的天数,影响/etc/shadow的第6个字段

UID_MIN:小于该数字值的UID均为系统帐号,默认设为500。使用useradd且未添加-r选项时添加的账户UID均大于此值

UID_MAX:系统支持最大的UID值

GID_MIN:与UID_MIN功能类似,影响的是GID

GID_MAX:与UID_MAX功能类似,影响的是GID

CREATE_HOME:默认是否创建家目录,yes/no

UMASK:家目录默认权限的反码,即该值为077时,家目录的权限为700

USERGROUPS_ENAB:设置在使用userdel命令删除账户时,如果其初始群组下没有其它成员账户,是否将群组也删除。yes/no

ENCRYPT_METHOD:加密算法,如SHA512

CentOS下的账户管理的更多相关文章

  1. 【转】【Centos】Centos下用upstart管理自己的服务程序

    Upstart是Ubuntu用来进行服务进程管理的服务,本文介绍如何利用upstart来通过Centos操作系统管理我们自己开发的应用程序. 什么时候要管理我们的应用程序?当我们开发出服务类的应用程序 ...

  2. Centos下使用containerd管理容器:5分钟从docker转型到containerd

    目录 一.系统环境 二.前言 三.containerd 四.部署containerd 4.1 安装containerd 4.2 containerd配置文件 4.3 配置containerd阿里云镜像 ...

  3. CentOS下开启mysql远程连接,远程管理数据库

    当服务器没有运行php.没装phpmyadmin的时候,远程管理mysql就显得有必要了.因为在CentOS下设置的,所以标题加上了CentOS,以下的命令在debian等系统下应该也OK. mysq ...

  4. (转)CentOS下开机启动查看管理命令:chkconfig用法

    CentOS下开机启动查看管理命令:chkconfig用法   CentOS下开机启动查看管理的命令是:chkconfig   1. 开机启动列表查看: chkconfig --list     说明 ...

  5. Linux学习历程——Centos 7 账户管理命令(用户篇)useradd usermod userdel

    一.命令介绍 useradd     用于创建新的用户 usermod    用于修改用户属性 userdel      用于删除用户 -------------------------------- ...

  6. centos下LVM配置与管理

    centos下LVM配置与管理 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层, ...

  7. Centos下磁盘管理的常用命令记录(如查找大文件)

    Centos下磁盘管理的常用命令记录 查看系统磁盘空间占用,使用命令: df -h 结果: 查看磁盘inode使用情况,如果inode用完了,磁盘就没法写入新的内容了: df -i 结果: 如何查找磁 ...

  8. pureftp在centos下与MySQL搭配使用

    概述 pure-ftpd是linux下的一个ftp服务端,据说安全性较高.我在centos6下用yum安装pure-ftpd,并配置了通过MySQL进行用户的增删改查,以及对应到apache的web目 ...

  9. centos下安装wireshark 抓包

    centos下安装wireshark相当简单.两条命令就够了.这里.主要是记录写使用方面的东西 安装:1.yum install wireshark.注意这样并无法使用wireshark命令和图形界面 ...

随机推荐

  1. C++中常见的几种异常类型

    1.C++具有完善的异常捕获机制,采用try{}  catch(){}机制,这是C语言无法比拟的 2.常见的几种异常: bad_alloc:       请求分配内存失败, operator new ...

  2. java无符号移位(>>>)和有符号移位(>>)

    java中>>(<<)表示有符号的移位.<<<(>>>)表示无符号移位 如: int num = 22; 二进制是0001 0110, nu ...

  3. Model-View-Controller - 杂谈

    经典的B/S结构+MVC模式:  注意:MVC层次均位于server中. 下面通过一个简单并且具体的例子来体会下这种MVC模式: --- 功能:查询所有图书:涉及到数据库,JSP,Servlet等 S ...

  4. String str=new String("a")和String str = "a"有什么区别?

    问:String str=new String("a")和String str = "a"有什么区别? 答:String str = "a" ...

  5. [解决方案] 当 IDENTITY_INSERT 设置为 OFF 时

    当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'tbUser' 中的标识列插入显式值. 解决:这个情况是你的表里面,有一列数据类型是IDENTITY的,也就是数据库自动递增列对于自 ...

  6. 【转载】CreateProcess的用法

    第一.第二个参数的用法: 例子: 使用ie打开指定的网页. 注意第二个参数是 可执行文件+命令行参数 #include "stdafx.h" #include <window ...

  7. nodeJs 初探 ~

    今天晚上,开始时间了一下nodejs,跟着 Node入门 一步步的往下走.对node开发也有了初步的了解. 期间没有碰到什么问题,只有在最后的时候,碰到了几个问题.在这里记录一下: 1 . cross ...

  8. Matlab命令系列之目录操作

    Matlab命令系列之目录操作 filesep 用于返回当前平台的目录分隔符,Windows是反斜杠(),Linux是斜杠(/).有时此命令结合ispc命令使用,可以灵活的设置目录分割符. fullf ...

  9. ASP.NET为图片加上水印

    为我们发布的图片加上一个水印,也是我们经常要做的事情,那怎么样来做呢,下面就一步步开始吧 首先是一个制作水印的类:ImageHandler,代码如下: using System; using Syst ...

  10. ubuntu学习之一

    1终端 在右键后菜单中找到 终端,(如果没有终端,使用 Ctrl+Alt+[F1~F6] ,您可以切换到1~6号控制台,输入: sudo apt-get install nautilus-open-t ...