企业Linux常见用户命令/补充Linux文件系统删除原理/userdel(故障原理/etc/skel)详谈-9628字

想提高自己想拿20k以上冲冲冲!!!,想要从0 学习到linux架构师可以关注小编专栏
本来都很卷,你还不努力,想拿高薪,付出行动!
linux难点第一阶段非常难
1.命令多复杂(大家抓不住重点)2.前期枯燥乏味3.你学的/学校讲的,内部原理/是否能带你一个一个位置去解析,4.能否熟练各种命令操作/手写参数(笔试/面试会有的)5.原理能否讲出来,画图能否自己讲出来上升到流畅等(后期面试)后面给大家写学习过程建议jianl/面试技巧/
面试题/笔试题/每个基础练习题,由于小编还有别的学习任务,慢更大家多多理解!尽量做到两天写一系列东西(思维,最新市场企业案例,底层原理剖析图)学习关注专栏从前到后每一篇都是层层递进!!

目前为第一阶段第十五天!

企业面试:请描述Linux软链接与硬链接的区别

1.答分类:硬链接与软链接
2.答概念:硬链接与软链接源文件的inode节点号相同,软链接文件相当于Windows下的快捷方式
3.创建:不带参数下ln命令创建的是硬链接数,带–s参数的ln命令创建的是软链接
4答特点:不能对目录创建硬链接,但可以创建软链接。软链接可以跨过文件系统,硬链接不可跨文件系统
5.答案例:硬链接用处不多,可以用来对重要文件快照防止误删,对目录建立软链接在工作中常用,比如软件安装nginx–1.10作为目录,安装完成后设置软链接为nginx(保持了版本号,方便使用及后续软件升级)

Linux文件系统删除原理(补充)

1.静态文件

i_link=o,硬链接数为0,所有的硬链接都删除文件或被删除了

2.动态文件

i_count=0进程计数为0,没有被进程调用(使用)的文件

Linux文件删除原理
在这里插入图片描述

实践:

mkdir –p /app/logs 创建用于挂载的目录
dd if /dev/zero of /dev /sdc bs–8K count 10 创建指定大小的虚拟文件(模拟磁盘)
mkfs.ext4 /dev/sdc 格式化
mount –o loop /dev/sdc /app.logs 挂载
df –h 检查挂载结果

tomact服务器
1.磁盘空间满100%
2.删除日志:access.log(删除文件进行重启服务器)

df–h
unount /mnt
mount /dev/sdc /app/logs/
df –h
df–i
rm –f /app/logs*
ls /app/logs

Linux用户管理

身份表示UID,组标识GID(唯一)

Linux用户,及作用:

1.超级用户
系统管理员,掌握系统的最高权限(家目录/root)
root,UID为0(UID为0的用户就是root)
登录shell,/bin/bash

登录安全:企业级应用
a.配置ssh,禁用ssh
是因为权限非常大,我们要使用普通用户登录,然后切换到root
b.平时使用普通用户登录,必要的话在登录root

2.普通用户
普通的权限,写的权限范围 家目录 /home/用户名,/tmp
产生:是由管理员用户创建,日常的登录首先登录普通用户
UID为c6 500-6000,c7 1000-60000

普通用户(user)如何切换到管理系统?

a 切换到root,su-wulin #角色该百年,普通用户变成了root
b 不切换到root,可以使用root的权限去做事情,sudo useradd wulin,赋予普通用户一部分权限

3.虚拟用户
UID:1-499
大多数装系统就是存在的,不能登陆的,登录shell,/sbin/nologin
在这里插入图片描述

存在不能登陆的意义:
Linux 文件,进程这样的东西如果要存在,必须要有对应的用户和组

文件创建时就要有对应的用户和组
进程启动时就要有对应的用户和组

虚拟用户存在的目的是满足进程启动时对用户和组的要求
用普通用户行不行?可以,与普通用户区别就是因为普通用户可以登录,这样会存在安全问题!

最小化原则: 安装软件最小化,登录安全(普通用户)最小化,进程启动权限最小化,权限最小化

用户组介绍(group)

GID
用户的用户组类似于组织(家庭)

一个用户可以有多个组,一个组可以有多个用户,多个用户可以对应一个组

用户组产生:

1.用户组是创建用户的时候默认产生的,创建一个wulin,默认情况会产生wulin组,用户和组同名,且UID和GID相同
2.由root用户直接创建

用户相关配置文件

直接相关有:
/etc /passwd #用户主配置文件,用户的各种属性(UID,GID,家目录,登录shell)
在这里插入图片描述

wulin :x :1000 :1000: :/home/wulin :/bin/bash 用户名称 用户密码 用户UID
用户组GID 用户说明 用户家目录
shell解释器(通过usermod或者手动修改passwd配置,将解释器类型改为/sbin/nologin,查看passwd文件,大部分的内置系统虚拟用户字段都是/sbin/nologin表示禁止登录系统,这也是安全进行考虑)

/etc /shadow #用户的密码文件,存放密码及密码的属性(失效时间,修改密码时间)

在这里插入图片描述
分别对应:用户名称,用户密码(加密字符串)最近更改密码时间,禁止修改密码天数,用户必须更改口令的天数,警告更名密码的期限,不活动时间,失效时间,标志

/etc /group #组文件,存放用户组及属性

wulin:x:1000:
用户组名,用户组密码,GID,用户组成员(-G加入成员)

/etc/gshadow #用户组的密码文件(废弃)
在这里插入图片描述
用户组名,用户组密码,用户组管理用户,用户组成员

和创建用户相关:
/etc/default/useradd #创建用户命令及useradd配置文件
/etc/skel #创建用户环境等变量原始文件存放地
/etc/login.defs #创建用户系统配置,对应文件
在这里插入图片描述

用户文件(直接相关):
/etc/passwd
/etc/shadow
用户组文件(间接相关):
/etc/gshadow
/etc/group

用户相关命令

useradd(adduser)添加用户
usermod 修改用户
userdel 删除用户

useradd命令

在这里插入图片描述

添加用用户
[root@calms ~]# useradd test1
查看用户
[root@calms ~]# id test1
uid=1001(test1) gid=1001(test1)=1001(test1)
查看内容
[root@calms ~]# tail -n l /etc/passwd /etc/group /etc/shadow /etc/gshadow

tail: l: 无效的号码%s
[root@calms ~]# tail -n 1 /etc/passwd /etc/group /etc/shadow /etc/gshadow 
==> /etc/passwd <==
test1:x:1001:1001::/home/test1:/bin/bash

==> /etc/group <==
test1:x:1001:

==> /etc/shadow <==
test1:!!:19828:0:99999:7:::

==> /etc/gshadow <==
test1:!::

2.指定uid添加用户(-u)

[root@calms ~]# useradd -u 5000 test2 #创建test2用户,并指定uid为5000
[root@calms ~]# id test2
uid=5000(test2) gid=5000(test2) 组=5000(test2)

3.指定用户的登录shell(-s)

在这里插入图片描述

在这里插入图片描述

企业应用:配置网络服务时候,编译安装需要创建虚拟用户

4.指定用户的家目录(-d)

[root@calms ~]# useradd -d /opt test4
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
[root@calms ~]# tail -1 /etc/passwd 
test4:x:5002:5002::/opt:/bin/bash
su -test4
正常报错
-bash-4.1$ ##缺少用户环境变量所致

在这里插入图片描述
解决方式:
在这里插入图片描述
这里要注意ls -la 小编这里没有成功的原因是因为,这个文件,用户与用户组都是root(是root修改不了,这里非root成功)

这里如果要用root进行拷的话(提权):
\cp /etc/skel/.bash* . chown -R wulin.wulin
/home/wulin su - wulin

5.添加用户指定属于其他用户组

useradd test5 -g root #添加用户属于root组
id test5

6.添加用户设置过期时间(-e)

企业应用:给非运维人员设置用户登录的固定期限,到期了自动无法登录

date
useradd -e “2030/05/30” test6
passwd test6
更新密码
date -s “2030/07/30” test6
ssh wulin@127.168.171.0 #ssh客户端类似于xshell
会发现远程连接上

7.添加用户不创建家目录(-M)

配合创建虚拟用户
useradd -s /sbin/nologin test3 -M

-u指定UID
-g指定属于的组
-e指定过期时间
-d指定家目录
-M 不创建家目录
-s 指定登录的解释器

usermod 修改用户:

-u指定UID
-g指定属于的组
-e指定过期时间
-d指定家目录
-M 不创建家目录
-s 指定登录的解释器

修改test1的UID

[root@calms ~]# id test1
uid=1001(test1) gid=1001(test1) 组=1001(test1)
[root@calms ~]# usermod -u 10001 test1
[root@calms ~]# id test1
uid=10001(test1) gid=1001(test1) 组=1001(test1)

UID已改,组ID没改

修改test2默认的新组test2
[root@calms ~]# usermod -g root test2
[root@calms ~]# id test2
uid=5000(test2) gid=0(root)=0(root)

## 案例
[root@calms ~]# id test2
uid=5000(test2) gid=0(root)=0(root)
[root@calms ~]# chage -l test2  查看密码属性
最近一次密码修改时间					:415, 2024
密码过期时间					:从不
密码失效时间					:从不
帐户过期时间						:718, 2031
两次改变密码之间相距的最小天数		:0
两次改变密码之间相距的最大天数		:99999
在密码过期之前警告的天数	:7

更改解释器 -s

更改test3 解释器为/bin/bash(-s)

[root@calms ~]# grep test /etc/passwd
test1:x:10001:1001::/home/test1:/bin/bash
test2:x:5000:0::/home/test2:/bin/bash
test3:x:5001:5001::/home/test3:/sbin/nologin
test4:x:5002:5002::/opt:/bin/bash
[root@calms ~]# usermod  -s /bin/bash test3
[root@calms ~]# grep test3 /etc/passwd
test3:x:5001:5001::/home/test3:/bin/bash
[root@calms ~]# mkdir /home/test4
[root@calms ~]# usermod -d /home/test4 test4
[root@calms ~]# grep test4 /etc/passwd
test4:x:5002:5002::/home/test4:/bin/bash

企业中这样改是不行的,因为缺少环境变量,切换出现错误:
在这里插入图片描述

userdel用户删除

-r 删除家目录 ,这个是有风险的!!

企业中应用:人员如果离职了,他的用户怎么管?

1 userdel -r 离职人员 #容易把离职人员的数据删除,(这不是好方法)
2 userdel 离职人员用户名 家目录进行保留(不是好方法)
3 设置过期时间 ,在vim模式里对/etc/passwd进行注释掉
在这里插入图片描述
在这里插入图片描述

编辑/etc/passwd注释掉test4,生产场景推荐
wulin:x:1000:1000::/home/wulin:/bin/bash
#test4:x:5002:5002::/home/test4:/bin/bash
[root@calms ~]# su - test4
su: user test4 does not exist

案例:

[root@calms ~]# userdel test1
[root@calms ~]# ls -ld /home
drwxr-xr-x. 7 root root 71 415 18:29 /home
[root@calms ~]# ls -l /home
总用量 0
drwx------. 2 10001  1001 62 415 11:32 test1
drwx------. 2 test2 root  62 415 11:38 test2
drwx------. 2 test3 test3 62 415 11:40 test3
drwxr-xr-x. 2 root  root   6 415 18:29 test4
drwx------. 2 wulin wulin 83 415 12:05 wulin
[root@calms ~]# userdel -r test1
userdel:用户“test1”不存在
[root@calms ~]# userdel -r test2
userdel:组“test2”没有移除,因为它不是用户 test2 的主组
[root@calms ~]# userdel -r test3
[root@calms ~]# ls -l /home
总用量 0
drwx------. 2 10001  1001 62 415 11:32 test1
drwxr-xr-x. 2 root  root   6 415 18:29 test4
drwx------. 2 wulin wulin 83 415 12:05 wulin

(故障) 使用userdel test4显示:userdel:user test4 is currently used by process 2355

出现这一种情况是因为你来回切换导致登录状态,肯定是删不掉的,下面我给大家进行了演示:

[root@calms ~]# tail /etc/passwd
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
wulin:x:1000:1000::/home/wulin:/bin/bash
test4:x:5002:5002::/home/test4:/bin/bash
[root@calms ~]# su - wulin
上一次登录:一 415 11:03:04 CST 2024pts/1[wulin@calms ~]$ su - root
密码:
上一次登录:一 415 18:32:15 CST 2024192.168.171.1pts/0 上
最后一次失败的登录:四 530 00:10:23 CST 2030192.168.171.1ssh:notty 上
最有一次成功登录后有 1 次失败的登录尝试。
[root@calms ~]# userdel wulin
userdel: user wulin is currently used by process 2355
[root@calms ~]# 

查看进程号 :ps -ef|grep 2355
在这里插入图片描述

useradd相关配置文件

/etc/default/useradd #创建用户命令及useradd配置文件
/etc/skel #创建用户环境等变量原始文件存放地
/etc/login.defs #创建用户系统配置,对应文件

/etc/skel 用户环境变量原始文件存放地

每一个用户家目录默认都会有 .bash_logout .bash_profile .bashrc
创建用户的同时,从/etc/skel里面复制到/home/用户名下的

在这里插入图片描述
这两个内容是一致的
在这里插入图片描述

为什么上面两个内容是一致的?与前面案例/出现的-bash-4.2$(故障)是否与/etc/skel有直接关系呢?

与/etc/skel是有直接关系的,这与它的原理是有关的:
在这里插入图片描述

创建用户时候为什么会从/etc/skel下面拷贝环境变量?

在这里插入图片描述

/etc/default/useradd #创建用户命令useradd的配置文件

备份
[root@calms test7]# cp /etc/default/useradd{,.ori}
[root@calms test7]# cp /etc/default/useradd /etc/default/useradd.ori

在这里插入图片描述

[root]\@wulin ~] #cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/opt 默认/home/修改为/opt
INACTIVE=-1
EXPIRE="2031/12/31"
SHELL=/sbin/nologin 默认/bin/bash,修改为/sbin/nologin
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
执行的结果与上面图片红线画的相一致






[root@calms ~]# useradd test8
[root@calms ~]# tail -1 /etc/passwd
test8:x:5004:5004::/opt/test8:/sbin/nologin
[root@calms ~]# chage  -l test8
最近一次密码修改时间					:415, 2024
密码过期时间					:从不
密码失效时间					:从不
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:0
两次改变密码之间相距的最大天数		:99999
在密码过期之前警告的天数	:7
还原:
[root@calms ~]# cp /etc/default/useradd.ori /etc/default/useradd

也可以用useradd -D -s 修改/etc/default/useradd

/etc/login.defs(在vim编辑模式里认识就ok)

uid,密码,家目录,权限,加密算法都是(后台)在控制我们这些命令,权限,删除提示等都是这里进行控制!!
在这里插入图片描述

  • 58
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值