Linux 管理员在工做中,至关重要的一环就是“账号管理”。由于整个系统都是你在管理,而且全部通常用户的账号申请都必须经过你的协助才行!因此就必需要了解一下如何管理好一个服务器主机的用户与用户组。在管理Linux主机的账号时,咱们必须先来了解一下Linux究竟是如何辨别每个用户的。shell
虽然咱们登陆Linux主机的时候,输入的是咱们的账号,可是其实Linux主机并不会直接认识你的“用户名称”的,它仅认识ID(ID就是一组号码)。因为计算机仅认识 0和1,因此主机对于数字比较有概念的;至于账号只是为了让人们容易记忆而已。而你的ID与账号的对应关系就在/etc/passwd当中。
1、Linux账户、组管理相关的文件
用户的属性信息文件
/etc/passwd;
影子口令、密码文
件
/etc/shadow;
用户组的属性信息文件
/etc/group;
用户组的密码文件
/etc/gshadow;
新用户的配置文件 /etc/skel;
解释账户相关文件的组成及各段内容的含义:
一、用户属性信息文件的组成
以root用户为例:
[root@vm04 ~]# cat
/etc/passwd
| grep root
root:x:0:0:root:/root:/bin/bash # 用户的属性信息文件共分为七段组成,每段之间用“:”号隔开,下面咱们介绍一下每段内容的含义:
account:password:UID:GID:GECOS:directory:shell
用户名:就是登陆系统的账号,用户名用来对应UID。
密码占位符:就是登陆账号的密码,这个文件全部程序均可以读取,很容易形成密码数据被窃取,所以将这个字段的密码放到了/etc/shadow文件中,因此会看到是一个"x"。
UID:用户ID
。
GID:组ID
。
注释信息:用户的描述信息
。
家目录:用户的主目录
。
shell:用户默认使用的shell
。
二、影子口令、密码文件的组成
以root用户为例:
[root@vm04 ~]# cat
/etc/shadow
| grep root
root:$1$ChrNrker$s.W4jjFr.lxVt9Fb7FStf1:15879:0:99999:7::: #
影子口令、密码文
件
共分为九段组成,
一样以“:”号分隔,下面咱们介绍下每段内容的含义:
login name : encrypted passwd : date of last password change : minimum password age : maximum password age : password warning period : password inactivity period : account expiration date : reserved field
登陆名:因为密码也须要与账号对应,因些,shadow文件的第一栏,便是咱们的登陆账号。
密码:这个字段内的数据才是真正的密码,并且是通过编译的密码(加密)。 此文件的默认权限通常为[-rw-------]或[-r--------],只有root账号才能够查看此文件,说了这些,你应该知道这个文件的重要性了吧。
最近一次修改密码的时间:这个字段记录了[更改密码的日期]时间。
密码最短使用期限:这个字段记录了,账号密码在最近一次被修改后通过多长时间(几天)后能够再次修改密码操做。若是为0,表示随时能够对密码进行修改。
密码最长使用期限:这个字段记录了,指定最近一次修改密码后,在多少天以后必须再次修改密码才行,不然此账号密码将会[变为过时特性]。
密码到期警告天数:当账号密码有效期快要到期的时候,系统会根据这个字段的设置,发出[警告]信息,提示用户尽快修改密码。
账号的非活动天数:当密码有效期,过时后用户仍然没有修改密码,那该密码就算过时了,虽然过时了,但该账号还能够用来进行其它工做,如:bash等。
账号过时期限:这个字段表示,这个账号在此字段规定的日期以后,将没法再使用。
预留段:最后一个字段为保留字段,如之后有新增功能将会使用此字段。
三、用户组的属性信息文件组成
以root用户为例:
[root@vm04 ~]# cat
/etc/group
| grep root
root:x:0:root #
用户组的属性信息文件共分为四段级成,
一样以“:”号分隔,下面咱们介绍下每段内容的含义:
group_name:passwd:GID:user_list
组名:组名就不须要多解释了,就是组的名称。
密码占位符:群组的密码,一般不须要设定,一样,密码已经被移到到/etc/gshadow文件中,所以,这个字段存在一个“x”。
GID:组ID
。
用户列表:以此组为额外组的用户列表,用户间用逗号分隔
。
四、用户组的密码文件组成
以root用户为例:
[root@vm04 ~]# cat
/etc/gshadow
| grep root
root:::root #
用户组的密码文件共分为四段组成,
一样以“:”号分隔,下面咱们介绍下每段内容的含义:
group name:encrypted passord:administrators:members
组名:不须要在作解释了,呵呵,你懂的。
密码占位符:组的密码,开头为“!”表示无合法密码。
群组管理员账号:就是让群组具备一个管理员,管理员能够管理那些账号能够加入/移出该群组。
该群组的所属账号:组成员,若是有多个成员,用“,”(逗号)分割。
五、新用户的配置文件
建立新用户的时候,是将/etc/skel文件夹中文件拷贝新建用户家目中的。
2、Linux 账户、组管理的相关命令
用户管理的相关命令:useradd、passwd、usermod、userdel、chage
组管理的相关命令:groupadd、groupmod、groupdel、gpasswd
下面咱们分别介绍每一个命令的基本用法:
一、useradd 命令:
格式:useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM] [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者帐号名
【选项与参数】
-u :后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个帐号
;
-g :后面接的那个组名,就是该群组的 GID 会被放置到 /etc/passwd 的第四个字段内
;
-G :后面接的组名则是这个帐号还能够加入的群组。 这个选项不参数会修改 /etc/group 内的相关资料
;
-M :强制,不要创建用户家目录!(系统帐号默认值);
-m :强制,要创建用户家目录!(通常帐号默认值)
;
-c :这个就是 /etc/passwd 的第五栏的说明内容,能够随便咱们设置描述信息;
-d :指定某个目录成为家目录,而不要使用默认值。务必使用绝对路径;
-r :创建一个系统的帐号,这个帐号的 UID 会有限制 (参考 /etc/login.defs)
;
-s :后面接一个shell ,若没有指定则默认是 /bin/bash
;
-e :后面接一个日期,格式为『YYYY-MM-DD』此项目可写入 shadow 第八字段, 亦即帐号失效日的账号设定;
-f :后面接 shadow 的第七字段项目,指定密码是否会失效。0为马上失效, -1 为永远不失效(密码只会过时而强制于登入时从新指定而已)
;
例:建立susu账号,并指定家目录为:/testdir/susu
# mkdir /testdir
# useradd -d /testdir/susu susu
二、passwd 命令:
格式:passwd [-l] [-u] [--sdtin] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 日期] 帐号 <==root 功能
【选项与参数】
--stdin:能够经过来自前一个管道的数据,做为口令输入,此参数对shell script有很大帮助
;
-l:是Lock的意思,会将/etc/shadow第二栏最前面加上叹号“!”使密码失效
;
-u:与-l相对,是Unlock的意思
;
-n:后面接天数,shadow的第4字段,密码最短使用天数,指定天数内不可修改密码;
-x:后面接天数,
shadow的第5字段,
最长使用天数,指定天数内必须修改密码;
-w:
后面接天数,
shadow的第6字段,
密码过时前
警告天数;
-i:后面接日期,
shadow的第7字段,密码失效的日志,
非活动时长;
例:给test_user用户设置密码:
# echo "password-string" | passwd --stdin susu
三、usermod 命令:
格式:usermod [-cdegGlsuLU] username
【选项与参数】
-u UID:后面接UID数字,即/etc/passwd文件中第3段的内容
;
-g GID:后面接GID数字,
即/etc/passwd文件中第4段的内容
;
-a -G
GID: -G修改额外组时会覆盖原有的额外组,同时使用-a选项则能保留原有的额外组;(append,追加)
-c COMMENT:后面接账号的说明,
即/etc/passwd文件中第5段的内容,能够加入一些账号的描述信息
;
-s /PATH/TO/SHELL:后面接shell的实际文件,例如:/bin/bash或/bin/csh
-l NEW_NAME: 后面接账号的名称,改用户的登陆名称,
即/etc/passwd文件中第1段的内容
;
-m -d
/path/to/somewhere:-d只修改家目录指向,同时使用-m选项则可实现将原来家目录移动为新的家目录;
-L:暂时将用户的口令冻结,让他没法登陆,其实仅改/etc/shadow的密码栏
;
-U:将/etc/shadow密码樯的(叹号)“!”取消,解冻
;
例:将susu用户加wheel、redha额外组,而后在将此用户加入centos额外组
# usermod -a -G wheel susu ; usermod -a -G redhat susu ; usermod -a -G centos susu
四、userdel 命令:
格式:userdel [ -r ] username
【选项与参数】
-r:连同用户的家目录一块儿删除
;
例:删除test_user用户,删除用户的同时一并将家目录也删除
# userdel -r susu
五、chage 命令:
格式:chage [-ldEImMW] username
【选项与参数】
-l:列出该账号的详细密码参数
;
-d :后面接日期,修改 shadow 第三字段(最近一次更改密码的日期),格式 YYYY-MM-DD
;
-E :后面接日期,修改 shadow 第八字段(帐号失效日),格式 YYYY-MM-DD
;
-I :后面接天数,修改 shadow 第七字段(密码失效日期)
;
-m :后面接天数,修改 shadow 第四字段(密码最短保留天数)
;
-M :后面接天数,修改 shadow 第五字段(密码多久须要进行变动)
;
-W :后面接天数,修改 shadow 第六字段(密码过时前警告日期)
;
例:将susu用户密码警告日期修改成5天
# chage -W 5 susu
六、groupadd 命令:
格式:groupadd [-g gid] [-r] 组名
【选项与参数】
-g :后面接某个特定的 GID,用来直接给予某个 GID
;
-r :创建系统群组,与 /etc/login.defs 内的GID_MIN有关
;
例:建立testgrp组,并将组ID指定为1000
# groupadd -g 1000 testgrp
七、groupmod 命令:
格式:groupmod [-g gid] [-n group_name] 群组名
注意:不要随便更改GID,容易形成系统资源错乱。
【选项与参数】
-g :修改既有的 GID 数字;
-n :修改既有的组名
;
例:将testgrp组的GID修改成1050,而后再将组名改成testgrp1
# groupmod -g 1050 testgrp
# groupmod -n testgrp1 testgrp
八、groupdel 命令:
格式:groupdel [groupname]
例:删除testgrp1组
# groupdel testgrp1
九、gpasswd 命令:
格式:gpasswd [option] group
【选项与参数】
-A :将 groupname 的主控权交由后面的使用者管理(该群组的管理员)
;
-M :将某些帐号加入这个群组当中
;
-r :将 groupname 的密码删除
;
-R :让 groupname 的密码栏失效
;
-a :将某位使用者加入到 groupname 这个群组当中
;
-d :将某位使用者移除出 groupname 这个群组当中
;
例:将testuser1用户加入到testgrp1额外组
# gpasswd -a testuser1 testgrp1
Linux用户与组管理相关的文件说明及经常使用的命令就简单介绍到这里了,若是想了解更多的用法,请man来帮忙吧。但愿能对你们有所帮助!