想提高自己想拿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 查看密码属性
最近一次密码修改时间 :4月 15, 2024
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :7月 18, 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 4月 15 18:29 /home
[root@calms ~]# ls -l /home
总用量 0
drwx------. 2 10001 1001 62 4月 15 11:32 test1
drwx------. 2 test2 root 62 4月 15 11:38 test2
drwx------. 2 test3 test3 62 4月 15 11:40 test3
drwxr-xr-x. 2 root root 6 4月 15 18:29 test4
drwx------. 2 wulin wulin 83 4月 15 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 4月 15 11:32 test1
drwxr-xr-x. 2 root root 6 4月 15 18:29 test4
drwx------. 2 wulin wulin 83 4月 15 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
上一次登录:一 4月 15 11:03:04 CST 2024pts/1 上
[wulin@calms ~]$ su - root
密码:
上一次登录:一 4月 15 18:32:15 CST 2024从 192.168.171.1pts/0 上
最后一次失败的登录:四 5月 30 00:10:23 CST 2030从 192.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
最近一次密码修改时间 :4月 15, 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,密码,家目录,权限,加密算法都是(后台)在控制我们这些命令,权限,删除提示等都是这里进行控制!!