Linux笔记扩展

ln 链接

ln : link

为什么要用到软链接?

其实类似于windows中,桌面上的快捷方式一样

为了方便,我们平时在windows上,把所有常用的软件的快捷方式放在桌面上

Linux中也一样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 格式
ln [选项] 源文件 目标文件
# 选项:
-s : 创建软连接(基本上这一个参数就够了)

# 示例
# 1. 软链接
# 创建文件 /etc/issue 的软链接 /tmp/issue.soft
ln -s /etc/issue /tmp/issue.soft
ll /tmp
# 特点:
# 1. 软链接生成的文件是 "满权限" 的,这样是很危险的?
# 2. 不不不,其实真正的权限还是由原文件来决定
# 3. 只有软链接的开头才会是 "l"
# 4. 有指向源文件的箭头
lrwxrwxrwx. 1 root root 10 10月 8 17:12 issue.soft -> /etc/issue


# 2. 硬链接
# 创建文件 /etc/issue 的硬链接 /tmp/issue.hard
ln /etc/issue /tmp/issue.hard
ll /tmp
# 特点:
# 1. 硬链接生成的文件 "不是满权限" 的
# 2. 硬链接文件与源文件同步更新
# 3. 相当于cp(拷贝),即使源文件删除了,硬链接的文件依然存在(实时的备份)
# 4. 通过 i 节点识别: 命令 "ls -i /etc/issue /tmp/issue.hard" 查看文件索引号(inode),会发现源文件与硬链接文件的索引号相同,这也是为什么两个文件会实时同步的原因
# 5. 硬链接无法跨分区
# 6. 无法针对目录
-rw-r--r--. 2 root root 23 8月 30 2017 issue.hard

文件搜索命令 locate

locate 秒级搜索

但是有一个问题,对于刚刚新建的文件或目录,实时的查找出来,需要更新一下数据库

相对于find来说,find查找虽然没有那么快,但它是实时搜索的,没有更新的这一个步骤

在centos7中,locate好像没有了,需要下载一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 下载
yum -y install mlocate
# 测试
mkdir /syz
# 更新数据库,不然无法找到刚刚新建的目录
# 注意: 临时资料库中的文件是查找不到的,如/tmp
updatedb
# 查找
locate /syz
# 如果出现一些文件无法找到的情况,那是因为收到了限制
# 修改配置文件,解除限制
vim /etc/updatedb.conf #把yes改为no

# 查找不区分大小写
touch /SyZ.txt
updatedb
locate -i syz

which

快速查找命令的位置

1
2
3
4
5
6
7
8
which ls
alias ls='ls --color=auto'
/usr/bin/ls
which rm
alias rm='rm -i'
/usr/bin/rm
# 其实在Linux系统中,我们执行rm命令时,之所以会再次提醒确认删除
# 不是rm这个命令特有的,而是 rm 通过 alias 映射成了 rm -i

grep

是不是感觉学过了?

扩展嘛,再来深入一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 不区分大小写的查找
touch /syz.txt
echo -e "Syz\nsyz\nSyz\nasdasfsSyz\nafaaaesyz\n12412421\nwrfwafsa" >> /syz.txt
grep -i "syz" /syz.txt

# 反向查找
touch /test.txt
vim /test.txt

# 填入以下内容
--------------------------
# this is a test
hello world
# hello world
hi!
--------------------------
grep -v "^#" /test.txt # 只输出不带有 # 的行

who

查看当前所有用户的登录情况

1
2
3
4
5
6
7
8
9
who

# 以什么用户身份登录的 登录方式 登录的时间 (登录机器的IP段)
root tty1 2019-10-08 16:20
root pts/0 2019-10-08 16:20 (10.211.55.2)
root pts/1 2019-10-08 21:46 (10.211.55.2)
# 解析:
# tty 表示为本地终端登录的
# pts 表示为远程登录的

uptime

查看服务器已经运行的时间

1
2
3
uptime
# 初始时间 状态 已经运行的时间 当前总共几个用户登录 负载均衡
20:50:09 up 4:30, 2 users, load average: 0.00, 0.01, 0.05

w

查看 uptime who 的综合信息(比这两者还要多一点东西)

1
2
3
4
5
6
7
8
9
10
11
w

21:48:25 up 5:28, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 16:20 7:29 0.02s 0.02s -bash
root pts/0 10.211.55.2 16:20 57:05 0.24s 0.24s -bash
root pts/1 10.211.55.2 21:46 1.00s 0.04s 0.03s w

# 解析:
# 第一行: 机器开机时间 状态 已经运行的时间 已经登陆了几个用户 负载均衡
# 第三行: 用户身份 登录方式 来自哪个网段 何时登录的 累计空闲时间 累计占用CPU资源的时间 占用CPU资源的时间 当前执行的命令

write

给某个在线用户发送信息

1
2
3
4
5
6
7
8
9
10
useradd syz
passwd syz
# 重新打开一个终端,以syz用户登录
# 回到root用户下的终端中,给syz用户发送信息
write syz
hello
world

# 最后最好回车一下,然后ctrl + d 结束,发送
# 然后就会在syz用户的终端下收到消息

wall

给所有的在线用户发送消息(包括自己)

这里不再演示

ping

/bin/ping
测试网络的连通性

1
2
3
# -c : 指定发送的次数
ping -c 3 baidu.com
# 结尾的时间越短,证明网络连通性越好

ifconfig

功能:查看和设置网卡信息
英文全称:interface configure
路径:/sbin/ifconfig
使用权限:root

1
2
3
4
5
6
# 查看本机IP地址
ifconfig

# 设置临时IP地址
# 语法: ifconfig 网卡名称 IP地址
ifconfig eth0 10.0.0.10

mail

功能:查看邮件或给用户发送邮件
路径:/bin/mail
执行权限:所有用户

1
2
3
4
5
6
7
8
9
10
11
12
# 给 syz 用户发送邮件
mail syz

hello

# ctrl + d

#查看邮件
mail
# h : 列出所有邮件
# 数字 : 输入列出的邮件的索引号即可查看对应的邮件内容
# d 数字 : 删除相应的邮件

last 和 lastlog

last

功能:列出现在和过去所有用户的登陆信息,包括系统什么时候重启

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
last

root pts/3 10.211.55.2 Tue Oct 8 22:55 - 22:55 (00:00)
root pts/1 10.211.55.2 Tue Oct 8 22:55 still logged in
syz pts/2 10.211.55.2 Tue Oct 8 22:54 still logged in
root pts/1 10.211.55.2 Tue Oct 8 22:22 - 22:55 (00:32)
root pts/1 10.211.55.2 Tue Oct 8 21:46 - 22:22 (00:36)
root pts/0 10.211.55.2 Tue Oct 8 16:20 still logged in
root tty1 Tue Oct 8 16:20 still logged in
reboot system boot 3.10.0-693.el7.x Tue Oct 8 16:19 - 23:38 (07:18)
root pts/0 10.211.55.2 Mon Oct 7 19:26 - down (02:01)
root tty1 Mon Oct 7 19:24 - 21:27 (02:03)
reboot system boot 3.10.0-693.el7.x Mon Oct 7 19:23 - 21:27 (02:04)
root pts/0 10.211.55.2 Sun Oct 6 11:39 - crash (1+07:44)
root tty1 Sun Oct 6 11:18 - 13:14 (01:56)
reboot system boot 3.10.0-693.el7.x Sun Oct 6 11:17 - 21:27 (1+10:10)

wtmp begins Sun Oct 6 11:17:26 2019

lastlog

功能:只查看所有用户(包括不可登录的用户)的最后一次的登录信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看所有用户(包括不可登录的用户)的最后一次的登录信息
lastlog

# 通过用户的uid查看对应用户的最后一次登录信息
# 查看root用户的最后一次登录信息
lastlog -u 0
用户名 端口 来自 最后登陆时间
root pts/3 10.211.55.2 二 10月 8 22:55:46 +0800 2019

# 查看syz用户的最后一次登录信息
# 首先查看用户syz的uid
cat /etc/passwd | grep syz
syz:x:1002:1002::/home/syz:/bin/bash
lastlog -u 1002
用户名 端口 来自 最后登陆时间
syz pts/2 10.211.55.2 二 10月 8 22:54:35 +0800 2019

traceroute

功能:显示数据包到主机间的路径,可以用来排除网络在哪里出现了问题
执行权限:所有用户
语法:traceroute 网址(或域名)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
traceroute www.imau.edu.cn
# 可能是因为网络的问题,到后面太慢,所以只粘贴了一点
traceroute to www.imau.edu.cn (222.74.205.105), 64 hops max, 52 byte packets
1 bogon (192.168.43.249) 3.731 ms 2.668 ms 3.235 ms
2 * * *
3 bogon (172.20.1.89) 96.085 ms 25.947 ms 24.937 ms
4 * * *
5 111.56.28.17 (111.56.28.17) 39.030 ms 53.792 ms 20.011 ms
6 221.183.13.109 (221.183.13.109) 17.659 ms 33.792 ms 24.449 ms
7 * * *
8 * * *
9 221.183.66.2 (221.183.66.2) 106.024 ms
221.183.30.58 (221.183.30.58) 39.249 ms *
10 202.97.57.197 (202.97.57.197) 185.827 ms
202.97.88.233 (202.97.88.233) 52.745 ms 58.777 ms
11 202.97.28.190 (202.97.28.190) 92.896 ms
202.97.28.194 (202.97.28.194) 117.207 ms 114.305 ms
12 219.148.161.234 (219.148.161.234) 69.864 ms
219.148.167.170 (219.148.167.170) 76.444 ms
219.148.167.150 (219.148.167.150) 63.254 ms
13 * * *
14 123.178.212.154 (123.178.212.154) 136.865 ms
123.178.212.150 (123.178.212.150) 68.919 ms 69.143 ms
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *

netstat

功能:显示网络相关信息
执行权限:所有用户
语法:netstat [选项]

选项:

  • -t : TCP协议
  • -u : UDP协议
  • -l : 监听
  • -r : 路由
  • -n : 显示IP地址和端口号
1
2
3
4
5
6
7
8
# 示例
# 1. 查看本机监听的端口
netstat -tlun
# 2. 查看本机所有的网络连接
# -a : 表示 all
netstat -an
# 3. 查看本机路由表
netstat -rn

nmtui

功能:配置网络

配置完记得要执行 systemctl restart network 才能生效

mount 挂载

这是对Linux笔记中的 mount 的扩展

最初,CentOS没有了图形界面,我不知道如何才能把镜像光驱挂载到本地磁盘

现在知道了

👨‍💻‍

1
2
3
4
5
# 首先让虚拟机连接上 镜像文件
mkdir /mnt/centos
mount -t iso9660 /dev/sr0 /mnt/centos
# 其实可以简写
mount /dev/sr0 /mnt/centos

chage 查看密码信息

功能:查看用户密码相关信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 语法:chage [选项] 用户名
# 选项:
-l : 列出用户的详细密码信息
-d : 修改密码最后一次更改日期
-m : 两次密码修改间隔
-M : 密码有效期
-W : 密码过期前警告天数
-I : 密码过期后宽限天数
-E : 密码失效时间

chage -l syz

最近一次密码修改时间 :10月 08, 2019
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7

# 上面的内容弄了解即可,不是太重要,因为这样还不如直接进入shadow文件内修改来的直观

# 重要的一条命令:
chage -d 0 syz #该用户下次登录时,必须先修改密码
# 不要使用root用户直接su进入该用户,应该新开一个终端登录该用户

chattr

英文意思是 change attribute

注意:root 超级管理员也不可以跨越chattr设定的规则!!!

暗叫一声:666…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# 语法: chattr {+ - =} [选项] 文件或目录名
# 选项:
-i : 如果对文件设置了 i 属性,那么不允许对文件进行删除和改名,也不能添加和修改数据
如果对目录设置了 i 属性,那么只能修改目录下文件的数据,但不允许新建和删除文件
-a : 如果对文件设置了 a 属性,那么只能在文件中增加数据,不能删除和修改数据
如果对目录设置了 a 属性,那么只允许在目录中新建和修改文件,但是不允许删除

********************************************************************

# 1. i 的测试
# 1.1 i 之文件下的测试
# 新建一个名为111.txt的文件
touch 111.txt
# 给111.txt设置chattr
chattr +i 111.txt

# 查看当前目录下是否设置了chattr
# 语法: lsattr [选项]
# 选项:
-a : 查看所有
-d : 查看当前目录本身,不查看子目录
lsattr -a

# 尝试在111.txt中添加数据
echo hello >> 111.txt
-bash: 111.txt: 权限不够
# 尝试删除111.txt
rm -rf 111.txt
rm: 无法删除"111.txt": 不允许的操作

*********************************************************

# 1.2 i 之目录下的测试
mkdir /test
touch /test/aaa.txt
chattr +i /test
lsattr -a /test
echo hello >> /test/aaa.txt #可以对该目录下的文件写入数据
touch /test/bbb.txt #但是不能创建文件
touch: 无法创建"/test/bbb.txt": 权限不够
rm -rf /test/aaa.txt
rm: 无法删除"/test/aaa.txt": 权限不够

*********************************************************

# 2. a 的测试
# 2.1 a 之文件下的测试
touch aaa
echo hello >> aaa
cat aaa
chattr +a aaa
lsattr -a
echo 111 >> aaa #向aaa文件内追加新数据,不修改原来的数据
echo 222 > aaa #向aaa文件内覆盖写入数据,尝试修改原来的数据,发现没有权限
-bash: aaa: 不允许的操作

*********************************************************

# 2.2 a 之目录下的测试
mkdir /test2
chattr +a /test2
lsattr -a /test2
touch /test2/aaa
touch /test2/bbb
echo aaa >> /test2/aaa
rm -rf /test2/aaa
rm: 无法删除"/test2/aaa": 不允许的操作

*********************************************************

# 总结一下

i 选项相对于 a 选项来说要严格一些

i 总的来说就是: 不可以增加 不可以删除
a 总的来说就是: 可以增加,不可以删除

两者对于目录的chattr设置,目录下的文件都可以进行修改

sudo 权限

root 用户将只能超级用户执行的命令赋予普通用户执行

注意: sudo的操作对象是系统命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
visudo  #实际上打开的是 /etc/sudoers

#用户 被管理主机的地址=(可以使用的身份) 授权命令(需要使用绝对路径)
root ALL=(ALL) ALL
#组名 ...
%wheel ALL=(ALL) ALL

# 示例
# 打开 visudo
# 在 root ALL=(ALL) ALL 下面加入一行
syz 10.211.55.5 /sbin/useradd

# 切换至该用户
su - syz

# 查看该用户在 sudo 中可以执行的命令
sudo -l
[sudo] syz 的密码:
匹配 %2$s 上 %1$s 的默认条目:
!visiblepw, always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR
LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER
LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

用户 syz 可以在 centos-server 上运行以下命令:
(root) /sbin/useradd

# 测试该命令
sudo useradd syz1 #不报错,即运行成功

# 退出
exit
*********************************************************

#使用其他用户测试
su - zhangsan
sudo useradd zhangsan1
[sudo] zhangsan 的密码:
zhangsan 不在 sudoers 文件中。此事将被报告。

*********************************************************

# 下面这个例子只是做示范,警告同学们不要这么操作

visudo

syz ALL=/usr/bin/vim

# 注意: 这是很危险的
# 因为这样的话,执行sudo命令后代表syz用户拥有了和root一样的vim编辑权限
# 甚至可以编辑/etc/passwd
su - syz
sudo /usr/bin/vim /etc/passwd #可以不写绝对路径,直接写 vim
# 可以修改并保存,很危险

文件系统常用命令

df du fsck dumpe2fs

df-文件系统查看命令

1
2
3
4
5
6
7
8
9
# 语法:df [选项] 挂载点
# 选项:
-a : 显示所有文件系统信息,包括特殊文件系统(如/proc,/sysfs)
-h : 使用习惯单位显示容量
-T : 显示文件系统类型(KB,MB,GB)
-m : 以 MB 为单位显示容量
-k : 以 KB 为单位显示容量
# 常用
df -Th

du-统计目录或文件大小

一般用来统计目录的大小

1
2
3
4
5
6
7
# 语法: du [选项] [目录或文件名]
# 选项:
-a : 显示每个子文件的磁盘占用量
-h : 使用习惯单位显示磁盘占用量
-s : 统计总占用量而不列出目录和文件的占用量
# 常用
du -sh /

df 与 du 的区别

df 命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经被删除,但是程序并没有释放空间)

du 命令是面向文件的,只会计算目录或文件的占用的空间

fsck-文件系统修复命令

1
2
3
4
# 语法: fsck [选项] 分区设备文件名
# 选项:
-a : 不用显示用户提醒,自动修复文件系统
-y : 自动修复,和 -a 选项作用一致,不过有些文件系统只支持 -y

dumpe2fs-显示磁盘状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 语法: dumpe2fs 分区设备文件名

dumpe2fs /dev/sdb1

dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: <none> #卷标
Last mounted on: <not available> #挂载点
Filesystem UUID: 49900854-b38a-4f2d-80bb-825863b86684 #分区UUID
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 131072 #i节点数
Block count: 524288 #块数量
Reserved block count: 26214
Free blocks: 498132
Free inodes: 131061
First block: 0
Block size: 4096 #块大小
Fragment size: 4096
Group descriptor size: 64
Reserved GDT blocks: 255
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Sun Oct 6 11:52:35 2019
Last mount time: Sun Oct 6 12:00:17 2019
Last write time: Sun Oct 6 13:14:11 2019
Mount count: 1
Maximum mount count: -1
Last checked: Sun Oct 6 11:52:35 2019
Check interval: 0 (<none>)
Lifetime writes: 97 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: 214be6cc-19b8-4bff-92ed-13a372f7b4b1
Journal backup: inode blocks
Journal features: journal_64bit
日志大小: 64M
Journal length: 16384
Journal sequence: 0x00000004
Journal start: 0

本文标题:Linux笔记扩展

文章作者:尚先森

发布时间:2019年10月08日 - 16:49:06

最后更新:2023年02月20日 - 18:08:41

原始链接:https://imauu.gitee.io/2019/10/08/Linux笔记扩展/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

尚先森 wechat
有任何问题可以扫描上方二维码私聊我哦😊
您的支持是我创作的最大动力^_^