用户和组管理

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