关于Linux账号管理详解

本文针对Linux系统单个用户管理操作以及群组的管理操作做了详细的分析以及需要注意的地方,一起学习下。

一、用户管理

1. 用户账号管理文件

要对Linux中的用户账号进行管理,首先当然应该了解用户账号在Linux系统中是怎么保存的,这涉及到两个文件——/etc/passwd与/etc/shadow,前者保存用户的UID和GID等基本信息,后者则主要保存与账号密码相关的一些信息。

先来看看/etc/passwd这个文件存的是啥(这里只取前三行):

在此文件中,每个用户账号信息存为一行,每一行有7个栏位,从左到右存放的信息分别为:

(1)账号名称。

(2)密码:早期Unix系统的密码是放在这里的,但由于/etc/passwd这个文件能被很多程序读取,不安全,后来密码资料已经放到文件/etc/shadow中,所以这里第二个栏位都是“x”。

(3)UID:0代表账号为系统管理员,1-999代表系统账号,1000-6000则是一般使用者。

(4)GID:用户初始群组的GID。

(5)用户名全称或账号意义说明。

(6)家目录:默认为/home/账号名称。

(7)Shell:该账号登入系统之后取得的shell。

再来看看/etc/shadow这个文件存的又是啥(这里只取前三行):

同样的,在这个文件中也是每个账号存为一行,共有9个栏位,从左到右存放的信息分别为:

(1)账号名称。

(2)密码:加密之后的密码。若以“!”开头则表示密码失效,账号封锁,暂时无法登录。

(3)最近修改密码的日期:这个栏位上的数字表示的是最近修改密码的日期是在1970年1月1日的多少天之后。

(4)密码不可修改的天数:表示上一次修改密码之后,几天之后才能再次修改密码。

(5)密码需要再次修改的天数(密码过期日):表示上一次修改密码之后,几天之内需要再次修改密码。

(6)在密码过期日前几天开始发出警告。

(7)密码过期之后的账号宽限天数(密码失效日):密码过期后几天之内账号密码还是可以使用,但是登入系统之后,系统会强制让用户修改密码。若这几天还是没修改密码,则过了这个时间密码就失效了,无法再使用该账号密码登入系统。

(8)账号失效日期:1970年1月1日的多少天之后账号失效,无论密码是否过期,账号都无法再使用。

(9)暂时没存信息,保留给新功能使用。

2. 用户账号管理操作

了解了Linux账号和密码在系统中的保存方式之后,我们还需要知道怎么去添加账号、修改账号信息,以及如何修改密码等用户管理操作,以下便一一作出说明。

(1)用户账号添加:

useradd [-u UID] [-g 初始群組] [-G 次要群組] [-m/M] [-c 账号意义说明] [-d 家目绝对路径] [-s shell] [-r] [-e 账号失效日期,格式为YYYY-MM-DD] [-f 密码是否会失效,0立刻失效,-1永不失效] 账号名称

这里列出useradd命令常用的一些选项,可根据需要添加,其中-M表示强制不建立家目录,-m表示强制建立家目录,-r表示创建系统账号,更多选项需要自己使用man命令在系统中查看了。不过一般来说,我们创建用户账号的时候只要指定账号名称即可:useradd账号名称,这样账号的其他信息都会使用系统为我们设置的默认值。在CentOS中,系统默认会帮我们做的事情如下:

<1>在/etc/passwd建立一行与账号相关的资料。

<2>在/etc/shadow建立一行与此账号密码相关的数据,但是尚未有密码。

<3>在/etc/group建立一行此账号的初始群组信息,群组名称与账号名称一致。

<4>在/etc/gshadow建立一行此账号初始群组的密码信息,但是没有密码。

<4>在/home中建立此账号家目录,目录名称与账号名称一致,权限为700。

那么useradd命令的这些默认值是在哪里存放的呢?首先可以使用useradd -D查看部分默认值(这里注解了各个参数的意义说明):

(最后一个参数为:是否建立邮件信箱)

这些参数实际上就保存在文件/etc/default/useradd中!

关于初始群组,有两种机制:公共群组机制和私有群组机制。公共群组机制会使用这里的“GROUP=100”这个参数值作为新建账号的初始群组,每个账号都将属于users这个群组,账号之间可以分享家目录中的资料,SuSE使用的就是这种机制。私有群组机制则不使用这个参数,每个账号都有各自的群组和家目录,而且只有自己可以进入自己的家目录,使用这个机制的有RHEL,Fedora,CentOS等。

“SKEL=/etc/skel”指定了创建账号家目录的内容参考目录,即新建账号的家目录中的内容是从/etc/skel这个目录中直接拷贝过去的!“CREATE_MAIL_SPOOL=yes”指定了系统会自动帮新建账号建立邮件信箱,即会创建“/var/spool/mail/账号名称”这个文件。

然而/etc/default/useradd这个文件只是设置了一些账号的基本信息默认值,更多参数默认值可在/etc/login.defs文件中查看,里面设置了用户UID、GID等更多参数默认值与规范。

所以,总结起来,使用useradd命令创建账号时会参考的文件有:/etc/default/useradd、/etc/login.defs、/etc/skel/*。

(2)用户账号修改:

修改用户账号可使用usermod命令,该命令的选项参数大都与useradd类似,这里不再赘述,只是有个特别的功能需要说明一下,那就是usermod可以使用-L和-U这两个选项参数分别对账号进行冻结和解冻,冻结其实就是在/etc/shadow第二栏的密码前面添加“!”,使得账号密码无法正常登录,解冻则将其去除,恢复账号登录。

(3)用户账号删除:

用户账号删除使用命令:userdel 用户账号,若加上-r选项则会连同使用者的家目录也一起删除。注意,userdel命令会将与指定账号相关的东西统统删除!

(4)账号密码修改:

使用useradd创建账号之后,新建账号还是无法登入系统的,还需要使用passwd命令设置密码才行:

除了修改密码,passwd命令还有以下用途:

<1>修改密码属性:passwd [-n 密码不可修改的天数] [-x 密码需要再次修改的天数] [-w 在密码过期日前几天开始发出警告] [-i 密码过期之后的账号失效宽限天数] 账号名称

<2>冻结密码:passwd -l 账号名称,修改/etc/passwd,在密码前加“!!”。(类似usermod -L)

<3>解冻密码:passwd -u 账号名称。(类似usermod -U)

<4>查看密码信息:passwd -S 账号名称。

除了passwd,还有一个命令可用于修改账号密码的信息,那就是chage:

chage [-d 最近修改密码日期,格式为YYYY-MM-DD] [-m 密码不可修改的天数] [-M 密码需要再次修改的天数] [-W 在密码过期日前几天开始发出警告] [-I 密码过期之后的账号失效宽限天数] [-E 账号失效日期,格式为YYYY-MM-DD]

此外,chage也可以用于查看账号密码信息,信息展示的格式比passwd -S指令更容易查看:

还可以通过“chage -d 0 账号名称”强制要求用户在下一次登入系统时修改密码!

3. 使用者功能

以上介绍的账号管理操作,除了使用passwd修改自己密码和部分信息查看操作,其他的都是只有系统管理员才能执行的,下面介绍一下一般用户能查看与修改信息的命令操作。

<1>id 账号名称:查看用户UID和GID。

<2>finger:查询当前登入系统的所有用户信息。

finger 账号名称:查询某个账号相关属性。

<3>chfn:修改finger中展示的一些信息。

可以看到,实际上修改的信息都保存在/etc/passwd文件的第五栏中。(修改自己信息直接执行“chfn”即可)

<4>chsh -l:查看当前系统上所有可用的shell,即是/etc/shells中的内容。

chsh -s:修改自己的shell。

二、群组管理

1. 群组管理文件

与用户管理类似,想要了解群组管理,亦需要先来看看群组信息在Linux系统中是怎么保存的,群组信息涉及两个文件——/etc/group和/etc/gshadow,前者保存群组基本信息,后者保存群组密码信息。

先来看看/etc/group文件:

在此文件中,每个群组信息存为一行,每行4个栏位,从左到右存放信息分别为:

(1)群组名称。

(2)群组密码:已转移到/etc/gshadow中存储,所以这里存“x”。

(3)GID。

(4)此群组中的所有用户账号成员列表。

再来看看/etc/gshadow文件:

在此文件中,每个群组信息存为一行,每行4个栏位,从左到右存放信息分别为:

(1)群组名称。

(2)群组密码:通常是给群组管理员使用的,少有设置。

(3)群组管理员的账号。

(4)此群组中的所有用户账号成员列表。

2. 群组管理操作

(1)群组添加:

groupadd [-g gid] 群组名称

(若是创建系统群组需加上-r选项)

(2)群组修改:

groupmod [-g gid] [-n 群组新名称] 群组名称

(注意,不要随意改动GID,很容易造成系统资源的错乱)

(3)群组删除:

groupdel 群组名称

(若群组是某个用户账号的初始群组则会报错,无法删除)

(4)初始群组与有效群组:

用户的初始群组是用户登入系统之后就获取到并拥有其相关权限的群组,也就是/etc/passwd文件第四个栏位上的GID对应的群组。用户在系统中可加入多个群组,而且可以使用所属所有群组的权限与功能,但是创建文件或者目录的时候,新建文件或目录的群组则只能是当前用户当前的有效群组。

可以使用命令“groups”查看当前用户加入的所有群组,列表中第一个群组即是当前有效群组,可以使用命令“newgrp 群组名称”切换有效群组,但是只能在当前用户加入的所有群组中切换。切换有效群组之后会进入一个新的shell环境,可以使用“exit”命令来退出,回到原来有效群组和shell环境。

(5)用户加入群组:

用户想要加入某个群组有两种方法,第一种方法是让系统管理员root使用usermod命令进行操作(-a选项组合-G选项):

(将用户jet加入群组jet2)

第二种方法则是让对应群组的管理员使用gpasswd命令进行操作。

首先需要系统管理员root指定这个群组的管理员,也是使用gpasswd命令操作。先来看看root操作:

<1>修改群组密码:gpasswd 群组名称

<2>设置群组管理员、用户成员:gpasswd [-A 群组管理员账号列表] [-M 用户成员账号列表] 群组名称

<3>移除群组密码:gpasswd -r 群组名称

<4>使群组密码失效:gpasswd -R 群组名称

然后由群组管理员对群组用户成员进行管理:

三、使用者身份切换

1. su:

用户登入Linux系统之后可以通过su命令切换到不同账号,通过exit命令退出,恢复到原来账号。

(1)su 账号名称:以non-login shell方式切换身份,很多环境变量包括PATH都还是目前用户的。

(2)su -/-l 账号名称:以login shell方式切换身份,所有环境变量都变成新账号的。

(3)su - -c "指令" 账号名称:利用新身份执行一条指令,执行后身份恢复为当前用户。

(若不加上账号名称则表示切换到root身份)

2. sudo:

使用su命令切换身份是需要输入新切换账号的密码的(只有root不需要),也就是说,若要使用su切换身份,就必须要知道新切换账号的密码才行。另一个命令sudo也可以切换身份执行命令操作,而且只需要输入当前账号密码即可,无需知道新切换账号的密码,只是切换身份执行命令之后会自动恢复到原来账号身份。指令格式如下:

sudo -u 账号名称 指令

(若是没有指定账号名称则默认是使用root身份执行指令)

然而并不是所有的用户账号都能使用sudo命令并能随意切换任何账号的,需要在/etc/sudoers文件中配置相关信息才可以。此文件有规定语法,需要使用visudo指令来进行编辑。通过/etc/sudoers文件可设置哪些用户或群组可在哪些主机登入系统时切换到哪些账号执行哪些指令,还可以设置执行sudo指令时无需输入密码。该文件部分内容截图如下:

如果我们上述给大家讲解的你还没有理解透,大家可以在下面的相关文章获取更多相关的文章。

(0)

相关推荐

  • 关于Linux账号管理详解

    本文针对Linux系统单个用户管理操作以及群组的管理操作做了详细的分析以及需要注意的地方,一起学习下. 一.用户管理 1. 用户账号管理文件 要对Linux中的用户账号进行管理,首先当然应该了解用户账号在Linux系统中是怎么保存的,这涉及到两个文件--/etc/passwd与/etc/shadow,前者保存用户的UID和GID等基本信息,后者则主要保存与账号密码相关的一些信息. 先来看看/etc/passwd这个文件存的是啥(这里只取前三行): 在此文件中,每个用户账号信息存为一行,每一行有7

  • linux系统之进程管理详解

    目录 1.进程与线程的概念 2.什么是进程管理 3.进程管理的作用 4.Linux进程的几种状态 5.进程与线程的关系 (1)线程与进程的关系 (2)总结 1.进程与线程的概念 来源百度百科: 进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 在当代面向线程设计的计算机结构中,进程是线程的容器.程序是指令.数据及其组织形式的描述,进程是程序的实体.是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和

  • linux lsof命令详解及实例

    linux lsof命令详解 简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口.因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过

  • Linux文件服务器实战详解(匿名用户)

    一.进程与线程 二.vsftp服务器 1.文件传输协议(file transfer protocol,FTP) 基于该协议ftp客户端和服务端实现文件共享,上传下载文件 FTP基于TCP协议生成一个虚拟的连接,用于控制ftp连接信息.同时再生成一个TCP连接用于FTP数据传输    2.ftp传输模式 3.FTP安装配置 a.yum方式安装 b.源码便宜安装 1)yum install -y vsftpd* 2)vsftpd安装后的配置文件路径,启动vsftpd服务以及查看进程是否启动 rpm

  • Linux文件服务器实战详解(虚拟用户)

    vsftpd基于系统用户访问ftp服务器,系统用户越多越不利于管理,不利于系统安全,这样就以vsftp虚拟防护的方式来解决. 虚拟用户没有实际的真实系统用户,,而是通过映射到其中一个真实用户以及设置相应权限来访问验证,虚拟用户不能登陆系统. 1.安装虚拟用户需要用到的软件以及认证模块 [root@www ~]# yum install pam* libd-utils libdb* --skip -broken -y 2.创建虚拟用户临时文件 /etc/vsftpd/ftpusers.txt xj

  • QT布局管理详解QVBoxLayout与QHBoxLayout及QGridLayout的使用

    目录 main.cpp mainwindow.h mainwindow.cpp ui界面设计 登录界面为例 总结 main.cpp #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; return a.exec(); } mainwindow.h #ifndef MAINWIND

  • Linux top命令详解

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 top参数详解 第一行,任务队列信息,同 uptime 命令的执行结果 系统时间:07:27:05 运行时间:up 1:57 min, 当前登录用户: 3 user 负载均衡(uptime) load average: 0.00, 0.00, 0.00 average后面的三个数分别是1分钟.5分钟.15分钟的负载情况. load average数据是每隔5秒钟检查一次活跃的进

  • 基于使用paramiko执行远程linux主机命令(详解)

    paramiko是python的SSH库,可用来连接远程linux主机,然后执行linux命令或者通过SFTP传输文件. 关于使用paramiko执行远程主机命令可以找到很多参考资料了,本文在此基础上做一些封装,便于扩展与编写脚本. 下面直接给出代码: # coding: utf-8 import paramiko import re from time import sleep # 定义一个类,表示一台远端linux主机 class Linux(object): # 通过IP, 用户名,密码,

  • Linux正则表达式特性详解及BRE与ERE的异同点

    Linux正则表达式(Regular Expression)主要遵从POSIX BRE或者POSIX ERE标准.什么是POSIX呢,POSIX Portable Operating System Interface 可移植操作系统接口ERE是BRE的扩展版本,具体更强的处理能力,并增加了一些元字符(metacharactor). BRE主要的能力集有: 1) 普通字符(Literal text),如a,b,c等 2)非打印字符,包括TAB,回车,换行,回车换行(WINDOWS) 3)任意字符.

  • linux mkdir命令详解

    mkdir命令用来创建目录.该命令创建由dirname命名的目录.如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录:如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录.在创建目录时,应保证新建的目录与它所在目录下的文件没有重名. 注意:在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过它们来更有效地组织文件.最好采用前后一致的命名方式来区分文件和目录.例如,目录名可以以大写字母开头,这样,在目录列表中目录名就出现在前面. 在一个子目录

随机推荐