目录
账户的创建(useradd)
我们在登录系统时会输入账号与密码,所以建立一个可用的账号同样需要这两个数据
账号可以使用useradd来新建
密码则使用passwd这个命令设置
第一步:创建账号
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为永不失效(密码只会过期而强制与登录时重新设置而已)
使用useradd命令后,我们会发现系统其实已经帮我们规定好了很多的默认值:
- 在/etc/passwd里面建立一行与账户相关的数据,包括建立UID/GID/家目录等
- 在/etc/shadow里面将此账号的密码相关参数写入,但是尚未有密码
- 在/etc/group里面加入一个与账号名称一模一样的组名
- 在/home下面建立一个与账号同名的目录作为用户家目录,且权限为700
补充:我们可以在使用useradd命令时,可以加入-r选项用来创建系统账号,系统账号主要是用来执行系统所需服务的权限设置,所以系统账号默认都不会主动建立家目录
使用useradd建立用户账号时,其实会修改不少地方,而我们需要知道下面几个文件:
- 用户账号与密码参数方面的文件:/etc/passwd、/etc/shadow
- 用户用户组相关方面的文件:/etc/group、/etc/gshadow
- 用户的家目录:/home/账号名称
第二步:创建密码
使用useradd建立账号之后,在默认情况下,该账号是暂时被锁定的。也就是说,该账号是无法登录的,所以我们需要设置密码来激活账号
passwd 【--stdin】账号名称
passwd 【-l】【-u】【--stdin】【-S】【-n 日数】【-x 日数】【-w 日数】【-i 日期】账号
选项与参数:
--stdin:可以通过来自前一个管道的数据,作为密码输入,对shell脚本有帮助
-l:是Lock的意思,会将/etc/shadow第二栏最前面加上!使密码失效
-u:与-l相对,是Unlock的意思
-S:列出密码相关参数,即shadow文件内的大部分信息
-n:后面接天数,shadow的第四栏位,多久不可修改密码天数
-x:后面接天数,shadow的第五栏位,多久内必须要修改密码
-w:后面接天数,shadow的第六栏位,密码过期前的警告日期
-i:后面接日期,shadow的第七栏位,密码失效日期
stdin使用范例
理论上,密码最好符合如下要求:
- 密码不能与账号相同
- 密码尽量不要选用字典里面会出现的字符串
- 密码需要超过8个字符
- 密码不要使用个人信息,如身份证、手机号码等
- 密码不要使用简单的关系式,如1+1=2等
- 密码尽量使用大小写字符、数字、特殊字符的组合
密码上锁,使之无法登录:
密码开锁:
查看密码参数:
useradd参考文件
系统为什么会主动建立家目录?家目录内的数据来自于哪?为什么默认使用的shell是/bin/shell?为什么密码字段都已经规划好了?
因为这数据都来源于useradd参考文件
查看:
上面这些设置选项所实现的目的分别是:
CROUP=100
解释:新建账号的初始用户组使用GID为100,但我们发现我们的系统上并不是这样的,这是因为针对用户组的角度有两种不同的机制:私有用户组机制和公共用户组机制
私有用户机制:系统会建立一个与账号一样的用户组给用户作为初始用户组。这种用户组的设置机制会比较有保密性,这是因为用户都有自己的用户组,而且家目录权限将会设置为700(仅有自己可进入自己的家目录)。使用这种机制将不会参考GROUP=100这个设置值,发行版有RHEL、Fedora、CentOS等
共有用户组机制:就是以GROUP=100这个设置值作为新建账号的初始用户组,因此每个账号都属于users这个用户组,且默认家目录通常的权限都是drwxr-xr-x,由于每个账号都属于users用户组,因此大家都可以互相共享家目录内的数据,代表的发行版如SUSE等
HOME=/home
解释:用户家目录的基准目录
INACTIVE=-1
解释:密码过期后是否会失效的设置值
EXPIRE=
解释:账号失效的日期
SHELL=/bin/bash
解释:默认使用的shell程序文件名
SKEL=/etc/skel
解释:用户家目录参考基准目录 即用户家目录中的各项数据都是由此目录复制过去的
CREATE_MAIL_SPOOL=yes
解释:建立用户的mailbox(邮箱),邮箱目录在/var/spool/mail/下
UID/GID密码参数参考:/etc/login.defs
文件内容:
#使用者默认邮箱放置地址
MAIL_DIR /var/spool/mail
#权限掩码
UMASK 022
#家目录权限
HOME_MODE 0700
#密码需要重新修改的天数
PASS_MAX_DAYS 99999
#密码不可被修改的天数
PASS_MIN_DAYS 0
#密码需要修改期限前的警告天数
PASS_WARN_DAYS 7
#可登录账号(普通账户)的UID范围
UID_MIN 1000
UID_MAX 60000
#系统账号UID的范围
SYS_UID_MIN 201
SYS_UID_MAX 999
#子UID的范围
SUB_UID_MIN 100000
SUB_UID_MAX 600100000
SUB_UID_OCUNT 65536
#组GID范围
GID_MIN 1000
GID_MAX 60000
#系统组GID范围
SYS_GID_MIN 201
SYS_GID_MAX 999
#子GID的范围
SUB_GID_MIN 100000
SUB_GID_MAX 600100000
SUB_GID_OCUNT 65536
#密码加密的机制使用的是SHA512
ENCRYPT_METHOD SHA512
#删除用户时(userdel)是否删除用户的初始用户组(基本组)
USERGROUPS_ENAB yes
#在不加-M或-m时,是否主动建立使用者家目录
CREATE_HOME yes
HMAC_CRYPTO_ALGO SHA512
密码参数显示命令:chage
chage 【-ldEImMW】账号名
选项与参数:
-l:列出该账号的详细密码参数
-d:后面接日期,修改shadow第三栏位(最近一次修改密码的日期),格式YYYY-MM-DD
-m:后面接天数,修改shadow第四栏位(密码最短保留天数)
-M:后面接天数,修改shadow第五栏位(密码多久需要修改)
-W:后面接天数,修改shadow第六栏位(密码过期前警告日期)
-I:后面接天数,修改shadow第七栏位(密码失效日期)
-E:后面接日期,修改shadow第八栏位(密码失效日),格式YYYY-MM-DD
账号调整命令:usermod
usermod 【-cdegGlsuLU】username
选项与参数:
-c:后面接账号的说明,即/etc/passwd第五栏的说明栏,可以加入一些账号的说明
-d:后面接账号的家目录,即修改/etc/passwd的第六栏
-e:后面接日期,格式是YYYY-MM-DD也就是在/etc/passwd内的第八个栏位的内容
-f:后面接天数,为shadow的第七栏位
-g:后面接初始用户组,修改/etc/passwd的第四个栏位,亦即是GID的栏位
-G:后面接次要用户组,修改这个使用者能够支持的用户组,修改的是/etc/group
-a:与-G合用,可增加次要用户组的支持而非设置
-l:后面接账号名称,亦即是修改账号名称,/etc/passwd的第一栏
-s:后面接shell的实际文件
-u:后面接UID数字,即/etc/passwd第三栏的数据
-L:暂时冻结密码,使之无法登录(修改了/etc/shadow的密码栏)
-U:将/etc/shadow密码栏的感叹号拿掉,解锁
删除用户命令:userdel
此命令的目的在删除用户的相关数据,而用户的数据有:
用户账号/密码相关参数:/etc/passwd、/etc/shadow
用户组相关参数:/etc/group、/etc/gshadow
用户个人文件数据:/home/username、/var/spool/mail/username
userdel 【-r】username
选项与参数:
-r:连同使用者的家目录也一起删除
使用userdel的时机通常是你确定不要让该用户在主机上面使用任何数据了,因为该账号只是暂时不启用的话,可以将/etc/shadow里面的账号失效日期设置为0就可以让该账号无法使用