/etc/passwd文件是系统能够识别的用户的一份清单.在用户登录期间,系统查询这个文件,确定用户的UID并验证用户的口令.这个文件中的每一行都代表一个用户,它包含7个由冒号分割的字段.

  • 登录名.
  • 经过加密的口令或者口令占位符.
  • UID(用户ID)号.
  • 默认的GID(组ID)号.
  • "GECOS"信息:全名,办公室,分机号,住宅电话.
  • 主目录.
  • 登录shell.

现如今,现在已经不能采用以纯文本显示加密口令的做法.随着硬件速度越来越快,几分钟时间就能"破解"这样的口令.所有版本的UNIX和Linux系统都能让用户把加密后的口令藏在一个不是所有人都可读的单独文件中.

有些比较老的UNIX版本将允许登录名使用的字符限制为字母和数字,而且长度只能有8个字符.在异构的站点,要遵守最严格的限制.采取这样的策略会避免可能同老软件发生的冲突,确保用户能够在每台机器上都有相同的登录名.记住这一点,就因为今天拥有一个统购环境并不意味着明天也会是同构环境.

为选择登录名而确定的任何方案最终都会出现重名或者名字太长的问题,所以管理有有时不得不允许一些例外的情况出现.在出现很长名字的情况下,可以采用/etc/mail/aliases文件,让两种格式的名字至少对于邮件来说是等价的.

如果站点有一个全局的邮件别名文件,每个新的登录名都必须和这个文件中的任何别名不同.如果不是这样的话,邮件就会被发送给别名而不是新用户.

对于大型站点来说,常见的做法是实现一种采用用户全名的邮件寻址方案,它把登录名对外部世界隐藏了起来.这是个不错的注意,但它确实还不足以不考虑前面提过的任何命名建议.如果管理员足够明智,那么登录名和用户实际的名字最好能有一种清楚的,可以推测出来的关系.

大多数系统实际上把加密后的口令放在/etc/shadow而不是/etc/passwd文件里.

/etc/passwd文件以加密的形式保存口令.除非用户能够自己心算完成加密过程,否则必须通过使用passwd命令来设置这个字段的内容(如果使用的是NIS系统,那么就应该使用yppasswd命令),或者从另外一个账号中复制加密后的口令字符串.

您可以使用工具pwconv让shadow文件的内容和passwd文件的内容保持一致,补上任何新加的用户,删除不再passwd中列出的用户.pwconv会用/etc/login.defs里指定的默认值填充shadow文件里大多数的隐藏参数.

/etc/group文件包含了UNIX组的名称和每个组中成员的列表.
每一行都代表了一个组,其中包含有4个字段:

  • 组名;
  • 加密的口令或者包含一个x,表明有一个gshadow文件;
  • GID号;
  • 成员列表,彼此用逗号隔开(注意不要加空格)

与用户名和UID一样,组名和GID也应该在通过网络文件系统共享文件的计算机之间保持一致.在异构环境中保持一致会比较难,因为不同的操作系统对于相同的组名使用的是不同的GID.我们已经发现,处理这个问题的最好方法就是避免将一个系统组用为用户的默认登录组.

如果一个用户默认属于/etc/passwd中某个特定的组,但是根据/etc/group文件的内容,却又不再那个组里,那么就要按/etc/passwd的内容对待.在登录时,用户该是哪些组的成员,实际上是passwd和group文件中找到的组的并集.不过,最好保持两个文件一致.

UNIX的传统总是把新用户加入到一个代表其普通类型的组里,比如students或者finance组.但值得说明的是,这样的约定增加了用户因为不经意地设置权限而能够彼此读取文件的可能性,即使这并非文件属主的本意.为了避免这个问题,我们建议您为每个用户创建一个唯一的组.您可以让用户和组的名字一样,还可以让GID和UID一样.

用户的个人组应该只包含用户本人.如果您想要用分组机制让用户共享文件,那么应该为此目的单独建组.个人组背后的思想本身不是为了妨碍组本身的使用–而只是为了给每个用户建立一个更严格的默认组,从而让文件不会被意外共享.

** 除了SUSE之外,我们举例的其他发行版本的工具程序useradd默认把用户放入它们自己的组 **

通常,添加一个新用户的过程包含系统要求的四个步骤,两个步骤用来为新用户建立一个有用的环境,还有其他几个步骤用来为管理员自己提供更多便利.
系统所需步骤:

  • 编辑passwd和shadow文件,定义用户账号;
  • 把用户添加到/etc/group文件里;
  • 设置一个初始口令;
  • 创建用户主目录,用chown和chmod命令改变用户主目录的属主和属性.

为用户所进行的步骤:

  • 将默认的启动文件复制到用户的主目录中;
  • 设置用户的邮件主目录并建立邮件别名;

为管理员准备的步骤:

  • 核实账号是否设置准确;
  • 将用户的联系信息和账号状态加入数据库;

编辑passwd和shadow文件

为了安全地编辑passwd文件可以运行vipw命令启动文本编辑器去打开它的一个副本.默认的文本编辑器是vi,但也可以通过设置环境变量EDITOR的值来指定不同的文本编辑器.临时编辑文件的存在起着锁定的作用,vipw每次只允许一个人编辑passwd文件,它放置用户在passwd文件被编辑的时候修改他们的口令.当文本编辑器终止时,vipw将用编辑过的副本替换原来的passwd文件.

在Fedora和RHEL系统上,vipw命令会自动询问编辑完passwd文件之后是否再编辑shadow文件.SESE,Debian和Ubuntu的系统要使用vipw -s来实现上述功能.

现在的Unix/Linux系统中,口令不再直接保存在passwd文件中,通常将passwd文件中的口令字段使用一个"x"来代替,将/etc/shadow作为真正的口令文件,用于保存包括个人口令在内的数据.当然shadow文件是不能被普通用户读取的,只有超级用户才有权读取.

此外,需要注意的是,如果passwd字段中的第一个字符是"*"的话,那么,就表示该账号被查封了,系统不允许持有该账号的用户登录.

编辑/etc/group文件

我们应该在/etc/group文件里给tyler建立个人的用户组,我们仍然把这个用户组叫做"tyler".它的组ID应该是GID 2422,和tyler的UID 2422相匹配.这是我们在passwd文件里给他分配的默认GID.

严格来讲,无论tyler是否在/etc/group文件中列出,他都将在组2422中,因为passwd中的记录早已经给出了他的成员身份.内核实际上并不关心/etc/passwd或/etc/group文件中有哪些内容;它只关心那些原始的UID号和GID号.在group文件里保存个人用户组的主要目的,是为了让ls这样的命令能够正确地显示出这些组的名字.当然,有一个权威的列表列出创建的用户组以及其成员总是不错的.

设置初始口令

root能够使用passwd命令修改任何用户的口令:

passwd user

千万不要让一个新账号–或者任何能够访问shell的账号–没有口令.

创建用户的主目录

系统管理员创建的任何目录最初都由root所有,所以必须使用chown命令修改它的属主和属组.

复制默认启动文件

通过将配置文件放置到用户的主目录中,可以对一些命令和工具进行定制.启动文件一般都是以圆点(.)开头,以字母rc(“run command"的缩写)结尾,这是CTSS操作系统留下的痕迹.除非ls使用-a选项,否则则开头的圆点在让ls在显示的目录列表中的不显示这些文件,这些文件被认为是"不感兴趣的”.

常用的启动文件及其用途

命令 文件名 典型的用途
csh/tcsh .login .cshrc 设置终端类型(如果需要);设置biff和mesg的选项;设置环境变量;设置命令别名;设置搜索路径;设置控制权限的unmask值;设置搜索文件名的cdpath;设置提示符(prompt),历史(history)和savehist变量
bash .bash_rc .bash_profile 和.cshrc类似,用于bash;和.login类似用于bash
vim .vimrc 设置vim编辑器的选项
emacs .emacs 设置emacs编辑器的选项;设置emacs键绑定
mail/mailx .mailrc 定义个人邮件别名;设置邮件阅读器选项
xrdb .Xdefaults 指定X11配置:字体,颜色等
startx xinitrc 指定初始的X11环境;指定初始的X11环境(RHEL,Fedora)
xdm .xsession 指定初始的x11环境

设置用户的邮件主目录

对于每个用户而言,只在一台计算机上接收邮件是非常方便的.这种方案经常可以通过中央邮件服务器上全局别名文件/etc/mail/alias中的一项或者sendmail中的userDB项来实现.

记录用户的状态和联系信息

删除用户

当某个用户离开您的单位时,应该从系统中删除该用户的登录账号和文件.这个过程包括删除由您或者您的useradd程序所添加的对登录名的所有引用.如果想要手工删除一个用户,可能需要对照下面的步骤来做:

  • 将用户从所有本地用户数据库或者电话簿中删除;
  • 将用户从aliases文件中删除,或者添加一个转发地址;
  • 删除用户的crontab文件和所有挂起的at作业;
  • 终止所有仍在运行的用户进程;
  • 将用户从passwd,shadow,group和gshadow文件中删除;
  • 删除用户的主目录;
  • 删除用户的邮件储存文件;
    在删除用户的主目录之前,应该确保先重新安置其他用户需要的任何文件.因为您往往不能确认哪些文件是什么文件,所以在删除用户主目录和邮件储存文件前,给他们做个备份总是一个好主意.

账号管理工具

useradd命令把用户添加到passwd文件中去(如果可以的话,还会添加到shadow文件中去).它提供了一个命令行驱动的接口,很容易通过手工运行或从自制的adduser脚本调用.usermod命令可以改变已有用户在passwd文件中的条目.userdel命令可以将用户从系统中删除,还可以删除用户的主目录.groupadd,grouopmod,groupdel命令也可以对/etc/group文件进行操作.

# userdel hilbert

这条命令删除了passwd,shadow和group文件中与hilbert相关的资料.默认情况下,它不会删除hilbert的主目录.-r选项让userdel也删除用户的主目录,但是即使尽userdel的最大能力,它还是只完成了"删除用户任务"清单中的最后三项.

E6.1 组在/etc/group中定义,/etc/passwd中的GID字段在登录是提供默认或者"有效"GID.

开发日记-20190723 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 13相关推荐

  1. Linux管理传世经典:Linux 系统管理技术手册(第二版) 中文高清版下载

    Linux管理传世经典:Linux 系统管理技术手册(第二版) 中文高清版下载 转载于:https://www.cnblogs.com/gavinhughhu/archive/2010/07/05/1 ...

  2. 开发日记-20190626 Linux系统管理技术手册(第二版) 第一章习题答案(个人版)

    Preface 交流才是王道,只有在极少数情况下,一个天才的能力会超越一百个凡人 Content E1.3 man和info之间的主要区别是什么?他们各自有什么优点? man手册页对单条命令,驱动程序 ...

  3. 开发日记-20190625 Linux系统管理技术手册(第二版) 第一章习题答案(个人版)

    Preface 2333,果然,一章需要三天左右才能完成,这都第二天了,习题才做完前两道,不过通过这两道也了解到了这本书的习性了,不错,不错. Content E1.1 了解系统调用sync(不是sy ...

  4. 开发日记-20190612 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》

    Preface 今天效率真的感觉还不错呢= =,读书进度一口气推进了两章半,说真的,感觉现在看的东西大多数都是讲怎么用的,写这些其实意义不是很大,而且一般写下来后我后续也不会特地来回顾.所以我决定了, ...

  5. 开发日记-20190530 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》

    前言 很多时候真的,完全控制不住自己想要购物的冲动,Linux系统管理技术手册(英文第二版)-这次就是你了,100元大洋含泪永远离开了我,愿你的离去能为我的未来带来一些曙光吧. 最近真的很忙,甚至可以 ...

  6. 开发日记-20190522 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》

    前言 世界上最最愚蠢的事情就是重复,世界上最唯美的事情就是简单.把东西变得简单才是本事,这是我一直信奉的教条. 其实我一直想好好学学Linux,可是很多时候真的很无奈,尽管我挺喜欢买书而且在一定程度上 ...

  7. 开发日记-20190822 关键词 读书笔记《Unix环境高级编程(第二版)》《掌控习惯》DAY 2

    Preface 话说,昨天开始尝试着去改变自己,从基础的习惯开始,11:30准时睡觉,平时差不多12:30才睡觉.按理说,比平时早了一个小时睡觉吧,然后我就把闹钟提前了45分钟,想着还能比平常多睡15 ...

  8. 开发日记-20190807 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 21

    Preface 今天对于网络请求到底是如何发送有了相对深入的理解.明天的话,第12章也就结束了,感觉看到这里,有点飘飘欲仙的感觉了.的确,对于有些人来说,这类书是作为字典用的,但是我啊,只是因为好奇, ...

  9. 开发日记-20190726 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 16

    Preface 感觉渐入佳境,渐入佳境= = 昨天发现了一个问题,我貌似日记有一天弄错了,所以现在我每天写的日记实际上是明天的= =,麻麻,这也挺好的,给自己暗示一下,要有提前量! 说真的,一般写东西 ...

最新文章

  1. “ git commit”和“ git push”之间有什么区别?
  2. ARPG游戏引擎设计思路
  3. swift 学习- 12 -- 方法
  4. php变量值随机,PHP生成各类随机数值
  5. 手机python3_python3 简单手机验证码的实现
  6. Visual Studio LightSwitch初体验和定位看法
  7. Laravel 中的 视图和模型
  8. ceph-rest-api_快速检查REST API是否有效的方法-从清单文件中获取详细信息
  9. 功能区不显示工具条_【新老客户必知】软件支持超高清屏显示器了
  10. gpt efi win7 linux,在EFI+GPT硬盘上利用grub2实现Linux/Win7/win8等多重启动
  11. devops工程师_如何过渡为DevOps工程师的职业
  12. HDU 1010 深搜+奇偶剪枝
  13. 机器人仿真软件介绍(V-REP,ROS等等)
  14. 在iOS中高效的加载图片
  15. beta版和alpha版
  16. 知行:成长的迭代之路
  17. 2022年深圳市科技型中小微企业贷款贴息资助标准及申报条件,补贴100万
  18. 用 Dev-C++ 编写简单的走迷宫小游戏
  19. 常青藤爸爸《唱诵国学经典系列活动》在首都图书馆圆满举行
  20. 从零开始——在Ubuntu22.04系统中部署KubeEdge架构

热门文章

  1. c语言常用绘图软件,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
  2. 用c语言输出数组中最小值,C语言.由键盘输入10个整数存入数组,输出最大值、最小值及它们的位置信息.并将最大、最小值位置互换后,再...
  3. 微信服务通知消息找回_第三方平台微信服务号模板消息怎么发送
  4. centos 更换java版本_centos7 更换jdk版本
  5. java实现qq抢红包_微信抢红包到底是怎么抢到的?
  6. python一个图画两条曲线_用python建立两个Y轴的XY曲线图方法
  7. python 关联表_python学习------9.13----约束、表之间的关联关系
  8. centos oracle命令,CentOS7命令行方式搭建Oracle11gR2
  9. 负载策略_面试官:讲一下什么是负载均衡,什么是轮询策略随机策略哈希策略
  10. python【蓝桥杯vip练习题库】ADV-188排列数