声明!
通过学习 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频,做出的文章,如涉及侵权马上删除文章,笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负.
文章为个人学习笔记。
目录
-
/bin:存放二进制可执行文件,这些是系统命令,如ls、cp等,它们对所有用户都可用。
-
/etc:用于存放系统管理和配置文件,如网络配置、用户信息等。
-
/etc/rc.d:存放启动时的配置文件和脚本,用于系统启动和关闭时执行特定的任务。
-
/home:用户的主目录,每个用户都有一个自己的目录,存放个人文件和设置。
-
/lib:存放标准程序设计库,这些库文件是系统程序和应用程序运行时需要的。
-
/sbin:存放超级用户(root)使用的管理程序,如系统服务和系统配置工具。
-
/tmp:用于存放临时文件,这些文件在系统重启后可能会被删除。
-
/root:超级用户(root)的主目录,存放root用户的个人文件。
-
/mnt:用于挂载临时文件系统,如光盘、USB驱动器等。
-
/lost+found:在文件系统检查(如fsck)后,无法恢复的文件会被移动到这里。
-
/proc:虚拟文件系统,提供系统内核和进程信息,如进程状态、内存使用等。
-
/var:用于存放经常变化的文件,如日志文件、缓存和临时电子邮件文件。
-
/usr:存放用户程序和文件,包括应用程序、库文件、文档、源代码等。最庞大的目录,要用到的应用程序和文件几乎都在这个目录
-
/usr/bin 存放了普通用户的可执行程序。
-
/usr/sbin 存放了超级用户(root)使用的系统管理程序。
补充内容:
-
/boot:存放启动加载器和内核文件,是系统启动时必须的目录。
-
/dev:存放设备文件,这些文件代表系统中的设备,如硬盘、终端等。
-
/media 和 /mnt 类似,用于挂载可移动媒体,但通常由系统自动挂载。
-
/opt:用于存放可选的应用程序包,通常是第三方软件。
-
/srv:用于存放服务相关的数据,如网站数据、FTP服务器数据等。
-
/sys:提供系统和设备信息的虚拟文件系统,类似于/proc。
命令
ls命令目录内容
ls 是 Linux 和类 Unix 系统中用于列出目录内容的命令。
基本用法
-
ls:列出当前目录下的文件和目录。
-
ls [选项] [目录]:列出指定目录下的文件和目录。
常用选项
-
-l:长格式列出信息,包括文件权限、所有者、大小和最后修改时间。
-
-a:列出所有文件,包括隐藏文件(以.开头的文件和目录)。
-
-A:列出所有文件,但不包括 . 和 ..。
-
-h:以易读的格式显示文件大小(例如,以 K、M、G 为单位)。
-
-R:递归列出所有子目录的内容。
-
-t:按修改时间排序,最新的文件在前。
-
-S:按文件大小排序。
-
-r:逆序排列。
-
-i:显示文件的 inode 号。
-
--color:使用颜色高亮显示不同类型的文件。
示例
ls -l
ls -l:列出当前目录下的文件和目录的详细信息。
ls -l

ls -lh
ls -lh:以易读的格式列出当前目录下的文件和目录的大小。
ls -lh

ls -lR
ls -lR:递归列出当前目录及其所有子目录的详细信息。


ls -lt
ls -lt:按修改时间排序列出当前目录下的文件和目录。
ls -lt

ls -lS
ls -lS:按文件大小排序列出当前目录下的文件和目录。
ls -lS
//大S

ls -ls
//小s

ls -la
ls -la:列出当前目录下的所有文件和目录,包括隐藏的。
ls -la

ls 目录
ls /root/work:列出指定目录下的文件和目录。
ls /root/work

ls的内容
目录
drwxr-xr-x 3 root root 4096 10月 4日 18:41 work
-
权限:drwxr-xr-x 表示这是一个目录(d),所有者(root)有读(r)、写(w)和执行(x)权限,所属组(root)和其他用户只有读(r)和执行(x)权限。
-
链接数:3 表示这个目录有三个链接,包括 .、.. 和目录本身的链接。
-
所有者:root
-
组:root
-
大小:4096 字节,这是目录的元数据大小,不包括其中的内容。
-
修改日期:10月 4日 18:41
-
名称:work,这是一个目录的名称。
符号链接
lrwxrwxrwx 1 root root 11 10月 3日 15:47 .face.icon -> /root/.face
-
权限:lrwxrwxrwx 表示这是一个符号链接(l),所有者(root)、所属组(root)和其他用户都有读(r)、写(w)和执行(x)权限。
-
链接数:1 表示这是一个符号链接。
-
所有者:root
-
组:root
-
大小:11 字节,这是符号链接的目标路径的长度。
-
修改日期:10月 3日 15:47
-
名称:.face.icon,这是一个符号链接的名称,它指向 /root/.face。
普通文件
-
权限:-rw-r--r-- 表示这是一个普通文件(-),所有者(root)有读(r)和写(w)权限,所属组(root)和其他用户只有读(r)权限。
-
链接数:1 表示这是一个普通文件。
-
所有者:root
-
组:root
-
大小:5551 字节,这是文件的实际大小。
-
修改日期:2024年 4月23日
-
名称:.bashrc,这是一个隐藏文件(以.开头),通常是用户的 Bash shell 配置文件。
clear(清屏)

cd(切换目录)
cd 是一个用于改变当前工作目录的命令。以下是 cd 命令的一些常用用法和选项:
基本用法
-
cd [目录]:切换到指定的目录。
-
cd:切换到用户的主目录,通常是 /home/用户名。
-
cd ~:同上,切换到用户的主目录。
-
cd ..:切换到当前目录的上一级目录。
-
cd ./:保持在当前目录,通常用于明确表示不改变目录。
-
cd -:切换到之前的工作目录。

特殊目录
-
cd /:切换到根目录。
-
cd /usr:切换到 /usr 目录。

使用环境变量
-
cd $HOME:切换到用户的主目录。
-
cd $OLDPWD:切换到之前的工作目录。

相对路径和绝对路径
-
cd dir1/dir2:使用相对路径切换到当前目录下的 dir1 目录中的 dir2 目录。
-
cd /path/to/dir:使用绝对路径切换到系统中的 /path/to/dir 目录。
注意事项
-
如果目录名包含空格,需要用引号括起来,例如 cd "dir name"。
-
如果目录不存在,cd 命令会失败,并返回一个错误信息。
-
cd 命令是 shell 内置命令,不是独立的程序,因此它的行为可能会受到 shell 配置的影响。
示例
-
cd /var/log:切换到 /var/log 目录。
-
cd ~/Documents:切换到用户主目录下的 Documents 目录。
-
cd ..:从 /home/user/docs 切换到 /home/user。
-
cd -:如果之前从 /home/user 切换到了 /home/user/docs,使用 cd - 会再次切换回 /home/user。
pwd(当前目录)

vim(文本编辑器)
vim 是一个功能强大的文本编辑器,它在 Unix 和 Linux 系统中广泛使用。vim 是 vi 编辑器的增强版,提供了更多的功能和更强大的文本编辑能力。以下是 vim 的一些基本用法和命令:
启动 Vim
-
vim [文件名]:打开一个文件进行编辑。如果文件不存在,将创建一个新文件。
-
vim +[行号] [文件名]:打开文件并跳转到指定的行号。
-
vim +[命令] [文件名]:打开文件并执行指定的 Vim 命令。
-
vim -R [文件名]:以只读模式打开文件。
Vim 模式
Vim 有三种主要模式:
-
正常模式(Normal Mode):这是 Vim 的默认模式,用于执行命令和移动光标。
-
插入模式(Insert Mode):用于插入和编辑文本。
-
可视模式(Visual Mode):用于选择文本,可以是字符、行或块。
常用命令
-
i:进入插入模式,在当前光标位置前插入文本。
-
a:进入插入模式,在当前光标位置后插入文本。
-
o:在当前行下方新开一行并进入插入模式。
-
O:在当前行上方新开一行并进入插入模式。
-
Esc:从插入模式或可视模式返回到正常模式。
-
:w:保存文件。
-
:wq 或 :x :保存文件并退出 Vim。
-
wq! : 保存文件并退出
-
:q:退出 Vim,如果文件已被修改且未保存,将提示错误。
-
:q!:强制退出 Vim,不保存修改。
-
:e [文件名]:打开一个新文件进行编辑。
-
:n:打开下一个文件。
-
:N:打开上一个文件。
-
:%s/旧文本/新文本/g:全局替换当前文件中的所有匹配文本。
移动光标
-
h:左移光标。
-
j:下移光标。
-
k:上移光标。
-
l:右移光标。
-
gg:移动到文件的第一行。
-
G:移动到文件的最后一行。
-
:行号:移动到指定行号。
可视模式
-
v:进入可视模式,用于选择单个字符。
-
V:进入可视行模式,用于选择整行。
-
Ctrl + v:进入可视块模式,用于选择列。
复制和粘贴
-
yy:复制当前行。
-
p:粘贴复制的文本。
-
dd:剪切当前行。
-
u:撤销上一个操作。
-
Ctrl + r:重做上一个被撤销的操作。
搜索和替换
-
/搜索词:向下搜索“搜索词”。
-
?搜索词:向上搜索“搜索词”。
-
n:跳转到下一个匹配项。
-
N:跳转到上一个匹配项。
其他
-
:set number:显示行号。
-
:set nonumber:隐藏行号。
-
:set paste:启用粘贴模式,用于处理特殊格式的文本。
touch 命令创建文件
touch qw.txt
touch 命令创建文件
touch 命令在 Linux 和类 Unix 系统中用于创建新的空文件、更新现有文件的访问和修改时间戳。以下是 touch 命令的详细使用过程:
基本用法
创建空文件
touch filename
-
如果 filename 不存在,touch 命令会创建一个新的空文件。
-
如果 filename 已存在,touch 命令会更新该文件的访问和修改时间戳到当前时间。
-

更新时间戳
touch -a -m filename
-
-a 选项只更新文件的访问时间。
-
-m 选项只更新文件的修改时间。
-
你可以单独使用 -a 或 -m 来更新对应的时间戳。
-

设置特定的时间戳
touch -t [[CC]YY]MMDDhhmm[.SS] filename
-
-t 选项允许你为文件设置特定的时间戳。
-
CC 是世纪的前两位数字(可选)。
-
YY 是年份的后两位数字。
-
MM 是月份(01-12)。
-
DD 是月份中的日(01-31)。
-
hh 是小时(00-23)。
-
mm 是分钟(00-59)。
-
.SS 是秒(00-61,61 用于闰秒)。
创建一个文件并设置特定的时间戳
-
touch -t 202411052100.00 filename
这里的 202411052100.00 表示的是:
-
20 表示年份 2024。
-
24 表示 11 月。
-
11 表示 11 日。
-
05 表示 5 点(早上 5 点)。
-
21 表示 21 分钟。
-
.00 表示 0 秒。

创建多个文件
touch file1 file2 file3
-
你可以一次指定多个文件名,touch 会为每个指定的文件创建空文件或更新时间戳。
-

创建目录并设置时间戳
命令:
mkdir -vp dir && touch -d "@$(date +%s)" dir
-
mkdir -vp dir:
-
mkdir:这是创建新目录的命令。
-
-v:这个选项表示“verbose”,即详细模式。当使用 -v 选项时,mkdir 命令会在终端上显示它正在执行的操作。
-
-p:这个选项表示“parents”,即父目录。如果指定的目录 dir 的父目录不存在,mkdir 命令会创建所有必需的父目录。
-
dir:这是你想要创建的目录的名称。
如果 dir 目录已经存在,mkdir -vp dir 命令不会报错,因为 -p 选项允许创建已存在的目录。
-
-
&&:
-
这是一个逻辑“与”操作符。如果它前面的命令(在这个例子中是 mkdir -vp dir)成功执行(即返回状态码 0),那么它后面的命令将被执行。如果前面的命令失败(即返回非 0 状态码),则后面的命令不会被执行。
-
-
touch -d "@$(date +%s)" dir:
-
touch:这个命令用于修改文件或目录的时间戳。
-
-d:这个选项允许你指定一个特定的日期。
-
@$(date +%s):这是一个特殊的语法,@ 符号后面跟的是一个时间戳,表示自 Unix 纪元(1970年1月1日 00:00:00 UTC)以来的秒数。date +%s 命令会输出当前时间的 Unix 时间戳。
-
dir:这是你想要修改时间戳的目录的名称。
这个命令的意思是将 dir 目录的访问和修改时间戳设置为当前时间。
-
这段代码的作用是创建一个名为 dir 的目录(如果它不存在的话),并且无论 dir 是否已存在,都会将其访问和修改时间戳设置为当前时间。如果目录创建成功,那么时间戳修改命令会被执行;如果目录创建失败,时间戳修改命令不会被执行。

递归更新时间戳
touch -r re.txt rt.txt
-
-r 选项允许你将 targetfile 的时间戳设置为 referencefile 的时间戳。
-

检查文件是否存在
touch file &>/dev/null
-
如果 file 存在,touch 命令不会输出任何内容。
-
如果 file 不存在,touch 命令会返回错误。
-
&>/dev/null 会将标准输出和标准错误都重定向到 /dev/null,即不显示任何输出。
-
touch file:
-
touch 命令用于创建一个名为 file 的新空文件,如果文件已存在,则更新其访问和修改时间戳为当前时间。
-
-
&>/dev/null:
-
&> 是重定向输出的组合符号,它同时将标准输出(stdout)和标准错误(stderr)重定向到指定的位置。
-
/dev/null 是一个特殊的设备文件,被称为位桶或黑洞。任何重定向到 /dev/null 的数据都会被丢弃,就像被丢进了一个无底洞一样。
-
touch file &>/dev/null 命令创建了一个名为 file 的新空文件,并且不会在终端显示任何输出信息,包括正常操作的信息和可能出现的错误信息,因为所有的输出(包括标准输出和标准错误)都被重定向到了 /dev/null。

mkdir命令(创建目录)
mkdir -p 123/1/2/3
mkdir -pv 123/1/2/3

mkdir命令创建目录
1. 基础用法
-
创建单个目录:
mkdir directory_name在当前路径下创建一个名为directory_name的新目录。
-

-
创建多个目录:
mkdir dir1 dir2 dir3在当前路径下一次性创建三个目录:dir1、dir2和dir3。
-

2. 创建嵌套目录
-
使用-p参数:
mkdir -p dir1/dir2/dir3递归创建目录,即如果上级目录不存在则先创建上级目录,再创建当前目录。
-

3. 查看创建目录信息
-
使用-v参数:
mkdir -v test显示创建目录的信息。
-

4. 设置目录权限
-
使用-m参数:
mkdir -m 777 test123创建一个名为test的目录,并设置其权限为777(即所有用户都有读、写和执行权限)。
-

5. 同时使用多个选项
-
组合使用-v和-p参数:
mkdir -vp test1/test2 mkdir -v -p test1/test2这两条命令实现了相同的功能,即同时采用两个选项。
6. 创建带有特殊字符的目录
-
使用引号:
mkdir "dir with space"创建一个名为dir with space的目录,其中包含空格。
-

7. 重复创建目录
-
使用-p参数避免错误:
mkdir -p dir4如果目录dir4已存在,则不会返回错误。
-

8. 创建只读目录
-
使用-m参数设置权限为444:
mkdir -m 444 read_only_dir创建一个名为read_only_dir的目录,只有读取权限。
-

参数列表
| 参数 | 描述 |
|---|---|
| -m, --mode=MODE | 设置新目录的文件模式,即权限。 |
| -p, --parents | 递归创建目录,即如果指定的上级目录不存在则先创建上级目录,再创建当前目录。 |
| -v, --verbose | 创建新目录后,打印一条信息。 |
| -Z, --context[=CTX] | 将新创建的目录设置为SELinux安全上下文CTX。 |
| --help | 显示帮助信息并退出。 |
| --version | 显示版本信息并退出。 |
总结
mkdir命令在Linux系统中用于创建新目录,支持创建单个或多级目录、设置目录权限、查看创建过程的详细信息等功能。掌握mkdir命令对于有效地在Linux环境下管理和组织文件系统是非常有帮助的。
cat 命令
在Linux中,cat命令是一个常用的文本处理工具,用于查看、创建、合并和比较文件。
基本用法
查看文件内容
cat we.txt
显示we.txt文件的内容。

创建新文件
cat > we3.txt
创建一个名为we3.txt的新文件,并等待用户输入内容,输入结束后按Ctrl+D结束。

<<EOF
用 cat 和 Here Document(<<EOF)的组合,用于创建或覆盖一个名为 log.txt 的文件,并允许您输入多行文本直到遇到 EOF 标记。Here Document 是一种将多行输入重定向到命令的方法。
以下是如何使用这个命令的步骤:
-
执行命令:
cat >log.txt <<EOF这将打开一个 Here Document,等待您输入文本。
输入您想要写入 log.txt 的内容。您可以输入多行文本。
结束输入,输入 EOF(注意 EOF 必须单独一行,前后没有空格或字符):
EOF按下回车键,Here Document 结束,输入的内容会被重定向到 log.txt 文件中。

追加内容到文件
cat >> we3.txt
将用户输入的内容追加到we3.txt文件的末尾。

合并文件
cat we1.txt we3.txt > log.txt
将we1.txt和we3.txt的内容合并,并重定向输出到log.txt。

tac 的反向功能
tac log.txt
-
tac 是 cat 的反向功能,它会从文件最后一行开始显示内容。

选项和参数
显示行号
-n 或 --number:显示行号。
cat -n log.txt

-b 或 --number-nonblank:只显示非空行的行号。
cat -b log.txt

显示文件内容并标记文件名
cat -n we2.txt we3.txt log.txt
显示file1、file2和file3的内容,并在每行前显示文件名和行号。

显示文件内容并标记
-E 或 --end:在每一行的末尾显示$。
cat -E log.txt

-e:在每一行的末尾显示$,对于包含换行符的行,显示\和换行符。
cat -e log.txt

-t:显示制表符(^I)和换行符(^J)。
cat -t log.txt

-T:显示制表符(^I)。
cat -T log.txt

-v 或 --visual:显示非打印字符。
cat -v log.txt

高级用法
显示文件的最后几行
cat log.txt | tail -n 10
显示log.txt文件的最后10行。

显示文件的前几行
cat log.txt | head -n 10
显示filename文件的前10行。

合并多个文件并显示文件名
for file in we2.txt we3.txt log.txt; do echo "=== $file ===\n"; cat -n "$file"; done
for file in we2.txt we3.txt log.txt; do echo "\n-=- $file -=-\n"; cat -n "$file"; done
这将显示每个文件的内容,并在每个文件内容前加上文件名和行号。

比较两个文件
cat we2.txt > we3.txt
如果we2.txt和we3.txt的内容完全相同,命令将不输出任何内容。

使用cat和grep搜索特定字符串
cat log.txt | grep "qwert"
在log.txt文件中查找包含search_term的行。

使用cat和sort排序文件内容
cat log.txt | sort
对log.txt文件的内容进行排序。

使用cat和uniq去除重复行
cat log.txt | sort | uniq
对filename文件的内容进行排序并去除重复行。

head命令
在Linux中,head命令用于输出文件的开头部分,默认情况下显示文件的前10行。这个命令非常有用,尤其是当你需要快速查看一个大型文件的开始部分时。
基本用法
显示文件的前10行
head log.txt
显示log.txt文件的前10行。

显示多个文件的前10行
head we2.txt we3.txt
分别显示we2.txt we3.txt的前10行。

选项和参数
指定显示的行数
head -n lines filename
head -n 5 log.txt
显示filename文件的前lines行。例如,head -n 20 filename会显示文件的前20行。

显示多个文件的指定行数
head -n lines file1 file2
head -n 5 we2.txt we3.txt
分别显示file1和file2的前lines行。

显示文件的最后几行之前的指定行数
head -n -lines filename
head -n -5 log.txt
显示filename文件除了最后lines行之外的所有行。例如,head -n -5 filename会显示除了最后5行之外的所有行。

显示文件的前几行,但不包括二进制文件
head -q -n lines filename
head -q -n 5 log.txt
-q选项会忽略二进制文件。

显示文件的前几行,并且显示文件名
head -v -n lines file1 file2
head -v -n 5 we2.txt we3.txt
-v选项会在每组输出前显示文件名。

显示文件的前几行,并且显示字节号
head -c -n lines filename
head -c -n 5 log.txt
-c选项会显示字节号。

高级用法
合并多个文件的头部
head -n 10 file1 file2 > combined_head.txt
head -n 10 we2.txt we3.txt > log.txt
将file1和file2的前10行合并,并重定向输出到combined_head.txt。

使用管道与其他命令组合
head -n 20 filename | grep "search_term"
head -n 20 log.txt | grep "qwert"
查找filename文件的前20行中包含search_term的行。

显示多个文件的前几行,但只显示每个文件的第一次出现
head -n 10 file1 file2 | uniq
head -n 10 we2.txt we3.txt | uniq
显示file1和file2的前10行,但去除重复的行。

显示多个文件的前几行,并且对每个文件的内容进行排序
head -n 20 file1 file2 | sort
head -n 20 we2.txt we3.txt | sort
对file1和file2的前20行进行排序。

tail命令
Linux中的tail命令用于显示文件末尾的内容,默认显示文件的最后10行。
基本用法
显示文件的最后10行
tail filename
tail log.txt
显示filename文件的最后10行。

显示多个文件的最后10行
tail file1 file2
tail we2.txt we3.txt
分别显示file1和file2的最后10行,并在每个文件内容前显示文件名。

选项和参数
示文件的最后N行
tail -n N filename
tail -n 3 log.txt
显示filename文件的最后N行。例如,tail -n 20 filename会显示文件的最后20行。

实时跟踪文件的增长
tail -f filename
tail -f log.txt
实时显示filename文件的新追加的内容,常用于监控日志文件的更新。

显示文件的最后N个字符
tail -c N filename
tail -c 5 log.txt
显示filename文件的最后N个字符。

从第N行开始显示文件内容
tail -n +N filename
tail -n +5 log.txt
从第N行开始显示filename文件的内容。

与特定进程关联跟踪文件变化
tail --pid=PID -f filename
与-f选项一起使用,当指定的进程ID终止时,tail命令会停止输出。
不显示文件头信息
tail -q filename
在显示多个文件时,不显示文件名前的头信息。
总是显示文件头信息
tail -v filename
即使只显示一个文件,也显示文件名前的头信息。
设置睡眠间隔
tail -s N -f filename
与-f选项一起使用,设置每次检查文件变化的间隔为N秒。
高级用法
同时查看多个文件的末尾内容
tail -n N file1 file2
同时显示file1和file2的最后N行,并在每个文件内容前显示文件名。
监控日志文件直到特定进程结束
tail --pid=PID -f /var/log/syslog
监控/var/log/syslog文件,直到进程ID为PID的进程结束。
more命令
在Linux系统中,more命令用于逐步查看文件的内容。它一次显示一部分内容,允许用户在查看完一页后选择是否继续查看下一页。这在处理大型文件时非常有用,因为它不会一次性将整个文件内容加载到屏幕上,从而避免了屏幕滚动过快,用户来不及阅读的问题。
基本用法
-
查看文件内容
more filename显示filename文件的内容,并在每次到达屏幕底部时暂停,等待用户输入命令以继续查看。
操作命令
在使用more查看文件时,你可以使用以下按键或命令来控制显示:
-
空格键(Space):显示下一屏的内容。
-
回车键(Enter):显示下一行的内容。
-
q:退出more命令,不再显示文件的剩余内容。
-
h:显示帮助信息,包括所有可用的命令。
-
b 或 <:返回到上一屏的内容。
-
>:显示当前行的行号。
-
v:调用vi或vim编辑器编辑当前文件。
-
:f:显示当前文件的名称和已显示的百分比。
-
:n:显示下一个文件(如果有多个文件的话)。
-
:p:显示上一个文件(如果有多个文件的话)。
-
/d 或 u:在显示下一个屏幕之前,跳过指定数量的行(d表示向下跳过,u表示向上跳过)。
示例
假设你有一个名为example.txt的文件,你可以使用以下命令逐步查看其内容:
more example.txt
当你到达屏幕底部时,more会暂停,并显示--More--提示符。此时,你可以按空格键继续查看下一屏,或者按q退出。
注意事项
-
more命令在处理非文本文件时可能会显示乱码,因为它不会解释二进制数据。
-
more命令在某些情况下可能不如less命令灵活,less命令提供了更多的功能和更好的用户体验。

ssh命令
SSH(Secure Shell)是一个网络协议,用于通过加密方式远程登录和管理服务器。以下是SSH命令的一些详细用法和选项:
基本用法
-
远程登录
ssh user@hostname以user身份登录到hostname指定的远程服务器。
-
指定端口登录
ssh -p port_number user@hostname指定SSH连接的端口号,默认是22。
执行远程命令
-
执行一条命令
ssh user@hostname 'command'在远程主机上执行command命令,并在执行完毕后自动断开连接。
-
执行多条命令
ssh user@hostname 'command1;command2;command3'执行多条命令,命令之间用分号分隔。
配置SSH
-
配置文件
SSH的配置文件通常位于/etc/ssh/ssh_config,可以通过修改此文件来设置默认的SSH选项,如端口号、用户名等。~/.ssh/config中配置常用的 SSH 连接信息,方便快速连接。
Host myserver HostName example.com User username Port 2222然后可以直接用 ssh myserver 连接。
-
密钥对生成
ssh-keygen -t rsa生成SSH密钥对,通常使用RSA算法。
-
发送公钥到远程主机
ssh-copy-id user@hostname将公钥发送到远程主机,以便实现无密码登录。
SSH 代理转发
如果需要通过中间服务器访问另一个服务器,可以使用代理转发:
ssh -A username@hostname
端口转发
-
本地端口转发
ssh -L local_port:remote_host:remote_port user@ssh_server将本地端口local_port转发到远程主机的remote_port端口。
-
远程端口转发
ssh -R remote_port:local_host:local_port user@ssh_server将远程主机的remote_port端口转发到本地的local_port端口。
-
动态端口转发
ssh -D local_port user@ssh_server设置一个SOCKS代理,将所有流量通过SSH服务器转发。
高级用法
-
X11转发
ssh -X user@hostname启用X11转发,允许在远程机器上运行图形界面程序,并在本地显示。
-
SSH代理
eval $(ssh-agent) ssh-add ~/.ssh/id_rsa使用SSH代理管理密钥,并自动解锁密钥,实现多次SSH登录无需重复输入密码。
-
详细模式
ssh -v user@hostname启用详细模式,打印调试信息,有助于排查连接问题。
基本命令
chmod权限命令
chmod 是Linux系统中用于改变文件或目录权限的命令。以下是chmod命令的一些详细用法和选项:
基本用法
-
改变文件或目录权限
chmod [选项]... 模式[,模式]... 文件...其中“模式”定义了文件或目录的权限,可以由三位数字表示,每位数字分别代表所有者(user)、用户组(group)和其他人(other)的权限。每个数字是0到7之间的值,代表不同的权限组合。
权限表示法
符号表示法
-
u:所有者(user)
-
g:用户组(group)
-
o:其他人(other)
-
a:所有用户(all)
-
+:添加权限
-
-:删除权限
-
=:设置精确的权限
-
r:读权限
-
w:写权限
-
x:执行权限
例如,添加所有者对一个文件的写入权限:
chmod u+w 文件名

数字表示法
-
读(r):4
-
写(w):2
-
执行(x):1
权限可以通过将数字相加来设置。例如,设置文件权限为读、写、执行(7):
chmod 777 文件名
chmod 777 we.txt
chmod u=rwx,g=rwx,o=rwx we.txt
chmod a+rwx we.txt

选项
递归更改权限
chmod -R 模式 目录名
chmod -R 7777 exam
对指定目录及其子目录下所有文件递归地改变权限。

静默模式
chmod -f 模式 文件名
不显示错误信息。

详细模式
chmod -v 模式 文件名
显示详细信息。

参考文件权限
chmod --reference=参考文件 目标文件
使用参考文件的权限设置目标文件的权限。
示例
为文件设置读权限
chmod a+r 文件名
chmod a+r we2.txt

为文件设置读写权限
chmod 6 文件名
chmod 6 we2.txt

为文件设置所有者完全控制,组和其他用户只有读权限
chmod 744 文件名
chmod 744 we2.txt

递归设置目录权限
chmod -R 755 目录名
chmod -R 755 exam

chown命令
chown(change owner)命令在Linux系统中用于更改文件或目录的所有者(user)和/或所属组(group)。这个命令通常需要超级用户权限来执行,除非你是该文件的当前所有者并且有足够的权限来改变其所属组。
基本用法
-
更改文件或目录的所有者
chown 新所有者 文件名将文件名的所有者更改为新所有者。
-
更改文件或目录的所属组
chown :新所属组 文件名将文件名的所属组更改为新所属组。
-
同时更改所有者和所属组
chown 新所有者:新所属组 文件名同时将文件名的所有者更改为新所有者,所属组更改为新所属组。
递归更改
-
递归更改目录及其内容的所有者和/或所属组
chown -R 新所有者 文件夹名递归地将文件夹名及其所有子目录和文件的所有者更改为新所有者。
chown -R :新所属组 文件夹名递归地将文件夹名及其所有子目录和文件的所属组更改为新所属组。
引用文件
-
根据引用文件更改所有者和所属组
chown --reference=引用文件 文件名将文件名的所有者和所属组更改为与引用文件相同。
符号链接
-
更改符号链接的所有者和所属组
chown -h 新所有者 符号链接名只更改符号链接本身的所有者,而不更改它指向的目标文件。
递归和符号链接
-
递归更改,但保留符号链接的原始所有者和所属组
chown -R -H 新所有者 文件夹名递归地更改文件夹名及其内容的所有者,但对于符号链接,只更改链接本身的所有者。
示例
-
更改文件的所有者为username
chown username example.txt -
更改目录及其所有内容的所有者为username
chown -R username /path/to/directory -
更改文件的所属组为groupname
chown :groupname example.txt -
更改文件的所有者和所属组
chown username:groupname example.txt -
根据引用文件ref_file更改example.txt的所有者和所属组
chown --reference=ref_file example.txt
chown命令是Linux系统中权限管理的重要工具之一,它允许管理员和用户更改文件和目录的所有权,从而控制对这些文件和目录的访问权限。
adduser命令
-
adduser(会自动为创建的用户指定目录,系统shell版本,会在创建时输入用户密码)。
-
adduser命令会自动为新用户创建一个家目录,并设置默认的shell。在创建过程中,系统会提示输入新用户的密码。
-
-
useradd(需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码,无主目录,没有指定shell版本)
-
useradd命令需要通过参数来指定用户的家目录、默认shell等。如果不指定任何参数,创建的用户将没有密码、没有家目录,也不会设置默认的shell。
-
adduser 是一个用于在类 Unix 系统中添加新用户的命令行工具。它通常用于图形化界面的系统中,因为它会提示用户输入必要的信息,如用户名、全名、密码等。adduser 命令通常是一个脚本,它背后会调用 useradd 命令来实际创建用户账户。
以下是 adduser 命令的一些基本用法:
基本用法
添加新用户
adduser 用户名
adduser kali-2
这将启动一个交互式过程,提示您输入用户的全名、密码等信息。
这个命令会提示你输入用户的全名、房间号、工作电话、家电话、其他信息以及密码。

添加新用户并指定全名
adduser --fullname="用户全名" 用户名
adduser --comment="kali-qwe" kali-2
这将允许您为新用户指定一个全名。
这个命令会创建一个名为 kali-2 的用户,并将用户的全名设置为 kali-qwe。


添加新用户并指定家目录
adduser --home /指定路径 用户名
adduser --home /home/kali-4 kali-4
这将为新用户指定一个非标准的家目录路径。

添加新用户并指定 shell
adduser --shell /bin/bash 用户名
adduser --shell /bin/bash kali-5
这将为新用户指定一个默认的 shell。

添加新用户并指定用户组
adduser --ingroup 组名 用户名
这将把新用户添加到指定的用户组中。

选项
-
--fullname="全名":指定用户的全名。
-
--home /指定路径:指定用户的家目录。
-
--shell /bin/shell:指定用户的默认 shell。
-
--ingroup 组名:指定用户所属的组。
-
--disabled-password:创建一个没有密码的用户账户。
-
--disabled-login:创建一个不能登录的用户账户。
示例
-
添加一个新用户并指定全名和家目录
adduser --fullname="John Doe" --home /home/johndoe 用户名 -
添加一个新用户并将其添加到特定的用户组
adduser --ingroup developers 用户名 -
添加一个新用户并禁用密码
adduser --disabled-password 用户名
使用 userdel 命令删除用户
-
删除用户:
userdel 用户名这个命令会删除名为 用户名 的用户账户。请注意,这不会删除用户的主目录。
-
删除用户及其主目录:
userdel -r 用户名这里的 -r 选项表示同时删除用户的主目录和邮件目录。
-
强制删除用户:
userdel -f 用户名这里的 -f 选项表示强制删除用户,即使用户当前已登录。
passwd命令
在Linux系统中,passwd命令用于更改用户的密码。这个命令对于系统安全性非常重要,因为它允许用户定期更新他们的密码,以防止未经授权的访问。
基本用法
-
更改当前用户的密码
passwd执行这个命令时,系统会提示您输入当前密码(如果有的话),然后要求您输入新密码并确认。
-
更改其他用户的密码(需要root权限)
passwd 用户名这个命令允许root用户更改指定用户的密码。系统会提示输入新密码并确认。
选项
-
-S 或 --status:显示密码状态,包括密码的有效期、最小长度、到期时间等。
-
-e:强制密码过期,使得用户在下次登录时必须更改密码。
-
-d:清除密码,使得用户可以通过回答安全问题来登录。
-
-i 或 --inactive:设置密码在过期后多少天变得无效。
-
-n 或 --minimum:设置密码的最小长度。
-
-x 或 --maximum:设置密码的最大有效天数。
-
-w 或 --warn:设置密码到期前多少天开始警告用户。
示例
-
查看当前用户密码的状态
passwd -S -
强制用户在下次登录时更改密码
passwd -e 用户名 -
设置密码的最小长度为8
passwd -n 8 用户名 -
设置密码的最大有效天数为45天
passwd -x 45 用户名 -
设置密码到期前7天开始警告用户
passwd -w 7 用户名
addgroup 命令用户组
在 Linux 系统中,adduser 命令通常用于添加单个用户,而 addgroup 或 groupadd 命令用于添加用户组。以下是如何使用 addgroup 命令来创建一个新组的示例:
使用 addgroup 命令创建组
-
创建一个新组:
addgroup 组名 addgroup kali-11这个命令会创建一个名为 组名 的新组。

-
指定组的 GID(组标识符):
addgroup --gid 1000 组名 addgroup --gid 10001 kali-12这个命令会创建一个名为 组名 的组,并指定其 GID 为 1000。

-
创建系统组:
addgroup --system 组名 addgroup --system kali-13这个命令会创建一个名为 组名 的系统组。系统组通常用于系统服务和进程,它们的 GID 通常小于 1000。

使用 groupadd 命令创建组
groupadd 命令与 addgroup 类似,但可能在不同的 Linux 发行版中有所不同。以下是使用 groupadd 的示例:
-
创建一个新组:
groupadd 组名 groupadd kali-21这个命令会创建一个名为 组名 的新组。

-
指定组的 GID:
groupadd -g 1000 组名 groupadd -g 10003 kali-22这个命令会创建一个名为 组名 的组,并指定其 GID 为 10003。

-
创建系统组:
groupadd --system 组名 groupadd --system kali-23这个命令会创建一个名为 组名 的系统组。

使用 delgroup 命令删除组
delgroup 组名
delgroup kali-11
这个命令会删除名为 组名 的用户组。

使用 groupdel 命令删除组
groupdel 组名
这个命令同样会删除名为 组名 的用户组。

sudo命令
sudo(Super User Do)命令用于以超级用户权限(root权限)执行命令。普通用户使用sudo可以临时获得管理员权限,执行需要更高权限的操作。以下是一些常见的sudo命令用法:
1. 基本用法
在命令前加上sudo,以超级用户身份执行该命令。例如:
sudo apt update
2. 以其他用户身份执行
sudo默认是以root身份执行命令,但也可以指定其他用户,用-u指定:
sudo -u username command
sudo -u kali-1 pwd
sudo -u klai-1 ls /var/www


3. 提升权限为root用户
直接输入sudo -i或sudo su可以切换到root用户身份,进入超级用户模式。此时输入的每个命令都具有root权限。
sudo -i
sudo su


4. 更新sudo权限
在执行带有sudo的命令时,会提示输入用户密码。输入一次后,系统会记住一定时间内的权限(默认5分钟)。如果想立即清除权限缓存,使系统重新要求输入密码,可以使用:
sudo -k
5. 查看用户是否有sudo权限
sudo -l
这个命令列出当前用户的sudo权限,显示该用户能以什么权限执行哪些命令。

6. 编辑sudoers文件
sudoers文件定义了哪些用户可以使用sudo,及其权限。要编辑sudoers文件,使用以下命令:
sudo visudo
注意:不要直接编辑sudoers文件,因为语法错误可能会造成权限问题。使用visudo可以检查语法,确保不会损坏系统设置。
7. 禁用密码输入
可以在sudoers文件中配置特定命令无需密码执行。比如添加以下行,使用户username无需密码即可执行所有命令:
username ALL=(ALL) NOPASSWD: ALL
8. 结合管道符和重定向使用sudo
默认情况下,sudo只对第一个命令生效。如果要将整个命令链提升为超级用户权限,可以使用以下两种方式:
-
组合在一起:
echo "some text" | sudo tee /etc/somefile

-
子shell执行:
sudo sh -c 'echo "some text" > /etc/somefile'
常见问题
-
"command not found":可能是因为环境变量不包含此命令,使用sudo -i来临时进入root环境。
-
权限不足:如果无法使用sudo,请确认用户是否已在sudoers中配置。
5362

被折叠的 条评论
为什么被折叠?



