linux账号管理与ACL权限设置
linux系统中,每一个文件都具有“所有者与所属用户”即UserID(UID)和GroupID(GID)。
输入账号密码后,系统所做的处理:
1.找寻/etc/passwd里面是否有你所输入的账号,如果没有则跳出,若有则将该账号对应的UID和GID读出来,另外,该账号的主文件夹与shell设置也一并读出。
2.其次核对密码表,这是系统会进入/etc/shadow里面找出对应的账号和UID,然后核对你输入的密码与文件里的密码是否一致。
3.一切OK,则进入shell控管的阶段。
/etc/passwd文件结构:每一行都代表一个账号,有几行就有几个账号在系统中!里面很多账号是系统正常运行所必要的,我们简称为系统账号,例如有bin,deamon,adm,nobady等,这些账号不可以随意删除。
root账号在/etc/passwd中的信息:
root:x:0:0:root:/root:/bin/bash(以‘:’为分隔符,共七列)
账号名称:密码:UID:GID:用户信息说明列:主文件夹:shell
1.账号名称:就是账号,用来对应UID;
2.密码:密码数据放在/etc/shadow中,这里之用‘x’代替,这样可以提高账号安全性;
3.UID:用户标识符,0为系统管理员、1~499为系统账号、500~2^32-1为一般账号;
4.GID:规定组名与GID的对应,与/etc/group有关;
5.用户信息说明:用来解释这个账号的意义;
6.主文件夹:用户的主文件夹;
7.shell:用户登录后取得一个shell与系统内核通信,进行用户操作任务。
/etc/shadow文件结构:密码以及密码限制的参数都在/etc/shadow中,提高账号安全性。
root账号在/etc/shadow中的信息:
root:$6$ofCfdaFflafdjs:16415:0:99999:7::: (以‘:’为分隔符,共九个字段)
账号名称:密码:最近更动密码的日期:密码不可被更动的天数:密码需要重新更改的天数:密码需要更改期限的警告天数:密码过期后账号宽限时间:账号失效日期:保留字段
1.账号
2.密码:这段数据是真正的密码,是经过加密后的密码(现多用MD5加密)。
3.最近更动密码日期:1970/01/01为UNIX元年,16415/365=44年,1970+44=2014年。更能精细到天数;
4.密码不可被更改的天数:(与第3字段相比)设置为20的话,则设置了新密码后,20天后才可以再次修改;
5.密码需要重新更改的天数:(与第3字段相比)必须要在这个天数内重新设置密码,否则账号将会变为过期特性。99999/365=273年,表示无强制意思。
6.密码需要更改期限前的警告天数(与第5字段相比)密码有效期快到的时候,系统会发出警告给这个账号,提醒过n天后密码过期。上面例子则是密码到期前的7天内,系统会警告该用户;
7.密码过期后账号宽限时间(密码失效日):(与第5字段相比)密码过期后,用户还没有登录更改密码,那么账号再也无法使用该密码登录,系统会强制要求你必须重新设置密码才能登录继续使用;
8.账号失效日期:这个账号在此字段规定的日期之后,将无法再使用,通常设置在“收费服务”的系统中。
9.保留字段:用于以后新功能的加入。
/etc/group文件结构:该文件是记录GID与组名的对应。
root账号在/etc/group中的信息:
root:x:0:
用户组名称:用户组密码:GID:此用户组支持的账号名称
1.用户组名称;
2.用户组密码:一般不需设置,通常是给用户组管理员使用,密码已经移动到/etc/shadow中,这里只有一个‘x’;
3.GID:用户组的ID,与/etc/passwd第四个字段使用的GID对应;
4.此用户组支持的账号名称:一个账号可以加入多个用户组,某个账号想要加入此用户组时,将该账号填入这个字段即可。
/etc/gshadow文件结构:
root上好在/etc/gshadow中的信息:
root: : :
用户组名:密码列:用户组管理员的账号:该用户组的所属账号
1.用户组名;
2.密码列:为“!”时,表示该用户组无用户组管理员;
3.用户组管理员的账号;
4.该用户组的所属账号(与/etc/group内容相同)。
有效用户组(effective group)与初始用户组(initial group)
/etc/passwd中的GID就是所谓的“初识用户组”,即当用户登录系统,立刻就拥有这个用户组的相关权限的意思。
新建一个新的文件则要检查当时的有效用户组。
groups,在输出的信息中,第一个用户组即为有效用户组。
newgrp,有效用户组的切换。newgrp xeyes 则有效用户组切换成xeyes。
账号管理
新增用户:useradd [参数] username,-u UID制定一个特定UID给这个账号、-g 初始用户组、-c说明栏(/etc/passwd中的第5列)、-r创建一个系统账号、-s shell指定shell,系统默认/bin/bash。useradd -D查看新增用户默认设置。
默认创建一个账号,系统处理的几个项目:
在/etc/passwd里面创建一行与账号相关的数据,包括创建UID/GID/主文件夹等;
在/etc/shadow里面将此账号密码相关参数填入,但尚未有密码;
在/etc/group里面加入一个账号名称一模一样的组名;
在/home下面创建一个与账号同名的目录作为用户主文件夹,且权限为700。
修改账号密码:passwd [参数],-S列出密码相关参数,即/etc/shadow文件内的大部分信息、-n接天数,/etc/shadow中的第4字段,多久不可修改密码天数、-x接天数,/etc/shadow中第5字段,多久内必须改动密码、-w接天数,/etc/shadow中第6字段,密码过期前的警告天数、-i接日期,/etc/shadow中第7字段,密码失效日期。
chage:更详细的密码参数显示功能。
usermod:进行账号相关数据的微调
删除用户:userdel username,-r连同用户的主文件夹也一起删除。
用户功能
查阅用户信息:finger username,-s仅列出用户的账号、全名、终端机代号与登录时间等。
修改用户的finger数据:chfn(change finger),用法:chfn [参数] username。
修改shell:chsh [参数],-l列出当前可用的shell,即/etc/shells的内容、-s设置修改自己的shell。
查看用户相关的UID/GID等信息:id username。
用户组管理
新增用户组:groupadd [参数] groupname,-g接某个特定GID,用来直接给予某个GID、-r新建系统用户组。
修改group的相关参数:groupmod [参数] groupname,-g修改已有的GID数字、-n修改已有组名。
删除用户组:groupdel groupname。
用户组管理员:gpasswd []参数username groupname。