问题1:

问题2:
如果我在删除一个用户的时候,会显示这个用户被其他进程占用着,并且显示这个进程的编号,也就是进程号。
进程被占用,那就没办法删除,就只能等进程结束了,在去删除。这个时候,可以通过ps aux | grep 编号
查看到这个进程的使用情况。

一:用户的创建流程
useradd创建用户时,系统会以/etc/login.defaults、/etc/defaults/useradd两个配置文件作为参照物,如果在创建用户时指定了参数则会覆盖/etc/login.defs、/etc/defaults/useradd文件默认配置,如未指定则使用默认。

[root@oldboy ~]# grep -E -v "#|$" /etc/login.defs (先进行一个过滤)
MAIL_DIR /var/spool/mail 默认配置的邮箱,就存在这
PASS_MAX_DAYS 99999 密码最大的使用天数
PASS_MIN_DAYS 0 密码最小的使用天数
PASS_MIN_LEN 5 密码最小的使用长度
PASS_WARN_AGE 7 密码过期前的警告
UID_MIN 1000。 用户id最小从1000开始
UID_MAX 60000 用户ID最大到6万
SYS_UID_MIN 201 系统用户的id最小从201开始
SYS_UID_MAX 999 系统用户的ID最大到999
GID_MIN 1000 用户组的最小从1000开始
GID_MAX 60000。 用户组的最大到6万
SYS_GID_MIN 201 系统用户组的最小从201开始
SYS_GID_MAX 999 系统用户组的最大到999
CREATE_HOME yes 创建家目录。(是)==》 就是说,如果你在创建用户的时候,没有指定家目录,就会默认给你创建一个。如果是no。就默认不会给你创建
UMASK 077
USERGROUPS_ENAB yes 创建用户的时候,是否给他创建一个组。默认会创建
ENCRYPT_METHOD SHA512 加密的算法
[root@oldboy ~]# cat /etc/default(默认)/useradd
useradd defaults file
GROUP=100
HOME=/home 上边的文件只是说创建,并没有说在哪创建,下边给到了具体位置,创建到根下的home目录里。
INACTIVE=-1 代表用户的活跃时间 , -1 代表永远都活跃
EXPIRE=
SHELL=/bin/bash 在用户创建登陆的时候如果不指定,那么默认的位置就是/bin/bash
SKEL=/etc/skel 当创建这个用户的时候,会默认给他拷贝哪些个环境配置文件。

当把默认的环境配置目录删除之后,就没有了家。

就需要在重那个目录下拷贝一份到当前目录,然后就可以了。
所以,以后一旦普通用户登录之后,没有家,就应该知道哪里出了问题的
CREATE_MAIL_SPOOL=yes 用户在创建的时候,是否默认给他创建邮箱。
⚠️:在我们创建一个用户时,如果创建时指定了参数,以指定参数为准,如果没有指定参数,那么就以系统中默认的两个配置文件(/etc/login.defs /etc/default/useradd)作为参照.
二:用户组:
组就是一个逻辑概念。逻辑上将多个用户捆绑成一个组,当我们操作组的时候就相当于在操作组下的所有用户
。
组的类别:
@1.基本组 :创建的时候指定的组,就叫基本组 (只能有一个)
@2.私有组: 创建的时候没有指定的组,系统会默认给你一个组。 (只能有一个)那么这个组与用户同名
@3.附加组: 当基本组没办法满足权限要求的时候,可以将用户加入到有权限的附加组。来帮助用户完成任务。
可以有N个
⚠️:想要加入一个组,首先需要有组
然后在进行加入。

组的信息存放:
/etc/group。 存放组的信息

/etc/gshadow。 存放组的密码

@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1.使用groupadd命令新增组,
groupadd [-g GID] groupname
创建基本组, 不指定gid
[root@bgx ~]# groupadd no_gid
创建基本组, 指定gid为5555
[root@bgx ~]# groupadd -g 5555 yes_gid
创建系统组,gid从201-999
[root@bgx ~]# groupadd -r sys_gid
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.使用groupmod命令修改组
-g 修改组gid
[root@bgx ~]# groupmod -g 1111 no_gid
-n 修改组名称
[root@oldboy ~]# groupmod yes_gid -n active_gid

@@@@@@@@@@@@@@@@@@@@@@@@@@@@
3.3.groupdel删除组
默认删除私有组 (删除私有组,如果没有和用户进行一个绑定,(就是说直接创建的组,那么直接删除组就是了),如果是在添加用户的时候,创建的组,那么系统默认是用户和组进行了绑定,是私有组。就直接删除这个用户,私有组直接就不存在了。)
如果要删除基本组,需要先删除基本组中的用户才可以删除该组。

[root@oldboy ~]# useradd ttboy -g active_gid (给用户添加一个基本组
[root@oldboy ~]# useradd ggboy -G active_gid。 (给用户添加一个附加组)
[root@oldboy ~]# grep "active_gid" /etc/group (过滤一下)
active_gid:x:12345:ggboy 这个组是ttboy 的主组,是ggboy 的附加组。
[root@oldboy ~]# groupdel active_gid (想删除这个组)
groupdel:不能移除用户“ttboy”的主组
移除主要的成员,就能删除该组
[root@oldboy ~]# userdel ttboy (先删除这个用户)
[root@oldboy ~]# groupdel active_gid (然后删除这个组)
[root@oldboy ~]# id ggboy (另一个附加组的成员,不用管。因为他不是那个组的主要成员)
uid=6009(ggboy) gid=12346(ggboy) 组=12346(ggboy)

⚠️:组是由成员来定义的。
组里没成员,直接删除。
组里有成员,移除主要的,不管次要的
组里只有一个人,删除用户,组就报废。
用户提权
因为在实际的使用中,我们都是使用的是普通用户,不可能涉及到root,因为超管的权限太大了,会造成内部人员的误操作。
但有些命令,普通用户又没办法操作,所以就需要提权,达到普通用户的登录,并且还能达到完成任务。
1.su 身份的切换。 (su - )
就是普通用户切换到root用户,但是需要知道root的密码。这还是相当于是登录上了root。
@1.Linux shell 分为几类?
交互式的shell (你给出一个,就返回一个,有来有回)
非交互式的shell (你给到一个命令,直接把结果反馈给你,执行完,自己退出)
登陆shell 通过密码加用户名登录的
非登陆shell 在窗口下又开始的登录,但是退出之后,只是退出了开启的窗口,并没有真正退出

登录shell与非登录shell的区别是啥?
是因为加载的环境变量不一样。
@2.bash shell 配置文件(文件主要保存用户的工作环境)
个人配置文件:~/.bash_profile ~/.bashrc 。
全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc
profile类文件, 设定环境变量, 登陆前运行的脚本和命令。bashrc 类文件, 设定本地变量, 定义命令别名
PS: 如果全局配置和个人配置产生冲突,以个人配置为准
@3.登录系统后,环境配置文件的应用顺序?
登录式shell配置文件执行顺序: /etc/profile->/etc/profile.d/.sh->/.bash_profile->/.bashrc->/etc/bashrc
非登陆式shell配置文件执行顺序: ~/.bashrc->/etc/bashrc->/etc/profile.d/.sh
PS: 验证使用echo在每行添加一个输出即可
/etc/profile.d/1.sh (登录式的)
/etc/profile
/etc/bashrc
/root/.bashrc
/root/.bash_profile
[root@oldboy ~]# bash (非登录式)
/etc/profile.d/1.sh
/etc/bashrc
/root/.bashrc
只是加载了一些别名命令的,并没有加载了关于环境的。
@4.到底su-与su 切换的不同在哪
su - username属登陆式shell,
su username属于非登陆式shell,
区别在于加载的环境变量不一样。
所以以后切换用户,要用su -切换。
@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.sudo提权。(就是我先给你一些权限,等你需要的时候,自己去提取)
就是当需要使用root权限的时进行提权,无需切换root用户。就能完成指令。
首先你需要加入到一个组,这个组会有一定的权限,然后你才能借助这个组的权限,达到你所完成的工作。


思路解析:

普通用户怎么提权??(配置sudo)
第一:创建用户
第二:创建组
第三:把用户分配到组里
第四:给组配置权限
第五:用户通过提权来执行组的权限,达到任务
oldxu oldqiang = 运维
oldli oldguo = dba
1.需要真实创建这四个用户
[root@oldboy opt]# useradd oldxu
[root@oldboy opt]# useradd oldqiang
[root@oldboy opt]# useradd oldli
[root@oldboy opt]# useradd oldguo
编辑sudo配置
[root@bgx ~]# visudo (如果写错,会有语法提示)
1.使用sudo定义分组,这个系统group没什么关系
User_Alias OPS = oldxu,oldqiang
User_Alias DBA = oldli,oldguo
2.定义可执行的命令组, 便于后续调用
Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start
Cmnd_Alias STORAGE = /bin/mount, /bin/umount
Cmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrp
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
3.使用sudo开始分配权限
OPS ALL=(ALL) NETWORKING,SOFTWARE,SERVICES,STORAGE,DELEGATING,PROCESSES
DBA ALL=(ALL) SOFTWARE,PROCESSES
4.登陆对应的用户使用 sudo -l 验证权限
第二种方法,是对真实的用户,进行的分组。
@1,既然是真实组,先创建组

@2,然后把用户放进组里

@3,去配置sudo ,删除别名,只留下命令的别名,和给组配置的权限,百分号代表的就是真实组

@4,sudo -c 检查语法是否正确
@5,切换用户,验证权限。
