13.2 【Linux】帐号管理

简介: 13.2 【Linux】帐号管理

13.2.1 新增与移除使用者: useradd, 相关配置文件, passwd,usermod, userdel

我们登陆系统时会输入(1)帐号与 (2)密码, 所以创建一个可用的帐号同样的也需要这两个数据。那帐号可以使用 useradd 来新建使用者,密码的给予则使用 passwd 这个指令!这两个指令下达方法如下:


useradd


其实系统已经帮我们规定好非常多的默认值了,所以我们可以简单的使用“ useradd 帐号 ”来创建使用者即可。 CentOS 这些默认值主要会帮我们处理几个项目:


在 /etc/passwd 里面创建一行与帐号相关的数据,包括创建 UID/GID/主文件夹等;


在 /etc/shadow 里面将此帐号的密码相关参数填入,但是尚未有密码;


在 /etc/group 里面加入一个与帐号名称一模一样的群组名称;


在 /home 下面创建一个与帐号同名的目录作为使用者主文件夹,且权限为 700


由于在 /etc/shadow 内仅会有密码参数而不会有加密过的密码数据,因此我们在创建使用者帐号时, 还需要使用“ passwd 帐号 ”来给予密码才算是完成了使用者创建的流程。如果由于特殊需求而需要改变使用者相关参数时, 就得要通过上述表格中的选项来进行创建了,参考下面的案例:



在这个范例中,我们创建的是指定一个已经存在的群组作为使用者的初始群组,因为群组已经存在, 所以在 /etc/group 里面就不会主动的创建与帐号同名的群组了! 此外,我们也指定了特殊的 UID 来作为使用者的专属 UID 。了解了一般帐号后,我们来瞧瞧那啥是系统帐号(system account)



我们在谈到 UID 的时候曾经说过一般帐号应该是 1000 号以后,那使用者自己创建的系统帐号则一般是小于 1000 号以下的。 所以在这里我们加上 -r 这个选项以后,系统就会主动将帐号与帐号同名群组的 UID/GID 都指定小于 1000 以下, 在本案例中则是使用 699(UID) 与699(GID)。此外,由于系统帐号主要是用来进行运行系统所需服务的权限设置, 所以系统帐号默认都不会主动创建主文件夹的。


由这几个范例我们也会知道,使用 useradd 创建使用者帐号时,其实会更改不少地方,至少我们就知道下面几个文件:


使用者帐号与密码参数方面的文件:/etc/passwd, /etc/shadow


使用者群组相关方面的文件:/etc/group, /etc/gshadow


使用者的主文件夹:/home/帐号名称


useradd 参考档


其实 useradd 的默认值可以使用下面的方法调用出来:



GROUP=100:新建帐号的初始群组使用 GID 为 100 者


系统上面 GID 为 100 者即是 users 这个群组,此设置项目指的就是让新设使用者帐号的初始群组为 users 这一个的意思。 但是我们知道 CentOS 上面并不是这样的,在 CentOS 上面默认的群组为与帐号名相同的群组。 举例来说, vbird1 的初始群组为 vbird1 。怎么会这样啊?这是因为针对群组的角度有两种不同的机制所致, 这两种机制分别是:


私有群组机制:


系统会创建一个与帐号一样的群组给使用者作为初始群组。 这种群组的设置机制会比较有保密性,这是因为使用者都有自己的群组,而且主文件夹权限将会设置为 700 (仅有自己可进入自己的主文件夹) 之故。使用这种机制将不会参考 GROUP=100 这个设置值。代表性的distributions 有 RHEL, Fedora, CentOS 等;


公共群组机制:


就是以 GROUP=100 这个设置值作为新建帐号的初始群组,因此每个帐号都属于 users 这个群组, 且默认主文件夹通常的权限会是“ drwxr-xr-x ... username users ... ”,由于每个帐号都属于 users 群组,因此大家都可以互相分享主文件夹内的数据之故。代表 distributions 如SuSE等。


由于我们的 CentOS 使用私有群组机制,因此这个设置项目是不会生效的。


HOME=/home:使用者主文件夹的基准目录(basedir)


使用者的主文件夹通常是与帐号同名的目录,这个目录将会摆放在此设置值的目录后。所以vbird1 的主文件夹就会在 /home/vbird1/ 了。


INACTIVE=-1:密码过期后是否会失效的设置值


第七个字段的设置值将会影响到密码过期后, 在多久时间内还可使用旧密码登陆。这个项目就是在指定该日数。如果是 0 代表密码过期立刻失效, 如果是 -1 则是代表密码永远不会失效,如果是数字,如 30 ,则代表过期 30 天后才失效。


EXPIRE=:帐号失效的日期


是 shadow 内的第八字段,你可以直接设置帐号在哪个日期后就直接失效,而不理会密码的问题。 通常不会设置此项目,但如果是付费的会员制系统,或许这个字段可以设置。


SHELL=/bin/bash:默认使用的 shell 程序文件名


系统默认的 shell 就写在这里。假如你的系统为 mail server ,你希望每个帐号都只能使用email 的收发信件功能, 而不许使用者登陆系统取得 shell ,那么可以将这里设置为/sbin/nologin ,如此一来,新建的使用者默认就无法登陆! 也免去后续使用 usermod 进行修改的手续。


SKEL=/etc/skel:使用者主文件夹参考基准目录


举我们的范例一为例, vbird1 主文件夹 /home/vbird1 内的各项数据,都是由 /etc/skel 所复制过去的。所以,未来如果我想要让新增使用者时,该使用者的环境变量 ~/.bashrc 就设置妥当的话,您可以到 /etc/skel/.bashrc去编辑一下,也可以创建 /etc/skel/www 这个目录,那么未来新增使用者后,在他的主文件夹下就会有 www 那个目录了。


CREATE_MAIL_SPOOL=yes:创建使用者的 mailbox


使用“ ll /var/spool/mail/vbird1 ”看一下,会发现有这个文件的存在。这就是使用者的邮件信箱。


除了这些基本的帐号设置值之外, UID/GID 还有密码参数又是在哪里参考的呢?那就得要看一下 /etc/login.defs 。 这个文件的内容有点像下面这样:



这个文件规范的数据则是如下所示:


mailbox 所在目录: 使用者的默认 mailbox 文件放置的目录在 /var/spool/mail,所以vbird1 的 mailbox 就是在 /var/spool/mail/vbird1。


shadow 密码第 4, 5, 6 字段内容: 通过 PASSMAX_DAYS 等等设置值来指定的。要注意的是,由于目前我们登陆时改用 PAM 模块来进行密码检验,所以那个 PASS_MIN_LEN是失效的。


UID/GID 指定数值: 虽然 Linux 核心支持的帐号可高达 232 这么多个,不过一部主机要作出这么多帐号在管理上也是很麻烦的! 所以在这里就针对 UID/GID 的范围进行规范就是了。上表中的 UID_MIN 指的就是可登陆系统的一般帐号的最小 UID ,至于 UID_MAX则是最大 UID 之意。


要注意的是,系统给予一个帐号 UID 时,他是 (1)先参考 UID_MIN 设置值取得最小数值; (2)由 /etc/passwd 搜寻最大的 UID 数值, 将 (1) 与 (2) 相比,找出最大的那个再加一就是新帐号的 UID 了。我们上面已经作出 UID 为 1500 的 vbird2 , 如果再使用“ useradd vbird4 ”时,你猜 vbird4 的 UID 会是多少?答案是: 1501 。 所以中间的1004~1499 的号码就空下来。


而如果我是想要创建系统用的帐号,所以使用 useradd -r sysaccount 这个 -r 的选项时,就会找“比 201 大但比 1000 小的最大的 UID ”就是了。


使用者主文件夹设置值: 为何我们系统默认会帮使用者创建主文件夹?就是这个“CREATE_HOME = yes”的设置值。这个设置值会让你在使用 useradd 时, 主动加入“ -m ”这个产生主文件夹的选项。如果不想要创建使用者主文件夹,就只能强制加上“-M ”的选项在 useradd 指令执行时。至于创建主文件夹的权限设置呢?就通过 umask这个设置值。因为是 077 的默认设置,因此使用者主文件夹默认权限才会是“ drwx------ ”


使用者删除与密码设置值: 使用“USERGROUPS_ENAB yes”这个设置值的功能是: 如果使用 userdel 去删除一个帐号时,且该帐号所属的初始群组已经没有人隶属于该群组了, 那么就删除掉该群组,举例来说,我们刚刚有创建 vbird4 这个帐号,他会主动创建vbird4 这个群组。 若 vbird4 这个群组并没有其他帐号将他加入支持的情况下,若使用userdel vbird4 时,该群组也会被删除的意思。 至于“ENCRYPT_METHOD SHA512”则表示使用 SHA512 来加密密码明文,而不使用旧式的 MD5。


使用 useradd 这支程序在创建 Linux 上的帐号时,至少会参考:


/etc/default/useradd


/etc/login.defs


/etc/skel/*


这些文件,不过,最重要的其实是创建 /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow还有使用者主文件夹。如果你了解整个系统运行的状态,也是可以手动直接修改这几个文件就是了。


相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
5月前
|
安全 Linux
Linux通配符及其在文件搜索和管理中的应用
Linux通配符及其在文件搜索和管理中的应用
|
6月前
|
Java Linux
Linux上管理不同版本的 JDK
Linux上管理不同版本的 JDK
304 0
|
5月前
|
Linux
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理
系统启动以后一直存在且常驻内存没有界面的进程就是服务。Linux系统中的所有服务都保存在下列目录中:/usr/lib/systemd/system,进入该目录就能看到所有的服务。
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理
|
5月前
|
Linux
Linux 中RPM软件包管理
Linux 中RPM软件包管理
|
6月前
|
消息中间件 存储 监控
实战Linux I/O多路复用:借助epoll,单线程高效管理10,000+并发连接
本文介绍了如何使用Linux的I/O多路复用技术`epoll`来高效管理超过10,000个并发连接。`epoll`允许单线程监控大量文件描述符,显著提高了资源利用率。文章详细阐述了`epoll`的几个关键接口,包括`epoll_create`、`epoll_ctl`和`epoll_wait`,以及它们在处理并发连接中的作用。此外,还探讨了`epoll`在高并发TCP服务场景的应用,展示了如何通过`epoll`和线程/协程池来构建服务框架。
727 10
|
5月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
196 1
|
6月前
|
Linux
【Linux 基础】文件与目录管理
文件和目录的基本概念以及常用命令
59 11
|
5月前
|
监控 安全 Unix
探索Linux命令repo-rss:管理仓库更新的新视角
`repo-rss`是一个设想中的Linux工具,用于通过RSS订阅跟踪软件仓库更新。它能订阅仓库、检测更新、生成RSS feed并发送通知。主要特点包括实时性、灵活性、自动化和可扩展性。用户可定制订阅、时间间隔及输出格式。示例用法包括订阅Debian仓库、将更新输出为RSS文件或发送至邮箱。使用时需注意安全、资源消耗和隐私,最佳实践包括定期评估、自动化处理、多源订阅和备份。此工具展示了RSS在软件管理中的创新应用。
|
6月前
|
Linux 网络安全 开发工具
Linux 管理远程会话 screen:掌握终端的多任务操作
`Linux screen` 命令让多任务管理变得更简单,尤其在SSH连接远程服务器时。创建新会话如`screen -S backup`,查看会话`screen -ls`,退出`exit`。高级功能包括直接在会话中运行命令,如`screen vim memo.txt`,会话共享以协同工作,以及通过`screen -r`或`-D -r`重新连接或强制恢复断开的会话。提高效率,确保任务不间断运行。
103 1
|
6月前
|
安全 Linux 数据处理
探索Linux的kmod命令:管理内核模块的利器
`kmod`是Linux下管理内核模块的工具,用于加载、卸载和管理模块及其依赖。使用`kmod load`来加载模块,`kmod remove`卸载模块,`kmod list`查看已加载模块,`kmod alias`显示模块别名。注意需有root权限,且要考虑依赖关系和版本兼容性。最佳实践包括备份、查阅文档和使用额外的管理工具。

热门文章

最新文章