当前位置: 首页 > news >正文

在linux中,如何增加、修改、删除、暂停和冻结用户名

在Linux中,如何增加、修改、删除、暂停和冻结用户名

在操作增加、修改和删除用户名前,先认识linux中两个最重要的文件,它们就是账号管理最重要文件“/etc/passwd”与“etc/shadow”.

环境:windows 7 + virtualbox + fedora 15 KDE

1.认识“etc/passwd”文件

在命令行输入:vi /etc/passwd

打开/etc/passwd文件,如上图所示。

文件构造:每一行都代表一个账号,有几行就代表系统中有几个账号。需要特殊说明的是,里面很多账号本来就是系统中必须要的,称为系统账号,例如bin、daemon、adm和nobody等。这些账号是系统正常运行所需要的,不可随意删掉。

下面以第一行为例,解释每行中各部分的含义。

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

该行各部分之间以“:”分隔开,共7部分内容,分别是:

第一部分:root是账号名称,对应UID。

第二部分:x表示密码已经移到shadow加密文件了。

第三部分:0是UID,即用户识别码。当UID是0是,表示这个账号是“系统管理员”。UID在1~499一般保留给系统使用,而在500~65535一般用户用。

第四部方:0是GID,即用户组识别码,与/etc/group有关。

第五部分:root是用户信息说明栏,用来解释账号的意义。

第六部分:/root是用户家目录。

第七部分:/bin/bash是shell,用于当执行命令后,各硬件设备接口之间的通信。

 

2.认识“/etc/shadow”文件

命令行输入:# vi /etc/shadow

打开的/etc/shadow文件如上图所示。

下面以第一行为例,介绍每行中各部分的用途。

root:$6$jEfz355e$jBPBwazWDn7IzeNskhBBYwn/9ydVPDwC787BS3KrRwwKWL.XUT/PjjVGAMFO7VblvSyhv3SNx8lwwa88f54Gd.:15952:0:99999:7:::

shadow以“:”作为分隔符,工9个字段,用途如下:

第一部分:账号名称root。由于密码需要跟账号对应,因此,这个文件的第一栏就是账号,必须与/etc/passwd相同。

第二部分:密码$6$jEfz355e$jBPBwazWDn7IzeNskhBBYwn/9ydVPDwC787BS3KrRwwKWL.XUT/PjjVGAMFO7VblvSyhv3SNx8lwwa88f54Gd.,是编码后的密码。

第三部分:最近更改密码的日期15952。注意,linux日期的时间是1970.1.1作为1。

第四部分:密码不可更改的天数0,表示随时可以更改。

第五部分:密码需要重新更改的天数99999,表示密码不需要重新输入。

第六部分:密码更改期限前的警告期限7,密码到期前的7天之内,系统会警告该用户。

第七部分:密码过期的宽限时间,表示失效后无法登陆。

第八部分:账号失效日期。此字段规定日期后,将无法再使用。通常在“收费服务”的系统中使用该字段。

第九部分:保留。

 

3.增加一个用户

(1)完全参考默认值建立一个用户,名为vbird

命令行键入:# useradd vbird

(2)查看家/home下的vbird用户情况

命令行键入:# ls -l /home

可以看到/home下已经自动为vbird用户建立了家目录

(3)查看/etc/passwd、/etc/shadow、/etc/group内vbird用户情况

命令行键入:# grep vbird /etc/passwd /etc/shadow /etc/group

可以看到,三个文件中均为vbird用户添加了信息。

(4)在/etc/shadow所对应的行,可以看到,密码区对应的是“!!”,说明vbird用户还没有密码。如果没有密码,是无法登陆该用户的,下面利用passwd命令给该用户设定密码

命令行键入:# passwd vbird

密码规范挺复杂,简单的密码会提醒“BAD PASSWD: is too simple”,但再次输入该密码,系统就会接受你的密码。

看一下/etc/shadow内的vbird用户信息

命令行键入:# grep vbird /etc/shadow

可以看到,密码区已经有了内容(当然是编码后的结果)。

 

4.修改一个用户

修改用户时,主要使用usermod命令,也可以使用手动修改文件的方式。如果你的基础不牢固,建议采用usermod命令修改。

(1)将用户名vbird修改为vbirdfly

注意:关机(shutdown),再以root用户登录系统才能成功修改用户名,仅退出(layout)是不可以的。

命令行键入:# usermod -l vbirdfly vbird

vbird用户已经成功该名为vbirdfly,但其家目录和密码仍然是原vbird的。

退出(layout)系统后,再重新以vbird用户和原密码登录,已经无法登录;而采用vbirdfly用户和原密码登录,可以成功登录。

(2)如何才能将家目录也修改为vbirdfly呢?

·命令版

注意:关机(shutdown),再以root用户登录系统才能成功修改,仅退出(layout)是不可以的。

命令行键入:# usermod -d /home/vbirdfly -m vbirdfly

可以看出,/etc/passwd里的家目录部分已经修改成/home/vbirdfly。那/home下做了哪些修改呢?可以看出,原来的vbird文件改成了vbirdfly文件。这里需要说明一下usermod的-d和-m参数了:

如果命令是 usermod -d /home/vbirdfly vbirdfly 表示仅修改 /etc/passwd 第6栏的内容而已;如果加上-m 参数,即命令 usermod -d /home/vbirdfly -m vbirdfly ,则表示新建一个家目录;另外,如果原来的家目录是 /home/vibrd,那么usermod -d /home/vbirdfly -m vbirdfly 命令会将原来的 /home/vbird 更名为 /home/vbirdfly。

·手动版

首先,将家目录的名称改为vbirdly

命令行键入:

# cd /home

# mv vbird vbirdfly

可以看到,家目录已经成功修改名称。

这还不够,要在/etc/passwd中再作修改

命令行键入:# vi /etc/passwd

将红框部分改为vbirdfly

退出(layout)系统,我们以vbirdfly再登陆一下看看!

可以看出,vbirdfly是以/home/vbirdfly为家目录,修改成功!

 

5.删除一个用户

删除用户是指不让改用户在主机上使用任何数据,并将该用户的数据删除。

注意:关机(shutdown),再以root用户登录系统才能成功修改,仅退出(layout)是不可以的。

使用的命令是userdel

输入命令:# userdel -r vbird

可以看出该用户已经删除(包括家目录)。

如果vbird已经操作过一段时间,系统内可能会含有其他文件,如邮件信息(mail box)、例行命令(crontab)之类的文件,所以想要完整地将账号删除,最后执行userdel -r username之前,先以“find / -user username”查出整个系统内属于username的文件,然后再删除。

 

6.暂停一个用户

如果你只是想让某一用户“暂时不启用”,将/etc/shadow里最后导数一个字段设置为0,就可以让改账号无法使用。

参考上面的/etc/shadow介绍可知,将账号立即失效。

 

7. 冻结一个用户

如果你只是想让某一用户无法登陆,即密码冻结,可以使用passwd命令。

# passwd -l username

会显示:

Locking password for user username

passwd: Success

密码冻结解开

# passwd -u username

 

注:username只是为了说明,操作时只需用自己的用户名替换即可。

转载于:https://www.cnblogs.com/liusixin/p/7396611.html

相关文章:

  • 深入理解Java内存模型——volatile
  • js面试中长见的算法题(转载)
  • Mybatis避免出现语法错
  • 94)图片验证码
  • css的存在形式及优先级
  • Java学习3——java介绍
  • VS编译器问题总结
  • 软件工程进阶
  • lilntcode-508-摆动排序
  • [hdu2196]Computer树的直径
  • Android开发艺术探索
  • Java-网络编程 socket
  • jq 误解之点击一次 请求发送了两次
  • 信噪比——信号加噪相关的知识
  • 网络流24题 负载平衡(DCOJ8013)
  • HTTP中GET与POST的区别 99%的错误认识
  • java小心机(3)| 浅析finalize()
  • Laravel Mix运行时关于es2015报错解决方案
  • Python学习之路16-使用API
  • unity如何实现一个固定宽度的orthagraphic相机
  • 对象引论
  • 官方解决所有 npm 全局安装权限问题
  • 经典排序算法及其 Java 实现
  • 开源SQL-on-Hadoop系统一览
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端面试总结(at, md)
  • 日剧·日综资源集合(建议收藏)
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何设计一个微型分布式架构?
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (42)STM32——LCD显示屏实验笔记
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (day6) 319. 灯泡开关
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (六)vue-router+UI组件库
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转载)Linux网络编程入门
  • ***通过什么方式***网吧
  • .Mobi域名介绍
  • .net core 6 集成和使用 mongodb
  • .net core 依赖注入的基本用发
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET委托:一个关于C#的睡前故事
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @JSONField或@JsonProperty注解使用
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042