本笔记由51码儿(www.51mar.com)提供


3.1用户配置文件和密码配置文件 用户配置文件/etc/passwd,每个用户信息占用一行,由冒号:分割为7段。 第一段:用户名。 第二段:早期用于存放用户密码,现在为x。 第三段:用户uid,root用户为0。 第四段:用户gid,root用户为0。 第五段:很多为空,表示的是用户的注释信息,没有实际作用。 第六段:用户的家目录,root用户为/root/,普通用户为/home/username 第七段:用户shell,若为/sbin/nologin,则不能登录;常见为/bin/bash。 密码配置文件/etc/shadow,每个用户密码信息占用一行,由冒号:分割为9段。 man shadow 查看详细信息。 第一段:用户名。 第二段:密码被加密后的字符串,不可反编译。相同的密码加密的结果不相同。 第三段:天数,距离1970.1.1的天数 第四段:密码在多少天之前不能被更改,默认为0,表示不受限制。 第五段:密码在多少天后到期,即多少天之内必须更改密码。 第六段:密码到期前多少天由系统发出警告,提醒用户密码将在多少天后到期。 第七段:账号的实效期限,表示密码已经到期,且未修改,再过多少天,该账号将不能用了。 第八段:账号的生命周期,表示账号在距离1970.1.1多少天之前可以使用。 第九段:保留字段,无实际意义。


3.2用户组管理 用户组文件/etc/group 用户组密码配置文件/etc/gshadow 以上配置文件分别都有一个备份文件,为原文件架一个-号。如/etc/gshadow-。当相应配置文件丢失时,可将备份文件复制过来使用。 groupadd GROUP 创建GROUP组。可使用-g参数,指定gid。自定义普通用户的gid>1000,如:Groupadd -g 1005 GROUPgroupdel GROUP删除空的GROUP组,若组内有用户,将不能被删除。


**3.3用户管理 ** useradd username 创建用户。 使用-u参数,指定uid。 使用-g参数,指定gid。自定义普通用户的,uid>1000,gid>1000。 使用-d参数,指定用户家目录。 使用-M参数,创建用户的同时,不创建家目录。 若不指定uid,系统将自动从1000往上加,儿gid将跟随uid。 userdel username 删除用户,不会删除用户家目录。加-r选项,将删除用户家目录。 useradd<=>adduser


3.4usermod命令 usermod 参数 username 指定用户的参数。 参数: -u UID 指定uid为UID。 -g GID 指定gid为GID。 -G GROUP1 GROUP2 指定扩展组,一个用户可以属于多个组,但只能有一个gid。可同时指定多个扩展组。 -d HOME PATH 指定家目录为HOME PATH。 *-s SHELL PATH *指定用户shell为SHELL PATH。


3.5用户密码管理 root用户: passwd 更改密码,保存于/etc/shadow的第二段。 在/etc/shadow中,若用户的第二段为!!,说明用户密码为空,不能登录;若为*,说明用户密码被锁定,也不能登录。 passwd -l username 锁定用户。锁定之后,密码位前面将增加!!。 passwd -u username 解锁用户。解锁之后,!!消失。 usermod -L username 锁定用户。锁定之后,密码位前面将增加!。 usermod -U username 解锁用户。解锁之后,!消失。 passwd --stdin username 更改用户密码。不需要输入原密码。 echo -e “123\nsss” -e 参数,使后面的\n作为换行符使用。若没有-e参数,将直接显示:

123\nsss

添加-e参数后,将显示:

123
nsss

\n 换行 \t Tab


3.6mkpasswd命令 mkpasswd 位于包expect,先安装yum install -y expect。用于生成随机字符串。 -l LEN 指定长度LEN。 -s N 指定特殊符号个数N。


3.7su命令 su - username 彻底切换用户,包括用户配置文件等。加-是彻底切换。不加- su - -c “command” username 指定用户执行命令。 su - 普通用户切换到root用户。 若切换到的用户没有指定家目录和shell,则将显示如-bash-4.2$,解决方法: 切换到root用户。 id username 查看相应用户的属主与属组。 mkdir /home/username 创建相应的家目录。 但此时由于家目录下没有配置文件,同样无法打开用户shell。系统有模板配置文件,放置于/etc/skel中,将所有配置文件拷贝到用户家目录下。并更改家目录的所有者与所属组为刚才id所查到的属主与属组。此时再切换到该用户,将能够正常显示。


3.8sudo命令 使用sudo可以执行只有root用户才能执行的命令。 visudo 编辑相关配置文件/etc/sudoers.tmp。需要先安装sudo包(yum install -y sudo),才能使用visudo命令。 '''

Allow root to run any commands anywhere

root ALL=(ALL) ALL ''' 用户名 在哪里=(拥有什么用户身份) 命令名(绝对路径,多个命令逗号分隔。) 其中,用户名,也可以是用户组,即可以针对一组用户进行限制。

## Allows people in group wheel to run all commands
%wheel		ALL=(all)			ALL

如果不要求输入密码,则需要在命令名前面加上NOPASSWD:

Root		ALL=(ALL)		NOPASSWD:ALL

主机、用户、命令均可以在visudo编辑文件中设置别名。 主机别名:

## Host Aliases
# Host_Alias		FILESERVERS = fs1, fs2
# Host_Alias		MAILSERVERS = fs1, fs2

用户别名:

## User Aliases
# User_Alias ADMINS = jsmith, mikem
## Command Aliases

命令别名:

## Networking
# Cmnd_Alias NETWORKING=/sbin/route, /sbin/ifconfig

可以在设置sudo命令中使用这些别名。


3.9限制root远程登录 使用root登录不安全,可限制root远程登录(无法限制本地登录)。 配置文件/etc/ssh/sshd_config

PermitRootLogin	yes/no

将该项设置为no。 systemctl restart sshd.service 重启服务。此时用putty、Xshell等将无法登录root用户。