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. 查看用户信息
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❌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
|