9Linux 账号与身份管理.docx
- 文档编号:6451504
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:56
- 大小:69.17KB
9Linux 账号与身份管理.docx
《9Linux 账号与身份管理.docx》由会员分享,可在线阅读,更多相关《9Linux 账号与身份管理.docx(56页珍藏版)》请在冰豆网上搜索。
9Linux账号与身份管理
Linux账号与身份管理1
Linux的账号与群组1
使用者识别:
UID与GID1
如何登入Linux取得UID/GID2
使用者账号:
/etc/passwd,/etc/shadow2
/etc/passwd3
/etc/shadow4
关于群组:
有效与初始群组、groups,newgrp7
/etc/group7
有效群组(effectivegroup)与初始群组(initialgroup)7
etc/gshadow9
账号管理10
新增与移除使用者:
useradd,相关设定档,passwd,usermod,userdel10
useradd10
相关设定档12
passwd14
usermod15
userdel16
使用者功能:
chfn,chsh17
chsh17
chfn18
finger19
id20
新增与移除群组20
groupadd20
groupmod21
groupdel22
gpasswd22
newgrp23
密码管理:
passwd23
passwd25
使用者身份切换:
26
su27
sudo28
使用者的特殊shell与PAM模块32
特殊的shell,/sbin/nologin33
PAM模块:
/etc/nologin,/etc/securetty33
PAM的设定文件设定范例:
34
/etc/securetty36
/etc/nologin37
/etc/security/*38
Linux系统上使用者的对谈与mail的使用:
38
查询使用者:
w,who,last,lastlog38
使用者对谈:
talk,mesg,wall39
使用者邮件信箱:
mail40
手动增加使用者:
42
一些检查工具42
pwck42
pwconv43
pwunconv43
chpasswd43
特殊账号,如纯数字账号的建立44
不开放终端机登入的账号(ex>mailacccount)45
一个大量建置账号的范例45
本章习题练习47
Linux账号与身份管理
要登入Linux系统一定要有账号与密码才行,否则怎么登入,您说是吧?
!
不过,不同的使用者应该要拥有不同的权限才行吧?
我们还可以透过user/group的特殊权限设定,来规范出不同的群组开发项目呢~在Linux的环境下,我们可以透过很多方式来限制使用者能够使用的系统资源,包括bashshell章节提到的ulimit限制、还有特殊权限限制,如umask等等。
透过这些举动,我们可以规范出不同使用者的使用资源。
另外,还记得系统管理员的账号吗?
对!
就是root。
请问一下,除了root之外,是否可以有其它的系统管理员账号?
为什么大家都要尽量避免使用数字型态的账号?
如何修改使用者相关的信息呢?
这些我们都得要了解了解的!
Linux的账号与群组
管理员的工作中,相当重要的一环就是『管理账号』啦!
因为整个系统都是你在管理的,并且所有的一般用户的申请,都必须要透过你的协助才行!
所以你就必须要了解一下如何管理好一个网站的账号管理啦!
在管理Linux主机的账号时,我们必须先来了解一下Linux到底是如何辨别每一个使用者的!
使用者识别:
UID与GID
虽然我们登入Linux主机的时候,输入的是我们的账号,但是,其实Linux主机并不会直接认识你的『账号名称』的,他仅认识ID啊~ID就是一组号码啦~主机对于数字比较有概念的,账号只是为了让人们容易记忆而已。
而您的ID与账号的对应就在/etc/passwd当中哩。
Tips:
如果你曾经以tarball安装过软件的话,那么应该不难发现,在解压缩之后的档案,档案拥有者竟然是『不明的数字』?
奇怪吧?
这没什么好奇怪的,因为Linux说实在话,他真的只认识代表你身份的号码而已!
那么到底有几种ID呢?
还记得我们在『档案属性与目录配置』那一篇文章的时候有提到每一个档案都具有『拥有人与拥有群组』的属性吗?
没错啦~每个登入的使用者至少都会取得两个ID,一个是使用者ID(UserID,简称UID)、一个是群组ID(GroupID,简称GID)。
那么档案如何判别他的拥有者与群组呢?
其实就是利用UID与GID啦!
每一个档案都会有所谓的拥有者ID与拥有群组ID,亦即是UID与GID,然后系统会依据/etc/passwd的内容,去将该档案的拥有者与群组名称,使用账号的形式来秀出来!
我们可以作个小实验,你可以以root的身份vi/etc/passwd,然后将你的一般身份的使用者的ID随便改一个号码,然后再到你的一般身份的目录下看看原先该账号拥有的档案,你会发现该档案的拥有人变成了『数字了』呵呵!
这样可以理解了吗?
[root@linux~]#vi/etc/passwd
.....(前面省略).....
dmtsai:
x:
501:
501:
:
/home/dmtsai:
/bin/bash<==将原本的501:
501改成3000:
501
[root@linux~]#ls-ld/home/
drwxr-xr-x3501dmtsai4096Aug3010:
37dmtsai
#瞧!
这里就能够知道,其实档案记录的是UID啦~
你一定要了解的是,上面的例子仅是在说明UID与账号的对应性,在一部正常运作的Linux主机环境下,上面的动作不可随便进行,这是因为系统上已经有很多的数据在运行了,随意修改系统上某些账号的UID很可能会导致某些程序无法进行,这将导致系统无法顺利运作的结果。
因为权限的问题啊!
所以,了解了之后,请赶快回到/etc/passwd里面,将数字改回来喔!
如何登入Linux取得UID/GID
好了,那么我们再来谈一谈,到底我们是怎样登入Linux主机的呢?
其实也不难啦!
当我们在主机前面或者是以telnet或者ssh登入主机时,系统会出现一个login的画面让你输入账号,这个时候当你输入账号与密码之后,Linux会:
1.先找寻/etc/passwd里面是否有这个账号?
如果没有则跳出,如果有的话则将该账号对应的UID(UserID)与GID(GroupID)读出来,另外,该账号的家目录与shell设定也一并读出;
2.再来则是核对密码表啦!
这时Linux会进入/etc/shadow里面找出对应的账号与UID,然后核对一下你刚刚输入的密码与里头的密码是否相符?
3.如果一切都OK的话,就进入Shell控管的阶段啰!
大致上的情况就像这样,所以呢,当你要登入你的Linux主机的时候,那个/etc/passwd与/etc/shadow就必须要让系统读取啦,(这也是很多攻击者会将特殊账号写到/etc/passwd里头去的缘故!
)所以呢,如果你要备份Linux的系统的账号的话,那么这两个档案就一定需要备份才行呦!
使用者账号:
/etc/passwd,/etc/shadow
由上面的说明您大概已经知道,嘿嘿!
账号管理最重要的两个档案就是『/etc/passwd与/etc/shadow』了!
这两个档案可以说是Linux里头最重要的档案之一了!
如果没有这两个档案的话,呵呵!
您可是无法登入Linux的呦!
所以,底下我们先针对这两个档案来进行说明。
当然啰,更详细的数据您可以自行man5passwd及man5shadow的啦~
/etc/passwd
这个档案的构造是这样的:
每一行都代表一个账号,有几行就代表有几个账号在你的系统中!
不过需要特别留意的是,里头很多账号本来就是系统中必须要的,我们可以简称他为系统账号,例如bin,daemon,adm,nobody等等,这些账号是系统正常运作时所需要的,请不要随意的杀掉他呢!
这个档案的内容有点像这样:
root:
x:
0:
0:
root:
/root:
/bin/bash
bin:
x:
1:
1:
bin:
/bin:
/sbin/nologin
daemon:
x:
2:
2:
daemon:
/sbin:
/sbin/nologin
adm:
x:
3:
4:
adm:
/var/adm:
/sbin/nologin
我们先来看一下每个Linux系统都会有的第一行,就是root这个系统管理员那一行好了,你可以明显的看出来,每一行使用『:
』分隔开,共有七个咚咚,分别是:
1.账号名称:
就是账号名称啦!
对应UID用的!
例如root就是预设的系统管理员的账号名称;
2.密码:
早期的Unix系统的密码是放在这个档案中的,但是因为这个档案的特性是所有的程序都能够读取,所以,这样一来很容易造成数据的被窃取,因此后来就将这个字段的密码数据给他改放到/etc/shadow中了,关于/etc/shadow这一部份等一下再说。
而这里你会看到一个x,呵呵!
别担心,这表示密码已经被移动到shadow这个加密过后的档案啰;
3.UID:
这个就是使用者识别码(ID)啰!
通常Linux对于UID有几个限制需要说给您了解一下:
id范围
该ID使用者特性
0
当UID是0时,代表这个账号是『系统管理员』!
所以当你要作另一个系统管理员账号时,你可以将该账号的UID改成0即可;这也就是说,一部系统上面的系统管理员不见得只有root喔!
不过,不很建议有多个账号的UID是0啦~
1~499
保留给系统使用的ID,其实1~65534之间的账号并没有不同,也就是除了0之外,其它的UID并没有不一样,预设500以下给系统作为保留账号只是一个习惯。
这样的好处是,以有名的DNS服务器的启动服务『named』为例,这个程序的预设所有人named的账号UID是25,当有其它的账号同样是25时,很可能会造成系统的一些小问题!
为了杜绝这样的问题,建议保留500以前的UID给系统吧!
不过,一般来说,1~99会保留给系统预设的账号,另外100~499则保留给一些服务来使用。
500~65535
给一般使用者用的。
事实上,目前的linux核心(2.6.x版)已经可以支持到4294967295(2^32-1)这么大的UID号码喔!
上面这样说明可以了解了吗?
是的,UID为0的时候,就是root呦!
所以请特别留意一下你的/etc/passwd档案!
4.GID:
这个与/etc/group有关!
其实/etc/group的观念与/etc/passwd差不多,只是他是用来规范group的而已!
5.使用者信息说明栏:
这个字段基本上并没有什么重要用途,只是用来解释这个账号的意义而已!
不过,如果您提供使用finger的功能时,这个字段可以提供很多的讯息呢!
底下的chfn可以解释一下啰!
6.家目录:
这是使用者的家目录,以上面为例,root的家目录在/root,所以当root登入之后,就会立刻跑到/root里头啦!
呵呵!
如果你有个账号的使用空间特别的大,你想要将该账号的家目录移动到其它的硬盘去,没有错!
可以在这里进行修改呦!
预设的使用者家目录在/home/yourIDname
7.Shell:
所谓的shell是用来沟通人类下达的指令与硬件之间真正动作的界面!
我们通常使用/bin/bash这个shell来进行指令的下达!
嘿嘿!
发现了吧?
我们在bash章节里面提到很多次,登入Linux时为何预设是bash呢?
就是这里设定的啦~这里比较需要注意的是,有一个shell可以用来替代成让账号无法登入的指令!
那就是/sbin/nologin这个东西!
这也可以用来制作纯pop邮件账号者的数据呢!
/etc/shadow
上面约略提到,由于每个程序都需要取得uid与gid来判断权限的问题,所以,/etc/passwd的权限必须要设定成为-rw-r--r--这样的权限,在这样的情况下,使用者的密码不就任何人都可以看到吗?
即使这个档案内的密码栏是加密的,坏心肠的朋友也可能利用暴力破解法去tryanderror找出您的密码数据......
因为这样的关系,所以后来发展出将密码移动到/etc/shadow这个档案分隔开来的技术,而且还加入很多的密码限制参数在/etc/shadow里头呢!
我们先来了解一下这个档案的构造吧!
我的/etc/shadow档案有点像这样:
root:
$1$i9Ejldjfjio389u9sjl$jljsoi45QE/:
12959:
0:
99999:
7:
:
:
bin:
*:
12959:
0:
99999:
7:
:
:
daemon:
*:
12959:
0:
99999:
7:
:
:
adm:
*:
12959:
0:
99999:
7:
:
:
基本上,shadow同样以『:
』作为分隔符,如果数一数,会发现共有九个字段啊,这九个字段的用途是这样的:
1.账号名称:
由于密码也需要与账号对应啊~因此,这个档案的第一栏就是账号,必须要与/etc/passwd相同才行!
2.密码:
这个才是真正的密码,而且是经过编码过的密码啦!
你只会看到有一些特殊符号的字母就是了!
需要特别留意的是,虽然这些加密过的密码很难被解出来,但是『很难』不等于『不会』,所以,这个档案的预设属性是『-rw-------』或者是『-r--------』,亦即只有root才可以读写就是了!
你得随时注意,不要不小心更动了这个档案的属性呢!
另外,如果是在密码栏的第一个字符为『*』或者是『!
』,表示这个账号并不会被用来登入的意思。
所以万一哪一天你的某个使用者不乖时,可以先在这个档案中,将他的密码字段的最前面多加一个*!
嘿嘿!
他就无法使用该账号啰!
直到他变乖了,再给他启用啊!
3.最近更动密码的日期:
这个字段记录了『更动密码的那一天』的日期,不过,很奇怪呀!
在我的例子中怎么会是12959呢?
呵呵,这个是因为计算Linux日期的时间是以1970年1月1日作为1,而1971年1月1日则为366啦!
所以这个日期是累加的呢!
得注意一下这个资料呦!
那么最近的2005年1月1日就是12784啦,了解了吗?
4.密码不可被更动的天数:
第四个字段记录了这个账号的密码需要经过几天才可以被变更!
如果是0的话,表示密码随时可以更动的意思。
这的限制是为了怕密码被某些人一改再改而设计的!
如果设定为20天的话,那么当你设定了密码之后,20天之内都无法改变这个密码呦!
5.密码需要重新变更的天数:
由于害怕密码被某些『有心人士』窃取而危害到整个系统的安全,所以有了这个字段的设计。
你必须要在这个时间之内重新设定你的密码,否则这个账号将会暂时失效。
而如果像上面的99999的话,那就表示,呵呵,密码不需要重新输入啦!
不过,如果是为了安全性,最好可以设定一段时间之后,严格要求使用者变更密码呢!
6.密码需要变更期限前的警告期限:
当账号的密码失效期限快要到的时候,就是上面那个『必须变更密码』的那个时间时,系统会依据这个字段的设定,发出『警告』言论给这个账号,提醒他『再过n天你的密码就要失效了,请尽快重新设定你的密码呦!
』,如上面的例子,则是密码到期之前的7天之内,系统会警告该用户。
7.密码过期的恕限时间:
如果用户过了警告期限没有重新输入密码,使得密码失效了,也就是说,你在『必须变更密码的期限前,并没有变更你的密码!
』那么该组密码就称为『失效的密码』啰~怎么办?
没关系,还有这个字段的天数设计啊~意思就是说,当密码失效后,你还可以用这个密码在n天内进行登入的意思。
而如果在这个天数后还是没有变更密码,呵呵!
那么您的账号就失效了!
无法登入!
8.账号失效日期:
这个日期跟第三个字段一样,都是使用1970年以来的总日数设定。
这个字段表示:
这个账号在此字段规定的日期之后,将无法再使用。
这个字段会被使用通常应该是在『收费服务』的系统中,你可以规定一个日期让该账号不能再使用啦!
9.保留:
最后一个字段是保留的,看以后有没有新功能加入。
举个例子来说好了,假如我的dmtsai这个使用者的密码栏如下所示:
dmtsai:
$1$8zdAKdfC$XDa8eSus2I7nQL7UjRsIy/:
13025:
5:
60:
7:
2:
13125:
这表示什么呢?
要注意的是,13025是2005/08/30,所以,dmtsai这个使用者他的密码相关意义是:
*最近一次更动密码的日期是2005/08/30(13025);
*能够修改密码的时间是5天以后,也就是2005/09/04以前dmtsai不能修改自己的密码;如果使用者还是尝试要更动自己的密码,系统就会出现这样的讯息:
Youmustwaitlongertochangeyourpassword
passwd:
Authenticationtokenmanipulationerror
*使用者必须要在2005/09/04到2005/10/29之间的60天限制内去修改自己的密码,若2005/10/29之后还是没有变更密码时,该账号就会宣告失效;
#如果使用者一直没有更改密码,那么在2005/10/29之前的7天内,系统会警告dmtsai应该修改密码的相关信息;例如当dmtsai登入时,系统会主动提示如下的信息:
Warning:
yourpasswordwillexpirein5days
*如果该账号一直到2005/10/29都没有更改密码,由于还有两天的恕限时间,因此,dmtsai还是可以在2005/10/31以前继续登入;
*如果使用者在2005/10/29以前变更过密码,那么那个13025的日期就会跟着改变,因此,所有的限制日期也会跟着相对变动喔!
^_^
*无论使用者如何动作,到了13125,大约是2005/12/8左右,该账号就失效了~
透过这样的说明,您应该会比较容易理解了吧?
!
^_^
Tips:
常常听到:
我的密码忘记或者被更动了?
怎么办?
有的时候会发生这样的情况,就是说,你的root密码忘记了!
要怎么办?
重新安装吗?
另外,有的时候是被入侵了,root的密码被更动过,该如何是好?
这个时候就必须要使用到/etc/shadow这个数据了!
我们刚刚知道密码是存在这个档案中的,所以只要你能够以各种可行的方法开机进入Linux,例如单人维护模式,或者是以liveCD(KNOPPIX)来进入Linux系统。
之后,将硬盘顺利挂载,然后进入/etc/shadow这个档案中,将root的密码这一栏全部清空!
然后再登入Linux一次,这个时候root将不需要密码(有的时候需要输入空格符)就可以登入了!
这个时候请赶快以passwd设定root密码即可。
关于群组:
有效与初始群组、groups,newgrp
认识了账号相关的两个档案/etc/passwd与/etc/shadow之后,您或许还是会觉得奇怪,那么群组的设定档在哪里?
还有,在/etc/passwd的第四栏不是所谓的GID吗?
那又是啥?
呵呵~此时就需要了解/etc/group与/etc/gshadow啰~
/etc/group
这个档案就是在记录GID与群组名称的对应了~我的/etc/group内容有点像这样:
root:
x:
0:
root
bin:
x:
1:
root,bin,daemon
daemon:
x:
2:
root,bin,daemon
sys:
x:
3:
root,bin,adm
也是以冒号『:
』作为字段的分隔符,共分为四栏,每一字段的意义是:
1.群组名称:
就是群组名称啦!
2.群组密码:
通常不需要设定,因为我们很少使用到群组登入!
不过,同样的,密码也是被纪录在/etc/gshadow当中啰!
3.GID:
就是群组的ID啊~
4.支持的账号名称:
加入这个群组里面的所有的账号,我们知道,一个使用者是可以加入多个群组的。
举例来说,如果我想要让dmtsai也加入root这个群组,那么在第一行的最后面加上『,dmtsai』,注意不要有空格,使成为『root:
x:
0:
root,dmtsai』就可以啰~
比较重要的特色在于第四栏啦,因为每个使用者都可以拥有多个支持的群组,这就好比在学校念书的时候,我们可以加入多个社团一样!
^_^。
不过这里您或许会觉得奇怪的,那就是:
『假如我同时加入多个群组,那么我在作业的时候,到底是以那个群组为准?
』底下我们就来谈一谈这个『有效群组』的概念。
有效群组(effectivegroup)与初始群组(initialgroup)
还记得每个使用者在他的/etc/passwd里面的第四栏有所谓的GID吧?
那个GID就是所谓的『初始群组(initialgroup)』了!
也就是说,当使用者一登入系统,立刻就拥有这个群组的相关权限的意思。
举例来说,我们上面提到dmtsai这个使用者的/etc/passwd与/etc/group还有/etc/gshadow相关的内容如下:
[root@linux~]#grepdmtsai/etc/passwd/etc/group/etc/gshadow
/etc/passwd:
dmtsai:
x:
501:
501:
:
/home/dmtsai:
/bin/bash
/etc/group:
users:
x:
100:
dmtsai
/etc/group:
dmtsai:
x:
501:
/etc/gshadow:
users:
:
:
dmtsai
/etc/gshadow:
dmtsai:
!
:
:
仔细看到上面这个表格,在/etc/passwd里面,dmtsai这个使用者所属的群组为GID=501,也就是/etc/group里头dmtsai那个群组啦~因为这是initialgroup,所以,使用者一登入就会主动取得,不需要在/etc/group的第四个字段写入该账号的!
但是非initialgroup的其它群组可就不同了。
举上面这个例子来说,我将dmtsai加入users这个群组当中,由于users这个群组并非是dmtsai的初始群组,因此,我必须要在/etc/group这个档案中,找到users那一行,并且将dmtsai这个账号加入第四栏,这样dmtsai才能够支持users这个群组啊。
那么在这个例子当中,因为我的dmtsai这个账号同时支持dmtsai与users这两个群组,因此,在读取/写入/执行档案时,针对群组部分,只要是u
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 9Linux 账号与身份管理 Linux 账号 身份 管理