企业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/gshadowtail: 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,密码,家目录,权限,加密算法都是(后台)在控制我们这些命令,权限,删除提示等都是这里进行控制!!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/818170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫与数据可视化论文课题免费领取咨询

引言 作为一名在软件技术领域深耕多年的专业人士&#xff0c;我不仅在软件开发和项目部署方面积累了丰富的实践经验&#xff0c;更以卓越的技术实力获得了&#x1f3c5;30项软件著作权证书的殊荣。这些成就不仅是对我的技术专长的肯定&#xff0c;也是对我的创新精神和专业承诺…

boot https ssl

生成命令&#xff1a; keytool -importkeystore -srckeystore D:\sslTest.keystore -destkeystore D:\sslTest.keystore -deststoretype pkcs12keytool -genkeypair -alias "sslTestKey" -keyalg "RSA" -keystore "D:\sslTest.keystore"yml: s…

RISCV指令集体系简读之RV32M

RV32M向RV32I中添加了整数乘法和除法指令&#xff1b; RV32M具有有符号和无符号整数的除法指令&#xff1a;divide(div)和divide unsigned(divu)&#xff0c;它们将 商放入目标寄存器。在少数情况下&#xff0c;程序员需要余数而不是商&#xff0c;因此RV32M提供 remainder(rem…

使用IT-Tools+Cpolar在Windows搭建自己的IT工具箱并实现远程在线使用

文章目录 1. 使用Docker本地部署it-tools2. 本地访问it-tools3. 安装cpolar内网穿透4. 固定it-tools公网地址 本篇文章将介绍如何在Windows上使用Docker本地部署IT- Tools&#xff0c;并且同样可以结合cpolar实现公网访问。 在前一篇文章中我们讲解了如何在Linux中使用Docker搭…

MercadoLibre(美客多)入仓预约系统操作流程-自动化约号(开篇)

目录 一、添加货件信息 二、输入货件信息 三、选择发货 四、填写交货日期 五、注意事项 MercadoLibre&#xff08;美客多&#xff09;于2021年10月18号上线了新预约入仓系统&#xff0c;在MercadoLibre美客多平台上&#xff0c;新入仓预约系统是一项非常重要的功能&#x…

JAVA基础06-面向对象,构造器,递归以及对象创建时内存分析(内含代码与练习)

面向对象的概念以及特征 概念 实质上将 "数据" 与 "行为" 的过程, 以类的形式封装起来, 一切以对象为中心语言。 面向对象的程序设计过程中有两个重要概念&#xff1a;类&#xff08;class&#xff09;和对象&#xff08;也称为实例&#xff09;。 其中…

【Css】table数据为空,以“-“形式展现

解决&#xff1a;class类名 它表示的是在一个名为class类名的元素内部&#xff0c;当该元素为空时&#xff0c;会在该元素的:before伪元素上应用一些样式。 这种写法通常用于在元素内容为空时&#xff0c;添加一些占位符或者提示文字

代码随想录算法训练营第五十五天 | 392. 判断子序列、115. 不同的子序列

代码随想录算法训练营第五十五天 | 392. 判断子序列、115. 不同的子序列 392. 判断子序列题目解法 115. 不同的子序列题目解法 感悟 392. 判断子序列 题目 解法 题解链接 自己的想法实现 class Solution { public:bool isSubsequence(string s, string t) {if(s.size() >…

20240328-1-Prophet面试题

Prophet面试题 1. 简要介绍Prophet 常见的时间序列分解方法&#xff1a; 将时间序列分成季节项 S t S_t St​&#xff0c;趋势项 T t T_t Tt​&#xff0c;剩余项 R t R_t Rt​&#xff0c;即对所有的 t ≥ 0 t≥0 t≥0 y t S t T t R t y_{t}S_{t}T_{t}R_{t} yt​St​Tt…

人员聚集监测识别摄像机

随着科技的不断发展&#xff0c;人员聚集监测识别摄像机已经成为了现代社会安全管理的重要工具。这种摄像机能够对人员聚集的情况进行实时监测和识别&#xff0c;帮助相关部门及时发现和处理潜在的安全风险。 人员聚集监测识别摄像机可以通过高清晰度的摄像头和先进的人脸识别技…

windows的jar包开机自启动【搬代码】

感觉最方便的就是放到启动项目里操作步骤 winR 输入&#xff1a;shell:startup回车或点击确定 3.将自己jar包右键创建快捷方式 4.然后放进去 5.重启电脑&#xff0c;浏览器输入网址&#xff0c;就可以看到重启成功了 另外一个就是放入.exe文件的快捷方式 首先&#xff0c;…

OpenGL 多重采样抗锯齿(MSAA,Multisample Anti-Aliasing)

多重采样抗锯齿(MSAA,Multisample Anti-Aliasing)是一种用于减少图形渲染中锯齿(aliasing)效应的技术。 锯齿是怎样产生的? 锯齿效应是由于在屏幕上渲染的图形对象边缘处像素颜色变化突然而导致的,它使得图形看起来不够平滑,影响了视觉质量。 如图示,我们渲染一个三…

vue模版字符串解析成vue模版对象

模版字符串 this.code <template><div style"width:100% ; height: 100% ;">{{resultData[0].name}}</div> </template> <script> export default {data() {return {resultData: [{ name: 图幅, value: 20 },]}},mounted(){},method…

音乐文件逆向破解

背景 网易云等在线音乐文件的加密源码都按照一定的规则加密&#xff0c;通过对音乐文件的源码分析转化&#xff0c;有望实现对加密文件的解密 实现内容 实现对加密音乐文件的解密 实现对无版权的音乐文件的转化 实现环境 010editor 010 Editor是一个专业的文本编辑器和十六…

运费计算(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int distance, c;float weight, price, discount, fee;//提示用户&#xff1b;printf("请输入路程&#xff0c;单价…

1.JAVASE练习题(递归篇)

1.递归求解汉诺塔问题 public static void move(char pos1,char pos2) {System.out.print(pos1"->"pos2" "); }public static void hanoi(int n,char pos1,char pos2,char pos3) {if(n 1) {move(pos1,pos3);return;}hanoi(n-1,pos1,pos3,pos2);move(p…

gitlab(docker)安装及使用

GitLab GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的Web服务。 下载(docker) 查询docker镜像gitlab-ce gitlab-ce是它的社区版 [rootlocalhost ~]# docker search gitlab-ce NAME …

Redis入门到通关之Set实现点赞功能

文章目录 set 数据类型介绍不排序实现排序实现 set 数据类型介绍 Redis中的set类型是一组无序的字符串值。 set通过其独特的数据结构和丰富的命令提供了在存储和处理集合元素方面的一些非常有用的功能。下面列出了主要的set类型命令&#xff1a; SADD key member1 [member2]&a…

树莓集团参加中国国际消费品博览会,聚焦数字文创产业发展与未来!

2024年4月13日上午&#xff0c;第四届中国国际消费品博览会&#xff08;以下简称“消博会”&#xff09;在海南海口隆重开幕。树莓科技&#xff08;成都&#xff09;集团有限公司董事长王凯、副总裁吴晓平受邀出席本次盛会。 消博会是亚太地区规模最大的消费精品展&#xff0c;…

每日汇评:中东局势升级,黄金重拾 2350 美元,还有可能上涨吗?

周六晚伊朗袭击以色列后&#xff0c;金价因避险而上涨&#xff1b; 美元未能从地缘政治动荡和美国国债收益率上升中受益&#xff1b; 在美国零售销售数据公布之前&#xff0c;金价与 4 小时 RSI指标一起上行&#xff1b; 周一早些时候&#xff0c;金价正在巩固其反弹至 2350 美…