3.1 用户配置文件和密码配置文件
用户配置文件:/etc/passwd
以上图root开头行为例我们用“:”可以划分为7个部分:
1、root:用户名。用户名中的字符可以是大小写字母、数字、减号、点或下划线,不建议使用点、减号,容易造成混淆。
2、x:账户的密码。此处基于安全因素,全部用x代替。
3、0:用户标识号,即uid。
4、0:组标识号,即gid。
5、root:注释说明 ,通常记录该用户的一些属性,例如姓名、电话、地址等 ,可以用chfn命令来更改这些信息。
6、/root:用户的家目录,root用户的家目录就是/root,普通用户的家目录是/home/username。
7、/bin/bash:用户的shell,默认是/bin/bash,如果想建立一个不允许登录的账号,可以把该字段改为/sbin/nologin。
密码配置文件:/etc/shadow
我们还是以上图root开头行为例我们用“:”可以划分为7个部分:
1、用户名。
2、用户密码,该密码已经加密。
3、上次更改密码的日期。
4、要过多少天才可以更改密码,默认为0。
5、密码多少天后到期,即在多少天内必须更改密码,例如,当我们设置为10,则10天内必须要更改一次密码,不然将登陆不了系统。默认为99999,即永远不需要更改。
6、即账号的生命周期,表示账号在这个日期前可以使用,到期后账号将作废。
7、保留字段。
3.2 用户组管理
groupadd:新增组,其格式为:groupadd [ -g GID ] groupname。
如果不加参数-g,系统会以默认的gid创建组,gid从1000开始,如果加参数-g,则可以自定义组的gid。
groupdel:删除组,其格式为:groupdel groupname。
如果一个组中有账户,则只有组成员为空时,才能删除组。
3.3 用户管理
增加用户的命令:useradd,其格式为:useradd [ -u UID ] [ -g GID ] [ -d HOME ] [ -M ] [ -s ] username。
参数u表示自定义UID。
参数g表示使新增的用户属于已经存在的某个组,后面可以跟组id,也可以跟组名。
参数d表示自定义用户的家目录 。
参数M表示不建立家目录。
注意:参数-M的作用只是不创建此用户的家目录,但/etc/passwd中仍有此用户的家目录字段,但用ls命令查看,会提示我们目录不存在。
参数s表示自定义shell。
删除用户的命令:userdel,其格式为:userdel [ -r ] username。参数-r的作用是,当删除用户时,把用户的家目录也删除掉。
3.4 usermod命令
id username 可以查看用户的属性。
更改用户属性的命令:usermod,其格式为usermod [ -u UID ] [-g GID] [ -d HOME ] [ -s ] username。
其中,参数-u、-g、-d、-s的用户跟命令useradd的用户一样。
此外,命令usermod还有一个参数-G,表示为扩展组,此参数可以给一个用户设定多个组。
一个用户可以属于多个组,但一个GID只能对应一个组。
3.5 用户密码管理
账户创建后,默认是没有密码的,密码字段会以“!!”显示,只有设置好密码后,才可以登录系统。
密码设定的一些规则:
(1)长度大于10个字符;
(2)密码包含大小写字母、数字、特殊字符*、&、%等;
(3)不规则性(不要出现linux、love、123456等类似的);
(4)密码中不要带有自己的名字、电话、生日等信息。
passwd,更改用户密码(为用户设置密码),其格式为passwd [ username ]。如果命令后面不加用户名字,则是为自己设定密码。
密码设定后,密码字段则不会以“!!”显示:
-l:锁定用户密码。(usermod -L username 也可以锁定用户密码)
-u:解锁用户密码。(usermod -U username 也可以解锁用户密码)
此外,passwd --stdin username 也可以更改用户的密码:
3.6 mkpasswd命令
命令mkpasswd用于生成密码。
Linux默认是没有这个命令的,我们需安装一个expect软件包:
mkpasswd默认生成9位数密码,可以通过参数-l n 来生成n位数密码:
3.7 su命令
su命令,用于切换用户。其格式为:su [ - ] username。
加“-”后,会切换到切换用户的家目录下
而不加“-”,则路径还是在root家目录下。
su还可以以指定用户的身份去执行一条命令:su - -c "touch /tmp/zhangjin.py" zhangjin
3.8 sudo命令
su命令切换到其他用户,前提是我们要知道root的密码。那么,既然我们已经知道了root用户的密码,也就可以直接用root用户的密码去登录root了,这就存在很大的安全隐患。为了解决这个问题,于是又有了sudo命令。使用sudo命令的作用在于执行一个只有root才能执行的命令,但是需要需要输入用户自己的密码。
普通用户想要使用sudo命令,需要root预先设定,我们可以使用visudo命令编辑配置文件 /etc/sudoers。
上图中的root (指定哪个用户拥有sudo权限) ALL(所有的主机)=(ALL)(获取哪个用户的身份) ALL(可以使用的sudo的命令有哪些)
如图,增加93行
然后我们验证下zhangjin帐户的权限:
如果想把很多用户都设置为具有sudo权限,可以这样设置:
把# %wheel ALL=(ALL) ALL前面的注释#去掉,让这一行生效即可。然后把需要设置sudo权限的所有用户都加入到wheel组中。
3.9 限制root远程登录
sshd服务的配置文件为 /etc/ssh/sshd_config ,在Linux中是默认允许root用户通过ssh远程登录的,如果我们想不允许root用户远程登录Linux,可以通过修改配置文件 /etc/sshsshd_config 来实现,具体方法是,在此文件中查找#PermitRootLogin yes 修改为PermitRootLogin no,保存好配置文件后,再重启ssh服务即可: