1. 用户表示符UID与GID
/etc/passwd文件结构: 有几行就代表有几个帐号在你的系统里
每一行用:分割,一共7个字段。
1.帐号名称
2.密码:早起unix用,现在把密码数据放在/etc/shadow文件中了,这里用x表示
3.UID:0代表系统管理员。
1-499:系统帐号
500-65535:一般用户用
4.GID: /etc/group有关
5.用户信息说明,使用finger时,这个字段能提供很多信息。
6.主文件夹
7.Shell:用户登录系统后取得的一个shell。
/etc/shadow文件结构:共9个字段
1.帐号名称
2.密码
3.最近改动密码日期:以1970/1/1开始累加的日期。
echo $((date --date="2008/09/04"+%s)/86400+1) 查看某个日期累加的天数
4.不可改动天数:几天内不准再次修改
5.需要修改天数:设置密码后多少天内需要修改
6.密码修改期限前警告天数
7.密码过期后宽限时间;(密码失效期)
8.帐号失效日期
9.保留
root忘记密码:重启进入用户维护模式,系统主动赋予root权限的bash接口;
以Live CD开机后挂载根目录去修改/etc/shadow,将里面的密码清空;
2.有效与初始用户组groups,newgrp
/etc/group文件结构
四个字段
1.用户组名称
2.用户组密码:常常给用户组管理员使用,同样密码已经移至/etc/gshadow中,目前用x代替
3.GID
4.该用户组支持的用户,如果你想将某个用户加入到该用户组,就在该字段加入:usr
每个用户在/etc/passwd中第四列的GID就是初始用户组。
当用户支持多用户组时,创建文件时属于那个用户组要看有效用户组(effective group)
groups:用groups指令查看有效用户组,第一个输出的即为有效用户组。
newgrp:使用newgrp指令切换有效用户组,切换的用户组必须是你支持的用户组。
使用newgrp更改当前有效用户组,是以另外一个shell来提供这个功能。如果要想回到原来的环境下,可使用exit回到原本的shell。
/etc/gshadow文件结构
四个字段:
1.用户组名
2.密码列,开头为!表示无合法密码,所以无用户组管理员。
3.用户组管理员帐号
4.用户组的所属帐号:与/etc/group中相同
3.新增与删除用户:useradd
useradd:
useradd [-u uid] [-g initgrp] [-G 次要grp] [-mM] [-c info] [-d homedir] [-s shell] username
-e:后面接日期,格式YYYY-MM-DD,可写入shadow第八项,帐号失效日期
-f:后面接shadow第7项,指定密码是否会失效,0为立刻失效,-1为永不失效
用户创建修改文件:
/etc/passwd:
/etc/shadow:
/etc/group:
/home下创建一个与帐号相同的目录做主文件夹。
若用户在创建用户时指定用户组,则不在/etc/group中主动创建与帐号同名的用户组。
useradd参考文件:
useradd -D:列出useradd 默认值、
这个默认值数据来自:/etc/default/useradd.
GROUP=100:新建帐号的初始化用户组使用GID为100
私有用户机制:系统会创建一个与帐号一样的用户组作为初始用户组。
公共用户机制:就以GID=100作为新建帐号的初始用户组。
HOME=/home:用户主文件夹基准目录。
INACTIVE=-1:密码国企后是否失效的设置值:shadow第7个字段
EXPIRE=: 帐号失效日期:shadow第8个字段
SHELL=/bin/bash:
SKEL=/etc/skel: 用户主文件夹参考基准目录:主文件夹中的各项数据都是由/etc/skel复制过去的,包括.bashrc
CREATE_MAIL_SPOLL=yes:创建用户的mailbox
另外,UID/GID还有密码参数参考:/etc/login.defs
mailbox所在目录;
shadow密码的4,5,6字段内容
UDI/GID指定数值;
用户主文件夹设置值;
用户删除与密码设置值;
使用useradd创建用户时会参考:/etc/default/useradd /etc/login.defs /etc/skel*
4.passwd命令创建密码:默认创建用户后,处于封锁状态,无法登录
echo “afdfgdgf” |passwd --stdin vbird1
passwd [-l] [-u] [--stdin] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 日期] 帐号 #root功能
-l:Lock的意思,将在shadow第二列前加!,是密码失效。
-u:与lock相反,Unlock意思
-S:列出密码相关参数,及shadow中大多数内容
-n:接天数,第4字段,多久不可修改天数
-x:第5段,多久必须修改天数
-w:第6段,密码过期前警告天数
-i:第7段,密码失效日期
passwd 不跟帐号是修改自己密码,跟帐号是修改他人密码。
5.chage 显示详细的密码参数。
chage [-ldEimMW] 帐号名
-l:列出帐号详细的密码参数
-d:修改shadow第三字段,最近更改密码,设置0,则强制用户更改密码
-E:修改shadow第八字段,账号失效日期,设置0则该帐号不能用
-I:修改shadow第七字段,密码失效日期
-m:修改shadow第四字段,密码最短保留天数
-M:修改shadow第五字段,密码多久需要修改
-W:修改shadow第六字段,密码警告日期
usermod:对帐号信息进行微调
usermod [-cdegGlsuLU] username
-c:/etc/passwd第五列说明字段
-d:/etc/passwd第六列主文件夹
-e:/etc/shadow第八字段,帐号失效日期
-f:shadow第七字段,密码失效日期
-g:passwd第四字段,即GID
-G: group文件,次要用户组
-l: 修改帐号名称,passwd第一列
-s: 后接shell实际文件
-u: 修改passwd第三列,UID
-L: 冻结密码 在shadow密码列加!
-U: 去掉密码前的!
userdel:删除密码
删除的用户数据有:/etc/passwd,/etc/shadow
/etc/group,/etc/gshadow
/home/username,/var/spool/main/username
userdel [-r] username
-r:连同用户主文件夹一同删除。
6.用户功能
finger:查看用户信息,大部分都是/etc/passwd文件的信息
finger [-s] username
-s:仅列出用户帐号,全名,终端机代号和登录时间
-m:列出与后面接的帐号相同者,
chfn: 有点change finger的意思
-f: 接完整大名
-o: 办公室房间号
-p:办公室电话
-h:家里电话
chsh:change shell缩写。
-l:列出系统可用的shell
-s:修改自己的shell
chfn、chsh的权限时SUID,这样普通用户都能用它。
id:查询某人或自己相关的UID/GID 信息
id username
7.新增与删除用户
groupadd:
groupadd [-g gid] [-r] 用户组名
-g:
-r:新建系统用户组,与/etc/login.defs内的GID_MIN有关
添加文件数据:/etc/group /etc/gshadow
groupmod:与usermod类似
-g: 修改GID数字(不要随意修改GID)
-n:修改既有组名
groupdel:删除用户组
gpasswd:用户组管理员功能
gpasswd groupname
gpasswd [-A username,...] [-M user2] groupname
gpasswd [-rR] groupname
-A:将groupname的控制权交给-A后的用户
-M:将某些帐号加入改组
-r:将groupname的密码删除
-R:将groupname的密码栏失效
gpasswd [-ad] user groupname
-a:将某位用户加入到groupname中
-d:将某位用户从groupname中删除
chgrp:修改组
8.主机的具体权限规定:ACL使用(access control list)
acl与文件系统支持有关,绝大多数的文件系统都支持acl。
dumpe2fs -h /dev/hda2查看superblock 中是否开启acl
mount -o remount,acl / 开启acl
长期修改支持acl,修改/etc/fstab文件,加入
LABEL=/1 / ext3 defaults,acl
acl设置技巧:getfacl,setfacl
setfacl [-bkRd] [{-m|-x} acl参数] 目标文件名
-m:设置后续acl参数,不能与-x合用
-x:删除后续acl参数,不能与-m合用
-b:删除所有的acl设置参数
-k:删除默认的acl参数
-R:递归设置acl
-d:设置默认acl参数,只对目录有效,该目录下建立的数据都引用此默认值!
setfacl -m
u:vbird1:rx acl_test1 #acl_test1文件加入vbird1用rx权限
setfacl -m
u::rwx acl_test1 #不加用户代表该文件的所有者
setfacl -m
g::rwx acl_test1 #不加组名,表示该文件所在用户组
9.用户身份切换 su
su - 读取以loginshell
su 不加-切换,读取的变量设置为non-login shell的方式,
sudo [-b] [-u 新用户帐号]
-b:后续的命令让系统自行执行,不与目前的shell产生影响
-u:后面接欲切换的用户,若无此项,代表root身份
当执行sudo时,系统判断/etc/sudoers文件中查找该用户是否有执行sudo的权限。
若用户具有sudo权限,让用户输入自己的密码来确认;
若密码成功,则执行sudo后的命令
修改/etc/sudoers文件,用visudo命令
sudoers内容有四个字段
root ALL=(ALL) ALL
1.用户帐号:用来指明那些用户可以执行sudo命令
2.登陆者主机,默认值root代表任何一台网络主机
3.可切换身份,
4.可执行命令
%groupname ALL=(ALL) ALL #加%表示这个用户组的用户可以执行sudo
%groupname ALL=(ALL) NOPASSWD:ALL #免密码执行
myuser1 ALL=(root) /usr/bin/passwd #务必使用绝对路径
myuser1 ALL=(root) !/usr/bin/passwd,!/usr/bin/passwd root,!/usr/bin/passwd [[:alpha:]*] #务必使用绝对路径
通过别名visudo:
User_Alias ADMPW=pro1,pro2,pro3
Cmnd_Alias ADMPWCOM=!/usr/bin/passwd,!/usr/bin/passwd root,!/usr/bin/passwd [[:alpha:]*]
ADMPW ALL=(ALL) ADMPWCOM
Cmnd_Alias(命令别名)
Host_Alias(主机别名)
10.用户特殊shell与PAM模块
pam模块调用流程:
1.用户执行passwd时,并输入密码
2.passwd调用PAM模块进行验证;
3.PAM模块根据/etc/pam.d/中寻找与passwd同名的配置文件
4.根据/etc/pam.d/passwd内的设置,引用相关的PAM模块进行验证分析。
5.将验证的结果(成功失败或者其他)回传给passwd这个程序。
6.passwd根据PAM的回传信息进行下一操作。(参考P437)
11.用户的信息传递
查询用户:w,who,last,lastlog
用户对谈:write,mesg,wall
write 用户帐号 [用户所在终端端口]
write root tty2
infomation crtl-d结束输入
当不想随时有消息立即打断,可执行mesg n,则不会接收任何消息,除了root用户的。
用mesg查看当前的状态,
wall 进行广播
12.用户邮箱mail
13.手动新增用户
pwck:检查/etc/passwd帐号信息与实际主文件夹存在情况,以及/etc/passwd与/etc/shadow信息是否一致
pwconv:主要将/etc/passwd内的帐号与密码移动到/etc/shadow中。这是由于早期的Unix中没有shadow设计的。
pwunconv:将/etc/shadow中的密码歇会到/etc/passwd中,并删除/etc/shadow
chpasswd:读入未加密的密码,并将加密后的密码写入到shadow中。常用于批量创建用户。