渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(2)
前情回顾:在上一篇,我们开始了Unix系统的一些了解,另外,还介绍了一些学习方法和小贴士,希望对自己和对大家都有帮助。
将近一个月前,决定一天写一篇博客,坚持三十天。说实在的,到现在应该是到尾声了吧,回想起之前的大半个月,有点难以想象,没想到自己还真的能坚持下来。
本来写博客的目的是为了复习,为了更好地找工作,从我这一系列的标题就可以看出来。可是写到这个地步,主要的原因已经不是因为那些东西了,更多的是自己写得开心,在这个过程中享受到了乐趣和取得了成就感。特别谢谢那些给我评论留言的朋友,没有你们,我坚持不到现在。
——————————————————————————闲聊结束———————————————————————————
第三章:用户和组
在介绍用户和组之前,我们先来了解一下,如何关闭系统。
第一节:关闭系统与使用帮助页
Unix是一个多用户、多任务操作系统,所以总是会有很多进程在运行。因为需要同步文件系统以及保存设置修改等,所以直接关闭电源会使文件系统出现问题并影响系统的稳定性,这样不正常的关机往往会导致这样或那样的问题。
通过命令行正确关闭Unix系统最一致的方式就是用下列命令中的一个:
halt:理解关闭系统
init 0:使用预定义的脚本切断系统的电源,以便在关机前同步数据并整理系统(不是在所有Unix系统上都可以使用这种方法)
init 6:通过将系统完全关闭,然后将它完全恢复来重新启动系统(不通用)
poweroff:通过切断电源来关闭系统
reboot:重新启动系统
shutdown:关闭系统
首选的方法肯定是使用shutdown命令,所有Unix系统上都可以使用这种方法。它使用系统提供的脚本进行正确的关闭,并且具有其他命令的大部分功能。下面,我们来试试。我在Virtual Box上用装的虚拟机,系统是Ubuntu,版本是12.04.
咦,怎么不开始关闭系统啊?提示说,需要时间。需要时间是什么意思?下面一句,试试shutdown --help指令获取更多的信息。我来试试先!
果然,输入了刚才提示的那条指令之后,就出现如上图的帮助信息。建议大家去试试,一般我都是用shutdown now关机的。这个就不示范了,懒得等会又要重新启动系统。
从刚才这条简单的关闭系统命令就可以想到,Unix命令总是会有多个参数或选项,使得相同的命令具有各种各样的功能。因为不大可能有人记住所有的Unix命令和相应的命令选项,所以从Unix的早期开始,就一直有联机帮助。Unix的帮助文件称为联机帮助页(man pages)。联机帮助页(manual page)用一种任何用户都可读的标准格式提供联机文档,并且以一种统一的、合理的方式进行安装。可以简单地按照下面的语法使用这条命令:
man command
如果想了解某条命令的更多信息,就可以用这条命令的名称作为command参数。例如,我们现在要查看ls这条命令的联机帮助页,如下图
看到上面的联机帮助页,明显看出分为不同的部分。下面介绍一些比较常见的——
NAME:命令的名称
SYNOPISIS:命令的常用参数
DESCRIPTION:命令的一般性描述以及它的作用
OPTIONS:描述命令所有的参数或选项
SEE ALSO:列出联机帮助页中与该命令直接相关或功能相近的其他命令
BUGS:解释命令或它的输出中存在任何已知的问题或缺陷
EXAMPLES(或TIPS):普通的用法示例,让读者知道如何使用这条命令
AUTHORS:联机帮助页/命令的作者
用户有时候可能只记得某条命令名的一部分或者命令中所包含的的一个要点,我们可以利用-k选项在联机帮助页中搜索,该选项在联机帮助页中寻找关键字。例如,我们需要修改文件的权限,但是忘记了要使用什么命令,我们可以输入man -k permission,效果如下图:
当需要了解Linux系统中的命令或文件的相关信息时,联机帮助页是一个至关重要的资源和首要的研究手段,是我们play unix必须要掌握的东西。从今天开始,成为一个靠自己的人,不做伸手党!
第二节:账户基础知识
Unix系统上主要有三种类型的账户:根用户(或超级用户)账户、系统账户以及普通用户账户。下面,我们会对三种账户简单地一一说明。
根账户:根账户的用户能够完全地、不受约束地控制系统,以至于可以运行命令来完全破坏系统。根能够在系统上进行任何操作,可以不受任何限制地访问、 删除和修改文件。因此,我们应该只用根用于最重要的任务,而且只在必要的时候才使用它,并且需要非常谨慎。
系统账户:系统账户是对系统特定组件进行操作所需的那类账户。例如,它们包括邮件账户(用于电子邮件功能)和sshd账户(用于ssh功能)。系统账户通常由操作系统在安装过程中提供或者由软件制造商(包括内部开发商)提供。他们通常协助用户所需的服务或程序。
用户账户:用户账户为用户和用户组提供对系统的交互式访问。普通用户通常都配以这类账户并且对关键系统文件和目录的访问权限是有限的。通常在一个账户名中希望使用8个或更少的字符,但是现在所有的Unix系统都不再有这个要求。然而,考虑到与其他Unix系统和服务的互操作性,最好还是限制账户名在8个字符以内。
组账户:组账户增加了一种功能,这种功能可以将其他账户集中在一起组成一个逻辑排列,从而简化权限管理。Unix权限作用于文件和目录上,并分别控制三类用户的权限:文件的所有者,也称为用户;指派给文件的组,也简称为组;在系统上拥有合法注册但既不是所有者也不属于组的人,也称为其他(others)。组的存在使得资源或文件的所有者能够授予一类用户访问文件的权力。组的一个强大之处在于,基于访问需求,一个账户可以属于多个组。
第三节:管理用户和组
管理用户的信息,会记录在系统上的用户管理文件里,主要有以下三个:
/etc/passwd——保存了系统识别已授权的账户。
/etc/shadow——保存相应账户加密后的口令。大多数Unix系统都有这个文件。
/etc/group——存放组账户的信息。
首先,我们来看看/etc/passwd这个管理文件,该文件保存了Unix系统上与账户相关的大部分信息。几乎在系统上拥有账户的任何人都可以查看这个文件,但是只有根用户才能修改它。看看这个文件的内容:
每一条记录的每一部分,都会用冒号分开。分别是用户名、加密的口令或x、UID(用户ID号)、默认UID(组ID)、GCOS(或注释)、账户启动的位置或主目录(用于存储个人文件)、用户的登录shell。对应上图最后一条记录,我们可以得知这些信息:用户名是levenyes,由于使用隐式口令所以只含有一个x,UID和默认UID都是1000,注释就只有levnyes(一般会添加一些联系信息或职位等内容),账户启动的位置是/home/levenyes,登录shell为/bin/bash。
接下来,我们再简单了解一下两个文件的作用。
/etc/shadow——该文件包含已加密的本地用户的口令记录以及所有口令的期限(说明口令过期的时间)或限制。
/etc/group——该文件包含每个账户的组信息。
建议大家都打开这些文件看看,了解每个字段都是什么意思。这里就不一一介绍了。
第四节:管理账户和组
刚才了解了几个账户管理文件,那么,如果我们要手动添加或删除一个账户,大概很多人都会想到修改文件:
- 修改/etc/passwd以添加或删除账户行
- 修改/etc/shadow以添加或删除账户行
- 修改/etc/group以添加或删除账户引用
- 添加或删除账户的主目录
可是,这样一个一个文件去修改内容,很可能因为输入错误或者其他误操作而造成不可预料的后果。因此,我们应该尽量使用一些命令来进行管理账户和组的操作,当然啦,这些命令要想运行,必须以根用户的身份登录。
useradd:向系统中添加账户
usermod:修改账户属性
userdel:向系统中删除账户
groupadd:向系统中添加组
groupmod:修改组的属性
groupdel:从系统中删除组
具体的创建用户的过程在这里也就不贴出来了,有兴趣的童鞋还是自己动手实验实验比较好。这些指令的作用就是会帮助我们修改或创建相应的文件和目录,免去我们一一操作的麻烦和误操作的危险性。
最后介绍几个命令——who:显示当前登录在系统上的用户;whoami显示当前作为哪一个用户登录,而who am i显示最初作为哪一个用户登录到系统。
今天的内容就到这里,明天会跟大家一起了解Unix下的文件系统,可能还会有一些其他的内容,敬请期待。
——————————————————————————倒数第六天————————————————————————
今天发了条微博:有一种状态,叫做看得进书。
1.最近找工作的事情,说顺利也顺利,说不顺利也不顺利。笔试面试偶尔会有而且表现还可以,不过还没有确定的去向。
2.不过状态是越来越好了,每天看东西写博客,也越来越顺畅。
3.港剧里面常常会有这么一句话:做人呢,最紧要的是开心。我深以为然。就像我昨天说的那样,just for fun,just for play。学东西最好是要有趣,play database,play java programming,play linux。希望大家都能够从学习中工作中多乐一点,少苦一些。