一、Linux用户
1.什么是用户
用户由来:用户对硬件资源的操作都需要通过系统,比如用户要读取硬盘中的一份关键数据,出于安全考虑,操作系统的开发者们专门开发了安全机制,需要使用操作系统必须事先输入正确的用户名与密码
2.为何要有用户?
权限问题
系统上的每一个进程,都需要一个特定的用户运行,一个用户拥有特定的权限,该用户运行的进程与用户权限一致
通常使用普通用户,root用户权限过大,容易出问题
3.如何查看用户信息
root@bobo ~]# id #查看当前用户
uid=0(root) gid=0(root) groups=0(root)
[root@bobo~]# whoami # 查看当前用户是谁
root
[root@bobo ~]# id bobo 查看bobo用户
uid=0(root) gid=0(root) groups=0(root)
[root@bobo ~]# who # 查看所有登录用户
root pts/2 2020-10-23 15:24 (139.227.12.100)
[root@bobo ~]# ps aux |grep [s]sh # 每一个 进程都有其他用户
root 1067 0.0 0.2 112920 4328 ? Ss Feb15 0:04
/usr/sbin/sshd -D
root 27197 0.0 0.2 154708 5576 ? Ss 15:24 0:00 sshd:
root@pts/2
4.linux系统中用户角色划分
在linux系统中的用户分为管理员与其他用户
管理严权最高
其他用户根据管理员的分配获得权限
在linux中只能识别UID和GID这种数字
UID:用户ID,唯一标识一个系统用户的账号,,UID在系统中是唯一的。UID相对于个人身份证,用户名相当于名字
GID:组ID,把操作系统当做一家公司,uid相当于个人员工号,gid相当各自的部门编号
centos 7 系统约定
0 超级管理员,最高权限,有着极强的破坏能力
1-200 系统用户,用来运行系统自带的进程,默认已创建
201-999 系统用户,用来运行安装的程序,所以此类用户无需登录系统
1000+ 普通用户,正常可以登录系统对的用户,权限比较小,能执行的任务有限
用户和组的关系:一对一,多对一,多对多
5.超级用户:root
二、用户与组
用户与组相关文件
- /etc/passwd
- /etc/shadow
- /etc/group
- /etc/gshadow
/etc/passwd
/etc/shadow
/etc/group : 组文件
/etc/gshadow : 组密码文件
/etc/skel/ 用户老家的模板
/home/xxx 用户家目录
/var/spool/mail/xxx 用户邮箱文件
三、用户管理
- useradd 添加用户
- userdel 删除用户
- usermod 修改用户信息
1、创建用户
[root@localhost ~]# useradd user1
2、查看用户
[root@localhost ~]# id user1
uid=1002(user1) gid=1003(user1) 组=1003(user1)
[root@localhost ~]# who # 查看所有用户登录信息
[root@localhost ~]# whoami # 查看当前登录用户名
注:当创建一个用户时,如果没有指定用户的主组,将会创建一个同名的组作为用户的主组
3、删除用户
[root@localhost ~]# userdel user1 # 删除用户user1,但不删除用户家目录mail
[root@localhost ~]# userdel -r user1 # 要想彻底删除,加-r选项
4、useradd命令详解 创建用户的同时指定选项
怎样在linux系统中添加一个新的用户账户
掌握useradd命令的功能:能增加一个用户
了解useradd命令的常规选项
–u:指定用户的UID
–g:指定用户所属的主群
–G:指定用户所属的附加群
–d:指定用户的家目录
–c:指定用户的备注信息
–s:指定用户所用的shell
-e:修改过期时间
-M: 不创建家目录
-r:创建系统账户uid处于系统用户范围内,默认就是家目录
灵活应用useradd命令的例举:
如:在系统中新增一个fox(狐狸) 用户命令:useradd fox
在系统中新增一个用户user01,属组为police以及uid为600的命令:
useradd -u 600 -g policeuser01
5、usermod命令
同useradd参数基本一致,只不过useradd是添加,而usermod是修改
-u 指定要修改用户的UID
-g 指定要修改用户基本组
-a 将用户添加到补充组,与 -G选项一起使用
-G 指定要修改的用户附加组,使用逗号隔开多个附加组,覆盖原有的附加组
-d 指定要修改用户家目录
-c 指定要修改用户用户注释信息
-s 指定要修改用户的bash shell
[root@root ~]# usermod -e 2013-02-11 user1000 修改时间
[root@root ~]# usermod -g group1 jj 修改主组
[root@root ~]# usermod -a -G group2 jj 修改附加组,-a添加,不加-a代表覆盖其它选项
-m 将用户主目录的内容移动到新位置,如果当前目录不存在,则不会创建新的目录
-l 指定修改用户登录名
-L 指定要锁定的用户
-U 指定要解锁的用户
6、设定与修改密码
passwd 默认给当前应用户设定密码
passwd 用户名 root用户可以给自己以及其他账户设定密码,普通账户只能设定自己的密码
echo "密码" | passwd --stdin 用户名 非交互式
补充:可以利用系统内置变量生成随机字符串来串来充当密码
[root ~]# echo $RANDOM|md5sum|cut -c 1-1070ba11a74b
四、组管理
管理命令
groupadd
groupmod
groupdel
gpasswd # 设置组密码
newgrp #切换主组
创建组
[root~]# groupadd gg1 #创建基本组,不指定gid
[root ~]# tail -1 /etc/group
gg1:x:2005:
[root~]# groupadd -g 5555 gg2 #创建基本组,指定gid为5555
[root~]# tail -1 /etc/group
gg2:x:5555:
[root ~]# groupadd -r gg3 #创建系统组gid从201-999
[root ~]# tail -1 /etc/group
gg3:x:991:
修改组
[root ~]# groupmod -g 1111 gg3
[root ~]# tail -1 /etc/group
gg3:x:1111:
[root ~]#
[root ~]# groupmod -n new_gg3 gg3 # -n 修改组名称
[root ~]# tail -1 /etc/group
new_gg3:x:1111:
删除组
如果一个组是一个用户的主组,那么该组不能被删除,删除用户会默认一起删掉它的主组
[root ~]# useradd coco1
[root ~]# groupadd devops
[root ~]# usermod -G devops coco1
[root ~]# id coco1
uid=2004(coco1) gid=2004(coco1) groups=2004(coco1),5556(devops)
[root~]# groupdel devops # 附加组可以删除
[root~]# id coco1# 查看用户,发现他的附加组没有了
uid=2004(coco1) gid=2004(coco1) groups=2004(coco1)
[root~]# groupdel coco1 # 无法删除coco1因为组coco1属于coco1用户的主组
groupdel: cannot remove the primary group of user 'coco1'
五、手动创建用户
1、/etc/passwd
[root ~]# vim /etc/passwd #新加一行
[root ~]# tail -1 /etc/passwd
coco:x:2002:2002:hahaha:/home/coco:/bin/bash
2、/etc/shadow
[root ~]# openssl passwd -1 -salt 'i have a dream'
Password:
$1$i have a$jBGkkhpFu9WPSI1Nv.whT/
[root ~]# vim /etc/shadow
[root ~]# tail -1 /etc/shadow
coco:$1$i have a$jBGkkhpFu9WPSI1Nv.whT/:18303::::::
制作密码
3、/etc/group
[root ~]# vim /etc/group
[root~]# tail -1 /etc/group
coco:x:2002:
4、/etc/gshadow
[root~]# vim /etc/gshadow
[root ~]# tail -1 /etc/gshadow
coco:!::
5、创建用户家目录,并用用户老家的模块板/etc/skel/装修一下,注意权限
[root ~]# mkdir /home/coco
[root ~]# cp -r /etc/skel/.[!.]* /home/coco/
[root ~]# chmod 700 /home/coco/
[root ~]# chown -R coco.coco /home/coco/
6、/var/spool/mail/xxx用户邮箱文件
[root ~]# touch /var/spool/mail/coco
[root ~]# chmod 660 !$
chmod 660 /var/spool/mail/coco
[root ~]# chown coco.mail /var/spool/mail/coco
测试账号的登录
[root ~]# ssh coco @127.0.0.1
coco@127.0.0.1's password:
Last login: Mon Aug 10 23:18:55 2020 from 127.0.0.1
Welcome to Alibaba Cloud Elastic Compute Service !
[coco@ ~]$ whoami
coco