linux用户和组
一、用户和组的定义
1、为什么要引入用户和组
1.1、用户和组为linux系统里的资源管控服务的--》谁能访问,谁不能访问
1.2、资源管控:文件的访问、读取、执行等操作,用户的身份会嵌入到进程里,内核对进程进行限制
二、用户和组的相关文件
1、/etc/passwd–>存放用户信息的
1.1、各个字段的解释
字段1:用户账号的名称
字段2:用户密码字符串或者密码占位符,但是后来放到/etc/shadow
字段3:用户账户的UID号
字段4:所属基本组账号的GID号
字段5:用户描述信息
字段6:家目录
字段7:登录shell信息
1.2、文件里的x密码占位符的作用:如果有x就表示去检查/etc/shadow文件的密码
如果没有x,就直接登录,不需要密码验证,这种方式只能是本地登录,远程登录不行
1.3、用户的shell类型
/sbin/nologin --》这个用户是不能用来登录系统的
/bin/bash --》默认的用户shell--》正常的shell
2、/etc/shadow–》存放用户密码的
!! 说明没有设置密码
* 也是没有设置密码
密码字段前面加一个!号或者两个!!号,都是表示这个用户被禁用了
3、/etc/shadow-和/etc/passwd- --》是passwd和shadow的备份文件,总是和源文件差一次操作,可以是新建也可以是删除
4、/etc/login.defs 用户初始化属性设置文件
定义邮箱,密码日期、长度,是否创建家目录,
删除用户的时候,如果对应的组里没有成员了,将这个组也删除
5、/etc/skel 用户环境默认设置文件:用来初始化用户的环境变量和函数、别名的
5.1、家目录里的默认文件都是从/etc/skel目录下拷贝过来的,useradd新建用户的时候,会将/etc/skel目录下的所有文件拷贝到用户的家目录下
5.2、相关默认文件的作用
.bash_profile:用户每次登录时执行 -->去执行.bashrc,输出PATH变量为全局变量
.bashrc:每次进入新的bash环境时执行 --》去执行/etc/bashrc ,里面了很多的函数、环境变量、别名等
.bash_logout:用户每次退出登录时执行 --》当用户注销的时候,会执行这个脚本里的命令
.bash_history:记录存放上次注销前使用的命令 -->我们登录linux期间用过的命令
5.3、启动bash的时候有两种情况:
1.登录bash
输入用户名和密码登录linux系统的时候产生的bash
初始化需要执行的脚本:
/etc/profile
~/.bash_profile -->~.bashrc -->/etc/bashrc
2.非登录bash
直接输入bash命令,产生的bash
初始化脚本:
~/.bashrc -->/etc/bashrc
6、/var/spool/mail -->创建一个用户是会在这下面创建一个同名的文件
用户和组的相关命令
1、useradd:新建用户
相关的选项:
-g 主要组
-G 次要组
-u 指定uid号
-d 指定用户放的目录,默认是家目录
-s 指定用户登录的shell
-c 指定注释描述信息
-r 新建系统用户(程序用户),不会有新建家目录
2、usermod:修改用户–》选项和useradd的用法一样
3、userdel:删除用户–》一般和 -r 选项搭配使用,连同家目录和邮箱一起删除
4、groupadd:新建组
5、groupmems 对组成员进行修改,可以添加和删除
groupmems -g 组名 -a 用户名 -->往这个组里添加用户
groupmems -g 组名 -l 查看这个组里的用户
6、groupmod:修改组
相关的选项:
-g 修改gid
-n 指定新的组名
[root@kafka01 lianxi]# groupmod -g 6000 sanle
[root@kafka01 lianxi]# tail -n 1 /etc/group
sanle:x:6000:
[root@kafka01 lianxi]# groupmod -n sanle2 sanle
groupmod: group 'sanle2' already exists
[root@kafka01 lianxi]# groupmod -n sanle10 sanle
[root@kafka01 lianxi]# tail -n 1 /etc/group
sanle10:x:6000:
7、groupdel:删除组
8、passwd
8.1、交互式设置密码:
[root@xiaoliu lianxi]# useradd liang
[root@xiaoliu lianxi]# passwd liang
更改用户 liang 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
8.2、非交互式设置密码–》写脚本使用:
[root@xiaoliu lianxi]# echo 123|passwd liang --stdin
更改用户 liang 的密码 。
passwd:所有的身份验证令牌已经成功更新。
8.3、相关选项
-d :清除密码
[root@xiaoliu lianxi]# cat /etc/shadow|grep liang liang:$6$nLift5EvT0TqMh2U$4j1w/33sEcUwldkzAKiyGc1EUSktJWz91QC7bWvKpmReop4R3I3Wp0IOroZYM6jZB9D1qA8x/WTOBOLniGo6k.:19075:0:99999:7:::
[root@xiaoliu lianxi]# passwd -d liang 清除密码--》本质上是去shadow文件里删除密码字段的内容
清除用户的密码 liang。
passwd: 操作成功
[root@xiaoliu lianxi]# cat /etc/shadow|grep liang
liang::19075:0:99999:7:::
-l:锁定用户
usermod禁用用户的时候,在shadow文件里的密码字段加1个!
passwd禁用用户的时候,在shadow文件里的密码字段加2个!
[root@xiaoliu lianxi]# passwd -l liang
锁定用户 liang 的密码 。
passwd: 操作成功
[root@xiaoliu lianxi]# cat /etc/shadow|grep liang
liang:!!:19075:0:99999:7:::
-u:取消锁定
-S:查看状态
[root@xiaoliu lianxi]# passwd -S chenlin
chenlin PS 2022-03-27 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
空密码是不允许远程ssh登录的,但是可以本地登录
8.4、密码复杂性
1.密码长度,至少8位
2.密码需要包含字符串大小写、特殊符号、数字
3.不是回文:123321
回文:从左边读过去和从右边读过去是一样的
回文说明密码不安全,容易被破解
9、w: 查看已经登录到主机的用户信息
[root@xiaoliu ~]# w
12:55:34 up 2:46, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
lhj tty1 - 09:46 3:08m 0.01s 0.01s -bash
root pts/0 192.168.243.1 09:47 2:22m 0.00s 0.00s -bash
root pts/1 192.168.243.1 12:55 2.00s 0.00s 0.00s w
10、last和lastlog
[root@xiaoliu ~]# last
root pts/1 192.168.243.1 Sun Apr 10 12:55 still logged in
root pts/0 192.168.243.1 Sun Apr 10 09:47 gone - no logout
lhj tty1 Sun Apr 10 09:46 gone - no logout
reboot system boot 4.18.0-305.3.1.e Sun Apr 10 09:28 still running
root pts/1 192.168.243.1 Sat Apr 9 16:52 - 21:20 (04:28)
root pts/0 192.168.243.1 Sat Apr 9 09:27 - 21:20 (11:53)
lhj tty1 Sat Apr 9 09:27 - 21:20 (11:53)
reboot system boot 4.18.0-305.3.1.e Sat Apr 9 09:26 - 21:20 (11:53)
root pts/1 192.168.243.1 Fri Apr 8 14:42 - 21:02 (06:20)
root pts/0 192.168.243.1 Fri Apr 8 08:40 - 16:54 (08:14)
lhj tty1 Fri Apr 8 08:39 - 21:02 (12:23)
reboot system boot 4.18.0-305.3.1.e Fri Apr 8 08:39 - 21:02 (12:23)
[root@xiaoliu ~]# lastlog
用户名 端口 来自 最后登陆时间
root pts/1 192.168.243.1 日 4月 10 12:55:32 +0800 2022
unbound **从未登录过**
sssd **从未登录过**
sshd **从未登录过**
liuhongjie pts/0 六 10月 30 10:28:07 +0800 2021
chenxiongwei pts/0 六 10月 30 12:13:03 +0800 2021
caohx **从未登录过**
twj pts/0 日 11月 14 11:24:21 +0800 2021
chenxw pts/0 三 11月 3 19:21:28 +0800 2021
pcp **从未登录过**
lhj tty1 日 4月 10 09:46:46 +0800 2022
lilanqing pts/0 日 12月 26 11:48:52 +0800 2021
shimengmeng pts/0 六 11月 13 16:48:39 +0800 2021
zhangjian pts/1 六 11月 20 10:18:58 +0800 2021
czm pts/1 192.168.243.1 一 12月 13 23:44:20 +0800 2021
四、手工建一个用户
1、需求:
用户名叫wangchen uid gid
组的名字 shanxi
注释 sanchuang student
shell /bin/bash
家目录 /home/wangchen
2、步骤:
1.修改/etc/passwd,在末尾追加
wangchen:x:1059:1059:sanchuang student:/home/wangchen:/bin/bash
2.修改/etc/shadow,在末尾追加
wangchen:!!:19078:0:99999:7:::
3.修改/etc/group,在末尾追加
shanxi:x:1059:
4.新建家目录
mkdir /home/wangchen
5.复制/etc/skel目录下的环境变量配置文件到家目录下
cp /etc/skel/.bash* /home/wangchen
6.创建邮箱文件
touch /var/spool/mail/wangchen
7.验证wangchen用户是否可以su 切换登录
[root@xiaoliu mk_user]# su - wangchen
[wangchen@xiaoliu ~]$ pwd
/home/wangchen
[wangchen@xiaoliu ~]$ ls -a
. .. .bash_logout .bash_profile .bashrc
[wangchen@xiaoliu ~]$ mkdir wang
mkdir: 无法创建目录 “wang”: 权限不够 因为wangchen这个目录是root用户新建的,所有这个文件的拥有者和组都是wangchen
chown:修改拥有者
8.使用root用户去修改/home/wangchen文件夹所有者为wangchen,组为shanxi
[root@xiaoliu mk_user]# chown -R wangchen:shanxi /home/wangchen
-R 递归修改目录里的所有的文件和文件夹的所有者
[root@xiaoliu mk_user]# ll -d /home/wangchen
drwxr-xr-x. 2 wangchen shanxi 62 3月 29 16:30 /home/wangchen
9.修改邮箱的权限
[root@xiaoliu mk_user]# cd /var/spool/mail
[root@xiaoliu mail]# chown wangchen:mail wangchen 修改邮箱的属主为wangchen,组为mail
[root@xiaoliu mail]# ll wangchen
-rw-r--r--. 1 wangchen mail 0 3月 29 16:31 wangchen
10.修改文件的权限
[root@xiaoliu home]# chmod 700 /home/wangchen
五、ftp服务
1、安装启动vsftpd服务
第一步:
[root@xiaoliu ~]# yum install vsftpd -y 安装ftp服务软件
第二步:
[root@xiaoliu ~]# service vsftpd restart 重启vsftp服务
Redirecting to /bin/systemctl restart vsftpd.service
[root@xiaoliu ~]# cat /etc/passwd|grep ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
第三步:
[root@xiaoliu ~]# yum install ftp lftp -y 安装客户端命令ftp和lfpt
第四步:清除防火墙规则
[root@xiaoliu ~]# iptables -F 清除规则
[root@xiaoliu ~]# service firewalld stop 停止防火墙服务
Redirecting to /bin/systemctl stop firewalld.service
第五步:登录
[root@xiaoliu ~]# ftp 192.168.243.128
centos8里默认不允许匿名登录,可以新建用户本地用户登录
[root@xiaoliu ~]# useradd qiankai
[root@xiaoliu ~]# echo 123456|passwd qiankai --stdin
更改用户 qiankai 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@xiaoliu ~]# ftp 192.168.243.128
Connected to 192.168.243.128 (192.168.243.128).
220 (vsFTPd 3.0.3)
Name (192.168.243.128:root): qiankai
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
2、允许匿名用户登录ftp
第一步:修改配置文件
vim /etc/vsftpd/vsftpd.conf
anontmous_enable=yes -->将no修改为yes
第二步:刷新服务
service vsftpd restart
六、linux里面的加密算法
1、linux默认采用的加密算法是sha512–》sha512算法是hash算法的一种
2、hash算法: md5 sha256 sha512
把任意长度的输入,变成固定的长度输出
单向加密技术
/etc/shadow文件里的密码字段:
加
密
算
法
i
d
加密算法id
加密算法id盐值$真正的密文
加密底层使用crypt加密算法
七、查看组中有哪些成员(shell脚本)
#!/bin/bash
group_name=$1
#获得需要查询的组的id和次要组成员
group_msg=`awk -F: -v group_awk=$group_name '$1==group_awk{print $3,$4}' /etc/group`
group_lst=($group_msg)
group_id=${group_lst[0]}
group_user_1=${group_lst[1]}
#再通过组id去/etc/passwd里查找它的主要组成员
group_user_2=`awk -F: -v group_id=$group_id '$4==group_id{print $1}' /etc/passwd| tr "\n" ","`
echo $group_user_2$group_user_1