1.1 用户管理
增加用户的命令: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的作用是,当删除用户时,把用户的家目录也删除掉。
1.2 用户组管理
groupadd:新增组,其格式为:groupadd [ -g GID ] groupname。
如果不加参数-g,系统会以默认的gid创建组,gid从1000开始,如果加参数-g,则可以自定义组的gid。
groupdel:删除组,其格式为:groupdel groupname。
如果一个组中有账户,则只有组成员为空时,才能删除组。
1.3 usermod命令
id username 可以查看用户的属性。
更改用户属性的命令:usermod,其格式为usermod [ -u UID ] [-g GID] [ -d HOME ] [ -s ] username。
其中,参数-u、-g、-d、-s的用户跟命令useradd的用户一样。
此外,命令usermod还有一个参数-G,表示为扩展组,此参数可以给一个用户设定多个组。
一个用户可以属于多个组,但一个GID只能对应一个组。
1.4 用户密码管理
账户创建后,默认是没有密码的,密码字段会以“!!”显示,只有设置好密码后,才可以登录系统。
密码设定的一些规则:
(1)长度大于10个字符;
(2)密码包含大小写字母、数字、特殊字符*、&、%等;
(3)不规则性(不要出现linux、love、123456等类似的);
(4)密码中不要带有自己的名字、电话、生日等信息。
passwd,更改用户密码(为用户设置密码),其格式为passwd [ username ]。如果命令后面不加用户名字,则是为自己设定密码。
密码设定后,密码字段则不会以“!!”显示:
-l:锁定用户密码。(usermod -L username 也可以锁定用户密码)
-u:解锁用户密码。(usermod -U username 也可以解锁用户密码)
此外,passwd --stdin username 也可以更改用户的密码:
1.5 mkpasswd命令
命令mkpasswd用于生成密码。
Linux默认是没有这个命令的,我们需安装一个expect软件包:
mkpasswd默认生成9位数密码,可以通过参数-l n 来生成n位数密码:
1.6 su命令
su命令,用于切换用户。其格式为:su [ - ] username。
加“-”后,会切换到切换用户的家目录下
而不加“-”,则路径还是在root家目录下。
su还可以以指定用户的身份去执行一条命令:su - -c “touch /tmp/zhangjin.py” zhangjin
1.7 sudo命令
su命令切换到其他用户,前提是我们要知道root的密码。那么,既然我们已经知道了root用户的密码,也就可以直接用root用户的密码去登录root了,这就存在很大的安全隐患。为了解决这个问题,于是又有了sudo命令。使用sudo命令的作用在于执行一个只有root才能执行的命令,但是需要需要输入用户自己的密码。
普通用户想要使用sudo命令,需要root预先设定,我们可以使用visudo命令编辑配置文件 /etc/sudoers。
上图中的root (指定哪个用户拥有sudo权限) ALL(所有的主机)=(ALL)(获取哪个用户的身份) ALL(可以使用的sudo的命令有哪些)
如图,增加t第93行内容:
然后我们验证下zhangjin帐户的权限:
如果想把很多用户都设置为具有sudo权限,可以这样设置:
把# %wheel ALL=(ALL) ALL前面的注释#去掉,让这一行生效即可。然后把需要设置sudo权限的所有用户都加入到wheel组中。
1.8 限制root远程登录
sshd服务的配置文件为 /etc/ssh/sshd_config ,在Linux中是默认允许root用户通过ssh远程登录的,如果我们想设置不允许root用户远程登录Linux,可以通过修改配置文件 /etc/sshsshd_config 来实现。
具体方法是,在此文件中查找#PermitRootLogin yes,然后 修改为PermitRootLogin no,保存好配置文件后,再重启ssh服务即可: