###/etc/passwd
##root:x:0:0:root:/root:/bin/bash ##帐号名称:密码:UID:GID:使用者信息说明栏:用户主目录:Shell ###/etc/shadow ##root:$1%……:15123:0:99999:7::: ##帐号名称:密码:最近更改密码的日期:密码不可被更动的天数:密码需要重新变更的天数:密码需要变更期限前的警告天数(1:密码过期后的帐号宽限时间(2:帐号失效日期(3:保留 ##1):与第5字段相比,当几帐号的密码有效期限快要到的时候(第5字段),系统会依据这个字段的设定,发出警告给这个帐号,提醒他再过n天你的密码就要过期了,请尽快得新设定上你的密码! ##2):与第5字段相比,密码有效日期为[更新日期]+[重新变更日期],过了该期限后使用者依旧没有更新密码,那么该密码就算过期了。虽然密码过期但是该帐号还是可以用来进行其它工作的,包括登入系统取得bash。不过如果密码过期了,那当你登入系统时,系统会强制要求你必须要重新设定密码才能登入继续使用。如果在密码过期几天后,如果使用者还是没有登入更改密码,那么这个帐号的密码将会失效,变取出该帐号再也无不支使用该密码登入了。 ##3):帐号失效日期:这个日期跟第三个字段一样,都是使用1970年以来的总日数设定,这个字段表示,这个帐号在此字段规定的日期之后,就无法再使用。###/etc/group
##root:x:0:root ##群组名称:群组密码:GID:此群组支持的帐号名称 ###有效群组(effective group)与初始群组(initial group) ##groups->查看用记所属的组,并且最先输出的为有效群组 ##有效群组的切换--newgrp ##newgrp 所要切换并且支持的群组 ###/etc/gshadow(群组管理员) ##root:::root ##群组名称:密码栏:群组管理员的帐号:该群组的所属帐号 ###useradd ##useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM] [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者几点号名 #* -M:强制!不要建立使用者家目录!(一般系统帐事号默认值) #* -m:强制!要建立使用者家目录!(一般帐号默认值) #* -r:建立一个系统的帐号,这个几点号的UID 会用限制 #* -e:后面接一个日期,格式为[YYYY-MM-DD]此项目可写入shadow第八字段,亦即帐号失效日的设定项目啰 #* -f:后面接shadow的第七字段项目,指定密码是否会失效。0为立刻失效 #* -D:显示useradd使用的默认值(保存在/etc/default/useradd下) 内容如下:GROUP=100 <=预设的群组 HOME=/home <=预设的家目录所在目录 INACTIVE=-1 <=密码失效日,在shadow内的第七栏 EXPIRE= <=账号失效日,在shadow内的第八栏 SHELL=/bin/bash SKEL=/etc/skel <=使用者家目录的内容数据参考目录 CREATE MAIL_SPOOL=yes <=是否主动帮使用者建立邮件信箱 注:INACTIVE:如果是0代表密码过期立刻失效,如果是-1则代表密码永远不会失效,如果是数字,如30,则代表过期30天后夫失效 SKEL=/etc/skel使用者目录参考基准目录 #* /etc/login.defs ###passwd ##passwd [-l] [-u] [--sdtin] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 日期] 帐号 ##* --stdin:可以透过来自前一个管线的数据,作为密码输入,对shell script 有帮助! ##* -l:是Lock的意思,会将/etc/shadow第二栏最前面加上!使密码失效 ##* -u:与-l相对,是Unlock的意思! ##* -S:列出密码相关参数,变即shadow档案内的大部们信息 ##* -n:后面接天数,shadow的第4字段,多久不可修改密码天数 ##* -x:后面接天数,shadow的第5字段,多久内必须要更动密码 ##* -w:后面接天数,shadow的第6字段,密码过期前的警告天数 ##* -i:后面接日期,shadow的第7字段,密码换效日期 ##* echo "abc543CC" | passwd --stdin vbird2 这个动作会直接更新使用者的密码而不用再次的手动输入!好处是方便处理,缺点是这个密码会保留在指令中,未来若系统被攻破,就可以在/root/.bash_history找到这个密码!所以这个动作通常公用在shell script的大量建立使用者帐号当中!#####更详细的密码参数显示功能chage [-ldEImMW] 帐号名
## -l:列出该帐号的详细密码参数 ## -d:后面接日期,修改shadow第三字段(最近一次更改密码的日期),格式YYYY-MM-DD ## -E:后面接日期,修改shadow第八字段(帐号失效日),格式YYYY-MMM-DD ## -I:后面接天数,修改shadow第七字段(密码失效日期) ## -m:后面接天数,修改shadow第四字段(密码最短保留天数) ## -M:后面接天数,修改shadow第五字段(密码多久需要进行变更) ## -W:后面接天数,修改shadow第六字段(密码过期前警告日期)####usermod [-cdegGlsuLU] username
## -c:后面接帐号的说明,即/etc/passwd第五栏的说明栏,可以加入一些帐号的说明 ## -d:后面接帐号的家目录,即修改/etc/passwd的第六栏 ## -e:后面接日期,格式是YYYY-MM-DD也就是在/etc/shadow内的第八个字段数据啦! ## -f:后面接天数,为shadow的第七字段 ## -g:后面接初始群组 ## -G:后面接次要群组,修改这个使用者能够支持的群组,修改的是/etc/group啰 ## -a:与-G合用,可[增加次要群组的支持]而非[设定]喔! ## -l:后面接帐号名称,变即是修改帐号的名称 ## -s:后面接Shell的实际档案,使如/bin/bash或/bin/csh ## -u:后面接UID数字啦!即/etc/passwd第三栏的资料 ## -L:暂时将使用者的密码冻结,让他无法登入。 ## -U:恢复使用者的密码 ***chown -R 是使边同目录下的所有文件的使用者/群组属性都一起变更的意思 ####userdel #使用者的数据有:使用者帐号/密码相关参数:/etc/passwd,/etc/shadow 使用者群组相关参数:/etc/group,/etc/gshadow 使用者个人档案数据:/home/username,/var/spool/mail/username ## userdel [-r] username ## -r:连同使用者的家目录也一起删除###############普通用户使用的帐号指令
###finger可以查阅很多使用者相关的信息,大部分是在/etc/passwd这个档案里的 ##finger [-s] username #* -s:仅列出使用者的帐号、全名、终端机代号与登入时间等等 #* -m:列出与后面接的几点号相同者,而不是得用部分比对###chfn 有点像 change finger的意思!
##chfn [-foph] [帐号名] #* -f:后面接完整的大名 #* -o:你办公室的房间号码 #* -p:办公室的电话号话 #* -h:家里的电话号码 ###chsh 也就是change shell的简写 ##chsh [-ls] #* -l:列出目前系统上面可用的shell,其实就是/etc/shells的内容 #* —s:设定修改自己的Shell ########群组 ###groupadd ##groupadd [-g gid] [-r] 群组名称 #* -g:后面接某个特定的GID,用来直接给予某个GID #* -r:建立系统群组与/etc/login.defs内的GID_MIN有关 #* 修改/etc/group;/etc/gshadow ###groupmod ##groupmod [-g gid] [-n group_name] 群组名 ###groupdel 群组名 ###gpasswd群组管理员功能 #如果系统管理员太忙碌了,导致某些帐号想要加入某个项目时找不到人帮忙!这个时候可以建立[群组管理员]!群组管理员就是让某个群组具有一个管理员,这个群级管理员可以管理哪些号可以加入/移出该群组! ##gpasswd groupname:表示给予groupname一个密码/etc/gshadow ##gpasswd [-A user……][-M user3,……] groupname #* -A:将groupname的主控权交由后面的使用者管理 #* -M:将某些几点号加入这个群组当中! ##gpasswd [-rR] groupname #* -r:将groupname的密码移除 #* -R:将groupname的密码失效,所以newgrp就不能使用了 ##群组管理员可以如下使用 ##gpasswd [-ad] user groupname #* -a:将某位使用者加入到groupname这个群组当中 #* -d:将某位使用者移除出groupname这个群组当中###########使用者身分切换
### su [-lm] [-c 指令] [username] #* - :单纯使用 - 代表使用login-shell的变量档案读取方式来登入系统;若使用者名称没有加上去,则代表切换为root的身份 #* -l:与-类似,但后面需要加欲切换的使用者帐号!也是login-shell的方式 #* -m:-m与-p是一样的, 表示[使用目前的环境设定,而不读取新使用者的设定档] #* -c:仅进行一次指令,所以-c后面可以加上指令 ###sudo [-b] [-u 新使用者帐号] #* -b:将后续的指令放到背景中让系统自行执行,而不与目录的shell产生影响 #* -u:后面可以接欲切换的使用者,或无此项则代表切换身份为root###########visudo 与/etc/sudoers
## root ALL=(ALL) ALL ##使用者帐号 登入者的来源主机名称=(可切换的身份) 可下达的指令 ##%wheel ALL=(ALL) ALL ##在最左边加上%,代表后面接的一个[群组之意] ##%wheel ALL=(ALL) NOPASSWD:ALL ##表示在使用sudo时不需要输入密码####/sbin/nologin
###通过编辑/etc/nologin.txt来设置当/sbin/nologin用户登陆时的提示 ############PAM模块 ###/etc/pam.d/passwd # auth include system-auth # account include system-auth # password include system-auth # 验证类别 控制标准 PAM模块与该模块的参数 ###include 表示请呼叫后面的档案来作为这个类别的难证,所以上述的每一行都要重复呼叫/etc/pam.d/system-auth那个档案来进行验证 ###难证类别: #auth是authentication的缩写,所以这种类虽主要用来检验使用者的身份验证,这种类别通常是需要密码来检验的,所以后续接的模块是用来检验使用者的身份 #account则大部分是在进行authorization(授权),这种类虽则主要在检验使用者是否具有正确的命名用权限 #session是会议期间的意思,所以session管理的就是使用者在这次登入期间,PAM所给予的环境设定。这个类别通常用在记录使用者登入与注销时的信息! #password!这种类别主要在提供验证的修订工作,举例来说,就是修改/变更密码啦 ####第二字段验证的控制旗标(control flag) #reuqired:此验证若成功则带有success的标志,若失败则带有failure的标志,但不论成功或失败都会继续后续的验证流程。由于后续的难流程可以继续进行,因此相当有得于资料的登录,这也是PAM最常用required的原因 #requisite:若验证失败则立刻回报原程序failure的标志,并终止后续的验证流程。若验证成功则带有success的标志并继续后续的验证流程。这个项目与required最大的差异,就在于失败的时候还要不要继续验证下去。由于##requisite是失败就终止,因此失败时所产生的PAM信息就无法透过后续的模块来记录 #sufficient:若验证成功就立刻回传success给原程序,并终止后续的验证流程:若验证失败则带有failure标志并继续后续的验证流程。这与requisits刚好相反 #optional:这个模块控件大多是在显示讯息而已,并不是用在验证方面的 #####查询使用者 ##w who ##last ##lastlog查看每个几点号的最近登入的时音/var/log/lastlog #####使用者对谈 #write 使用者帐号 [使用者所在终端接口] #mesg n拒绝接受信息,但不能拒绝root #mesg y允许接受信息 #wall "string" 对所有系统上面的使用者传送简讯#####帐号检查工具
##pwck:这个指令在检查/etc/passwd这个帐号设定文件内的信息,与实际的家目录是否存在等信处,还可以比对/etc/passwd /etc/shadow的信息是否一致 ##grpck:相应的群组检查命