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

Ubuntu中的用户管理(四)密码管理

密码是Linux安全的重要组成部分,通过这部分的学习,你应该学会怎样为你的Linux系统建立一个密码策略,密码保存在什么地方,怎样为你的用户管理密码等。

有效的密码策略是一个好的系统管理计划的重要组成部分。这个策略需要包括以下几点:

  • 允许的密码组成和禁止的密码组成
  • 修改密码的频率
  • 取回或重置丢失的密码
  • 用户对密码的操作

密码文件是/etc/passwd,它是系统上所有用户的数据库文件。每一行的形式如下:

username:password:uid:gid:gecos:homedir:shell

简要介绍下gecos字段。这个字段是为了记录用户的多样性的信息。例如,用户的全名,办公室的位置,办公室电话,家庭电话,简单备注等。出于安全和隐私上的考虑,这个字段目前已经越来越少的被使用到了。但是,系统管理员要知道这个字段,因为传统的Unix程序例如fingermail会用到这个字段。因此gecos字段通常被成为finger information field。这个字段是逗号界限格式,可以通过chfnchange finger)命令更改。如果密码字段出现一个星号,那么这个用户将不能登陆Linux系统。系统管理员可以通过修改密码字段或者使用passwd -l命令锁住用户。一些系统用户通常有root权限,因此系统管理员不希望这些用户可以登陆Linux系统,可以通过将这些系统用户的shell设置为sbin/nologin或者bin/false阻止这些账户的登陆。

下面给出/etc/passwd文件的内容形式:

cindy@cindy-ThinkPad-X200:~$cat /etc/passwd

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

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/bin/sh

man:x:6:12:man:/var/cache/man:/bin/sh

lp:x:7:7:lp:/var/spool/lpd:/bin/sh

mail:x:8:8:mail:/var/mail:/bin/sh

news:x:9:9:news:/var/spool/news:/bin/sh

uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh

cindy:x:1000:1000:cindy,,,:/home/cindy:/bin/bash

……

我们注意到没有一个用户显示了密码,而是在密码字段有一个x。这是因为用户密码是阴影密码(shadow passwords),这属于Linux中的一个安全增强机制。真正的密码保存在文件/etc/shadow中。/etc/shadow文件只对于系统管理员和PAM可读。Ubuntu中自动启用了shadow password。下面给出/etc/shadow文件的内容形式:

cindy@cindy-ThinkPad-X200:~$sudo cat /etc/shadow

[sudo]password for cindy:

root:$7$h9pRtnF/$Zf8pynVBJ/m.DfAl.Q1lgw8ZCmeGYqKCe/47sNfEV6FUq59UnB1CTcZVr4.7AwtyLpizdnwlqxe0f2J/mD6th.:15536:0:99999:7:::

daemon:*:15453:0:99999:7:::

bin:*:15453:0:99999:7:::

sys:*:15453:0:99999:7:::

sync:*:15453:0:99999:7:::

games:*:15453:0:99999:7:::

man:*:15453:0:99999:7:::

lp:*:15453:0:99999:7:::

cindy:$6$/IMKHjoh$osdeLeLwe3f11QXlRts2huVISmSKUpTyaDeXihtYV39.7OAqakAeLda4WAWXpIeeopBmrU/zCDaKhp/aL1gqW1:15536:0:99999:7:::

……

冒号分开的各个字段的解释:

  1. 1个字段是用户名。
  2. 2个字段是编码后的密码。
  3. 3个字段是上次修改密码的时间,这个时间是从197011日起计算。这个日子在UNIX领域被成为epoch
  4. 4个字段是再过多少天密码才可以被再次修改的时间(避免修改密码到新密码后快速修改会原始密码)
  5. 5个字段是再过多少天密码必须被再次修改的时间。
  6. 6个字段是密码过期前多少天,用户会收到警告。
  7. 7个字段是密码过期后多少天,用户会被禁用。
  8. 8个字段是从197011日起,该帐号disabled的天数。
  9. 9个字段为保留字段。

需要注意的是密码过期日期和警告在Ubuntu中是默认禁用的。如果需要启用相应的密码策略,需要系统管理员建立相应的密码策略。etc/shadow的权限时600,常规用户不可读。

系统管理员可以手动编辑/etc/shadow文件或者使用chage命令更改密码规则(详细信息请参考shadowchageman页)。

系统管理员可通过命令chpasswd批量修改用户密码。命令接受的输入为用户名/密码对:

sudo chpasswd username:password

可以通过重定向文件输入来批量工作。此外,Ubuntu还提供了newusers命令,批量增加文本文件中的用户,并为用户分配群组,分配/home目录等。


相关文章:

  • Ubuntu中的用户管理(五)授予常规用户系统管理员权限
  • Ubuntu中的用户管理(六)硬盘配额
  • Ubuntu中的用户管理(七)相关Ubuntu命令
  • Windows下Ubuntu 12.04 LTS 的安装(双系统使用EasyBCD)
  • Ubuntu 12.04下安装QQ2012Beta3
  • Ubuntu 12.04 中文输入法
  • Ubuntu下的截图软件Deepin Scrot
  • SHELL 编程入门与提高(一)第一个shell程序
  • Ubuntu 12.04 LTS 中文txt文件显示乱码问题
  • SHELL 编程入门与提高(二)bash/pdksh中的表达式比较
  • SHELL 编程入门与提高(三)SHELL中的语句详解(上)
  • SHELL 编程入门与提高(三)SHELL中的语句详解(下)
  • SHELL 编程入门与提高(四)SHELL脚本中函数的应用
  • 文艺编程 Literate Programming (原文中英文对照)
  • Windows下PBRT v2 安装指南
  • [NodeJS] 关于Buffer
  • [译] 怎样写一个基础的编译器
  • [译]CSS 居中(Center)方法大合集
  • css属性的继承、初识值、计算值、当前值、应用值
  • ES6核心特性
  • flutter的key在widget list的作用以及必要性
  • JavaScript 基础知识 - 入门篇(一)
  • js继承的实现方法
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • PHP 小技巧
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • vuex 笔记整理
  • 普通函数和构造函数的区别
  • 如何利用MongoDB打造TOP榜小程序
  • 什么是Javascript函数节流?
  • 阿里云重庆大学大数据训练营落地分享
  • ​2020 年大前端技术趋势解读
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (4)(4.6) Triducer
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (安卓)跳转应用市场APP详情页的方式
  • (分布式缓存)Redis分片集群
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转)德国人的记事本
  • .Net CF下精确的计时器
  • .NET 依赖注入和配置系统
  • .NET 指南:抽象化实现的基类
  • .NET开发人员必知的八个网站
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法
  • [C++] Boost智能指针——boost::scoped_ptr(使用及原理分析)
  • [Electron] 将应用打包成供Ubuntu、Debian平台下安装的deb包
  • [Flutter]打包IPA
  • [JavaWeb]——获取请求参数的方式(全面!!!)