用户和组管理
1. 用户配置文件和密码配置文件
eg. /etc/passwd
每一个用户一行,新建的用户会显示在底端,然后由冒号:分割为了七段
第一段是用户名,第二段表示密码,第三段表示UID,第四段是GID,第五段表示用户的注释信息没有实质作用,第六行表示用户的家目录,第七行表示用户的shell(/bin/bash就是可以登录的用户;/sbin/nologin/是不能登陆的)
/etc/shadow (专门用来存密码)-和用户的文件是一一对应的
各个段的含义
如何设置用户密码
2. 用户组管理
eg. /etc/group
cat /etc/gshadow
Note:观察发现,当ls命令式会看到各个文件分别有一个x- (红框)文件在一起,这是起到备份密码的作用,当不小心删除用户或者shadow/gshadow文件时,可以copy x-(红框)文件恢复
组创建 / 组删除
grp 1
grp 1 with ID of 1005 (在centos7里id要在1000+)
&&&&
groupdel grp1 (只要组内有任何一个成员,你就不能删除这个组)
3. 用户管理
创建用户是同时指定用户ID,以及所属组ID
在指定用户以及所属组ID的同时设置家目录以及shell
创建用户时不创建用户的家目录
根据下图显示如果不指定的话,grpid会随着uid依次增加,如果遇到重复grpid时,随着uid的增加grpid会跳过重复的grpid+1
&删除用户
userdel user8
删除user的时候并不会删除user的家目录(用户的家目录留给管理员,以免误删里面文件)
如何在删除用户的时候直接删掉家目录
userdel -r user7
3.1 Usermod
usermod 命令:更改用户属性的命令
用户的UID/GID 的更改
usermod -u/-g 111 username
用户的目录以及shell的更改
usermod -d /home/123123 username 用户目录更改
usermod -s /sbin/nologin username 用户shell更改
usermod -L username 锁定用户 锁定用户
useradd -G grp2 fred 扩展组
Note, id username 此命令可以查询每个用户的uid gid 以及组
通过以下命令表明,fred 不仅属于1000组还属于1005组(扩展组),如果使用同命令G再次添加扩展组时,会替换之前的扩展组
如何同时添加多个扩展组
4. 用户密码管理
如果用户有密码的话就会有加密的字符串,如果没有密码的话,就会是!!
当密码位表示为!或者*均表示空密码,密码被锁定不能用并且不能被登录
锁定用户/解锁用户 passwd -l/-u username(lock/unlock)
当然也可以用usermod锁定用户 user -L username, 解锁是user -U username
用户锁定后就会出现!!
给一个用户设定密码
passwd --stdin username
eg. 通过管道服务把前面命令的结果直接传递给后面的命令
echo "111222" | passwd --stdin username
echo -e 表示换行服务, \表示换行符号,如下
*stdin 同理于 passwd username, 但是passwd username 需要提示两次来确认密码的更改,这时可以用上述 echo -e 以及管道命令,一行输入便可以更改,如下:
mkpasswd命令
生成密码的工具,此命令可以随机生成字符串作为密码, 要通过 yum install -y expect 先安装
常用语写shell脚本是批量创建用户随机生成密码并导出的时候
5. SU & SUDO
5.1 SU命令
用于用户间的切换
su - username & su uername(不加-的时候你会发现你当前目录还是在之前用户下)
&
同时在SU也可以以用户身份去执行命令
su - -c "touch /tmp/fred.111" username
当然也可以用户之间切换如下(鉴定故障的原因为我们之间锁定了用户)
如下图,用户切换后会产生的是-bash(行开头)而非[email protected],表示user5家目录不存在,并且没有配置文件
Solutions:
首先在root创建/home/user并更改所有者以及所属组到user5下,对于配置文件的添加,要从系统配置文件skel中拷贝cp /etc/skel/.bash*(*符号是统配,表示所有以bash靠头的文件),并设置所有者和所有组
Note: .bash都是配置文件
$!上一条能命令的最后一个参数
$?上一条命令的执行结果
5.2 SUDO命令
通常情况下是给普通用户授权root的身份
首先要进入visudu下进行更改
指为了让fred这个用户拥有root这个身份去执行XX命令(etc cat,ls,mv)
在visudo会自动排查语法错误,如下
再次进入编辑页面后先“:ser nu” 来查找错误行,确定command下用绝对路径并且用“, ”分开
通过以上设置,本没有ls权限的fred用户,在sudo命令下就可以有ls权限,cat mv同理
同样赋予user5此权限并不设置密码
在visudo里面也可以设置别名
Cmnd_Alias Fred_CMD = /usr/bin/ls, /usr/bin/mv, /usr/bin/cat
关于用户组的用法
6. 允许、限制root远程登录
将fred用户移入设置无密码登入root中
如何限制root远程登录
首先进入 vi /etc/ssh/sshd_config更改远程登录permission
然后重启服务 systemctl restart sshd.service