1
2

ip addr | tail -4 | head -1

2. 文件内容过滤

wc 指令

1
2
3
4
5
wc # word count 统计字节数
wc -l # 按行统计
wc -c # 字符数

ls /bin | wc -l # 统计 bin目录多少个命令

seq 指令

1
2
3
4

seq -w 5 110 # 输出等宽字符

seq 1 3 # 输出数字 1-3

grep 指令

1
grep -n '333' hello.txt # 输出行号 

正则 和 三剑客

1
2
3
4
man sort 
man uniq 
man grep 
cat /var/log/secure  | grep 'Failed' | sort -n | uniq -c 

3. 用户组 和 用户

用户和用户组是多对多的关系

一个用户可以属于多个组, 一个组管理多个用户

通过用户组可以给用户分配权限,用户可以继承组里面的权限

1
2
3
4
5
6
7
8
useradd jaden

# add user

userdel test1

# del user 
ls /home/

用户配置文件在 ~/ 目录, 每次创建用户都会从 /etc/skel/ 目录下拷贝模板目录文件

3.1. 查看用户信息

1
lchage

4. 文件权限管理

r 4 表示读 w 2 表示写 x 1 表示 可执行权限 - 0 表示空权限,没有这个权限,9位权限不能少,没有的权限就用 - 代理

权限值表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
0 ---
1 --x 
2 -w-
3 -wx 
4 r-- 
5 r-x 
6 rw-
7 rwx


ugo 权限体系

rw-  r--    r-- 
user group  other 
1
2
3
4
5
6
lyr@ikun:/etc/ssh$ ls -al
总计 24
drwxr-xr-x   3 root root  4096  1月 19 03:26 .
drwxr-xr-x 155 root root 12288  3月 31 00:01 ..
-rw-r--r--   1 root root  1650  7月 20  2023 ssh_config
drwxr-xr-x   2 root root  4096  7月 20  2023 ssh_config.d

chmod 可以修改权限

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
chmod -rx 1.txt 
# 去掉 rx 权限

chmod o-r 1.txt 
# other 权限控制
chmod u+x 1.txt 
chmod g+x 1.txt 

# ugo 权限体系
chmod +rwx 1.txt 
# 给 ugo 全部加权限

5. gid 和 uid

1
2
3
4
5

lyr@ikun:~/.config/nvim$ ls -l
总计 40
-rw-rw-r-- 1 lyr lyr    72  3月 17 23:11 init.lua
-rw-rw-r-- 1 lyr lyr  5618 12月 13 23:23 lazy-lock.json
1
2
3
4
5

cat /etc/passwd

lyr@ikun:~/.config/nvim$ cat /etc/passwd | grep 'lyr'
lyr:x:1000:1000:Ly,,,:/home/lyr:/bin/bash

1000 这个数字就是 用户的 gid

1
2
chown 1000:1000 /var/www
# change owner 为 用户 uid=1000 ,gid = 1000

文件和目录权限控制

一般文件为了安全都是 给 644权限,狠一点就给 600权限 目录权限: 一般给 755权限,狠一点就给 700权限

目录权限说明:

r 表示可以查看目录有哪些文件,x表示可以cd到这个目录,w表示可以在目录中创建、修改、删除文件等操作

6. 文件属性

1
- 文件,d目录,l表示软连接,b块设备(ls -l /dev)

selinux 可以保护文件,如果开启 selinux ,这个东西很安全,但是修改文件会比较麻烦

特殊权限 suid

SUID,全称为SetownerUserID upon execution,是在Linux/Unix系统中给予文件的一个特殊类型的文件权限。当程序拥有SUID权限后,它会以文件所有者的身份来执行,这意味着即使是普通用户,也能执行某些原本需要root权限的命令。例如,passwd和ping等命令就常常使用SUID权限。

SUID权限通过“s”字符在用户权限位的x对应权限位置标识,若文件本身的用户权限位就有x权限,则设置SUID权限时,会以小写“s”表示。在数字表示法中,给文件设置SUID权限对应的数字是4,在八进制数下可以用4000表示。SUID权限的设置可以使用chmod命令,并且只适用于二进制可执行文件。

请注意,尽管SUID权限在某些场景下非常有用,但也存在安全风险。因此,在设置和使用SUID权限时,需要谨慎考虑其潜在的安全影响。

1
2
3
4
lyr@ikun:~$ which passwd
/usr/bin/passwd
lyr@ikun:~$ ll /usr/bin/passwd 
-rwsr-xr-x 1 root root 59976  2月  6 20:54 /usr/bin/passwd*

上面 rws , s 是打上了特殊权限

1
2
3
4
5
6
7
chmod u-x /usr/bin/passwd
ll /usr/bin/passwd
# -rwSr-xr-x 1 root root 59976  2月  6 20:54 /usr/bin/passwd*

# S 表示-的意思

cat /etc/shadow

有了suid 之后,普通用户就能用 passwd这个命令,用的时候会有临时root的权限 没suid标记,普通用户用不了,只能root用

SUID的目的就是:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源。passwd就是一个很鲜明的例子,下面我们就来了解一下这相passwd执行的过程。 我们知道,系统中的用户密码是保存在/etc/shadow中的,而这个文件的权限是———-. (这个权限和以前版本的RHEL也有差别,以前的是-r——–)。其实有没有r权限不重要,因为我们的root用户是拥有最高的权限,什么都能 干了。关键是要把密码写入到/etc/shadow中。我们知道,除了root用户能修改密码外,用户自己同样也能修改密码,为什么没有写入权限,还能修 改密码,就是因为这个SUID功能。

7. ssh

https://www.cnblogs.com/liuwei-xd/p/11048399.html

1
2

systemctl restart sshd 

8. shell快捷键

两次tab键可以加载预选型

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
ctrl a 跳转首部 
ctrl e  调到尾部

ctrl c 停止命令
ctrl d  退出 shell 
ctrl z  暂停任务,fg继续执行
ctrl l  clear 
ctrl   k   删除光标到行末字符
ctrl u 删除到行首
ctrl r  搜索
ctrl w  删除单词,空格分隔

压缩和解压缩

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
tar: 解压为 xx.tar.gz 

压缩: tar -zcf  压缩包路径 目标1  目标2
解压缩  tar -zxf  解压缩路径


tar -zcf jj.tar.gz 1.txt  2.txt
tar -zxf jj.tar.gz ./tmp/

ls -lh

tar -zcf 是一个在Unix和Linux系统中用于文件归档和压缩的命令组合。这里的 tar 是一个命令行工具,用于将多个文件和目录打包成一个单独的文件(通常称为“tarball”)。

具体来说,tar -zcf 命令中的各个选项的意义如下:

-z: 使用gzip压缩算法对归档文件进行压缩。 -c: 创建一个新的归档文件。 -f: 后面紧跟归档文件的名称。这告诉 tar 命令你想要创建或操作的归档文件的名称。 所以,当你看到 tar -zcf somefile.tar.gz directory/ 这样的命令时,它的意思是:将 directory/ 目录及其内容打包成一个新的归档文件,并使用gzip算法进行压缩,最后保存为 somefile.tar.gz。

具体来说,tar -zxf 命令中的各个选项的意义如下:

-z: 表示使用gzip压缩算法。在解压时,它告诉 tar 命令该归档文件是用gzip压缩的,因此需要先进行解压缩操作。 -x: 表示提取文件,即从归档文件中解压出文件或目录。 -f: 后面紧跟归档文件的名称。这告诉 tar 命令你想要操作的是哪个归档文件。 因此,tar -zxf archive.tar.gz 这样的命令会解压名为 archive.tar.gz 的gzip压缩的tar归档文件。

简而言之,tar -zxf 允许你解压由gzip压缩的tar归档文件,从而访问其中的文件或目录。

如果没有 -z 参数,那么文件大小则不会被压缩

gzip,zip 指令 和 解压 rar格式文件

1
2
3
4
5
6
7
8
gzip services
gzip -d services.gz  # gz 格式结尾
ls -lh

# gzip 会删除原文件
unrar a.rar  # rar 常在windows使用,linux不常用,需要安装命令

zip -r 1.txt 

tcpdump 和 wireshark抓包

1
2
3
4
5
6
7
8
9

sudo tcpdump -i lo  -n icmp

ping localhost 

# 15:33:02.493457 IP 127.0.0.1 > 127.0.0.1: ICMP echo request, id 3, seq 1, length 64
# 15:33:02.493556 IP 127.0.0.1 > 127.0.0.1: ICMP echo reply, id 3, seq 1, length 64
# 15:33:03.509146 IP 127.0.0.1 > 127.0.0.1: ICMP echo request, id 3, seq 2, length 64
# 15:33:03.509246 IP 127.0.0.1 > 127.0.0.1: ICMP echo reply, id 3, seq 2, length 64

服务管理

服务的操作: 开机自动启动, 重启服务,启动服务,停止服务

1
2
3
systemctl status httpd # apache 网站服务程序
systemctl stop httpd 
systemctl restart httpd

组合指令

> 输处重定向 >> 追加输出重定向 < 输入重定向 << 追加输入重定向

& 后台运行

``` 反引号,用来嵌套命令, 反引号中的命令会先执行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13

top & 
ps -ef | grep top 

cd ~ # 家目录 

touch test_`date +%T`.txt 
ls 

tar -zcf /tmp/etc.tar.gz `find /etc -type f -name "*.conf"`

ls /tmp/
tar -tf /tmp/etc.tar.gz

linux 运行级别

运行级别 0 关机 1 单用户 2 不带网络的用户,不能联网 3 完整多用户 4 保留 5 桌面模式, 如果不想开机进入图形化界面,就需要改运行级别 6 重启

1
2
runlevel 
# 我是桌面系统,基本是 5

umask 权限值

1
2
3
4
5
6
umask 
# 002
# 文件初始权限 0666 - 022 = 0622
# 目录初始权限 0777 - 0044 = 0733

# 如果需要给文件权限 组和 其他人的权限很低,我们就可以给umask 加大点,这样就能控制别人的权限小一点

inode 相关

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
lyr@ikun:~$ df -ih
文件系统        Inodes 已用I 可用I 已用I% 挂载点
tmpfs             1.9M  1.4K  1.9M     1% /run
/dev/nvme0n1p9    8.8M  852K  8.0M    10% /
tmpfs             1.9M   504  1.9M     1% /dev/shm
tmpfs             1.9M     5  1.9M     1% /run/lock
efivarfs             0     0     0      - /sys/firmware/efi/efivars
/dev/nvme0n1p1       0     0     0      - /boot/efi
tmpfs             390K   212  389K     1% /run/user/1000
/dev/nvme0n1p10   6.4M  487K  6.0M     8% /media/lyr/d544dc26-3365-4c60-812e-42acd2455e23
/dev/nvme0n1p5       0     0     0      - /media/lyr/软件


lyr@ikun:~$ df -h
文件系统         大小  已用  可用 已用% 挂载点
tmpfs            1.6G  2.3M  1.6G    1% /run
/dev/nvme0n1p9   137G   56G   75G   43% /
tmpfs            7.6G  180M  7.5G    3% /dev/shm
tmpfs            5.0M  4.0K  5.0M    1% /run/lock

inode 是索引文件, blocks 是 块文件(windows叫做簇)

neovim 配置 等

https://zhuanlan.zhihu.com/p/382092667

常见问题 为什么图标是乱码? 因为你需要把你的终端字体改成Nerd Font字体。

tmux 配置

参考on-my-tmux

参考教程

每次打开终端的时候,如果上一次tmux没关闭,则attach到上一次的tmux,否则新开一个tmux

-z 可以判空,然后 2>/dev/null 可以丢弃错误信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[[ $- != *i* ]] && return

if [[ -z "$TMUX" ]]; then
	ID="$(tmux ls 2>/dev/null | grep 'attach' | cut -d: -f1 2>/dev/null)" # get the id of a deattached session
	if [[ -z "$ID" ]]; then                                               # if not available create a new one
		# echo "do---"
		# sleep 2
		tmux new-session
	else
		tmux attach-session -t "$ID" # if available attach to it
	fi
fi

sudo

1
2
3
# 配置在 /etc/sudoers
vim /etc/sudoers 
visudo # 也可以直接visudo