1.1.2.My_Linux命令学习手册

Linux命令学习手册

不断学习,不断更新

用户相关

添加用户

# useradd [选项] [登录名]
  -d, 指定新用户的主目录 若此目录不存在,则使用-m创建主目录
  		例 useradd -d /home/test -m test   //此命令创建了一个用户test,其中-d和-m选项用来为登录名test产生一个主目录/home/test
  -G, 用户组 
  -g, 指定用户所属的用户组
  -u, 指定新账户的用户ID
  -s, 指定用户的登录shell

删除用户

# userdel [选项] [登录名]
-r 将用户的主目录一起删除

修改用户信息

# usermod [选项] [登录名]
-c 用户说明:修改用户的说明信息
-d 主目录:修改用户的主目录,需要注意的是,主目录必须写绝对路径;
-e 日期:修改用户的失效曰期,格式为 "YYYY-MM-DD";
-g 组名:修改用户的初始组(GID);
-u UID:修改用户的UID;
-G 组名:修改用户的附加组,其实就是把用户加入其他用户组,即修改 /etc/group 文件; //例# usermod -G root lamp
-l 用户名:修改用户名称;
-L:临时锁定用户(Lock);
-U:解锁用户(Unlock),和 -L 对应;
-s shell:修改用户的登录 Shell,默认是 /bin/bash。

用户组

//添加
groupadd [选项] [组名]
-g [GID] 指定GID(组标识号)
-o 新用户组的GID可以与系统已有用户组的GID相同

//删除
groupdel [选项] [组名]

//修改用户组属性
groupmod [选项] [组名]
-g [GID]   	指定GID(组标识号)
-n [新组名] 	改组名
例:
groupmod -g 103 group2 //将用户组group2的GID修改为103
groupmod -g 1000 -n group2 group1 //将用户组group1的GID修改为1000,组名修改为group2

用户配置文件/etc/passwd

[/etc/passwd]是所有用户都可以看的,这就是为什么密码位是"x"

参考学习【http://c.biancheng.net/view/841.html】

(1)用户名:(2)密码(口令):(3)UID(用户标识号):(4)GID(组标识号):(5)用户的描述信息:(6)用户家目录(主目录):(7)用户的登录shell

# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
wyj:x:1000:1000:WYJ,,,:/home/wyj:/bin/bash
WYJ:x:1001:1001::/home/WYJ:/bin/sh
test:x:1002:1002::/home/test:/bin/sh
"x" 表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中
Linux 系统通过 UID 来识别不同的用户。[UID:0是root;1~499系统用户(伪用户);500~65535普通用户]

影子文件/etc/shadow

(1)用户名:(2)加密密码:(3)最后一次修改时间:(4)最小的密码修改时间间隔:(5)密码有效期:(6)密码需要变更前的警告天数:(7)密码过期后的宽限时间:(8)账号失效时间:(9)保留字段(闲置)

root:$y$j9T$fmACEM3PHmbNM95kZbUdC0$rQ3Q3qLW/MMK4O/zA/DOv/zc70ZVT4trO3SmNt39F6D:19184:0:99999:7:::
cxk:$y$j9T$M9rXHl15YCQy6kfaznPPJ1$CQUHLIXChGf2YM3FgKCOF3Cz0/z9VdoIIdrhAd8dM/1:19184:0:99999:7:::
CXK:!:19186:0:99999:7:::
test:!:19186:0:99999:7:::
	这里保存的是真正加密的密码。目前 Linux 的密码采用的是 SHA512 散列加密算法,原来采用的是 MD5 或 DES 加密算法。SHA512 散列加密算法的加密等级更高,也更加安全。
	注意,这串密码产生的乱码不能手工修改,如果手工修改,系统将无法识别密码,导致密码失效。很多软件透过这个功能,在密码串前加上 "!"、"*" 或 "x" 使密码暂时失效。
	所有伪用户的密码都是 "!!" 或 "*",代表没有密码是不能登录的。当然,新创建的用户如果不设定密码,那么它的密码项也是 "!!",代表这个用户没有密码,不能登录。
	参考:【http://c.biancheng.net/view/840.html】
冷知识:/etc/passwd 文件存储用户基本信息,同时考虑到账户的安全性,将用户的密码信息存放另一个文件 /etc/shadow 中。而 /etc/group和/etc/gshadow也同理。

用户组配置文件/etc/group

组名:组密码:GID:该用户组中的用户列表

root:x:0:
docker:x:999:wyj
WYJ:x:1001:
test:x:1002:
	如果该用户组是这个用户的初始组,则该用户不会写入第四个字段,该字段显示的用户都是这个用户组的附加用户。
	举例,lamp 组的组信息为 "lamp:x:502:",第四个字段没有写入 lamp 用户,因为 lamp 组是 lamp 用户的初始组。如果要查询这些用户的初始组,则需要先到 /etc/passwd 文件中查看 GID(第四个字段),然后到 /etc/group 文件中比对组名。
WYJ:x:1001:1001::/home/WYJ:/bin/sh
WYJ:x:1001:  												//WYJ用户的独享名为WYJ的组(GID匹配)

影子文件/etc/gshadow

组名:加密密码:组管理员:组附加用户列表

root:*::
wyj:!::
docker:!::wyj
test:!::
对于大多数用户来说,通常不设置组密码,因此该字段常为空,但有时为 "!",指的是该群组没有组密码,也不设有群组管理员。

密码相关

# passwd [选项]  [用户名]
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
——————————————————————————————————————————————
如果当前是普通用户,只能直接修改自己的密码,命令:passwd
超级用户,可修改如何用户的密码,命令:passwd [用户名]

退出root模式

exit

文件路径命令相关

cd ..	是回到上一级目录
cd . 	是当前目录
cd / 	是回到根目录
cd ~ 	回到用户主目录
pwd   显示当前目录

文件属性相关

修改所属用户与组

chown		

修改用户的权限

# chmod		
	 -R 进行递归变更		#chmod -R xxx 【文件或目录】
	chmod xxx(代表权限的数字) 【文件】  //例如#chmod 400 1.txt

查看文件属性

#ls -l
对于第一个字母:
	字母“-”表示该文件是一个普通文件
	字母“d”表示该文件是一个目录,字母"d",是dirtectory(目录)的缩写
	字母“l”表示该文件是一个链接文件。字母"l"是link(链接)的缩写,类似于windows下的快捷方式
	字母“b”表示块设备文件(block),就是可供存储的接口设备
	字母“c”表示串行端口设备 键盘 鼠标
image-20220713165418102
//几个参考的例子:
lrwxrwxrwx   1 root root     7   7月 11 15:11 bin -> usr/bin
drwxr-xr-x   3 root root   4096  7月 11 16:31 boot
drwxrwxr-x   2 root root   4096  7月 11 15:16 cdrom
-rw-r--r-- 	 1 root root     68  7月 12 10:32 daemon.json
-rw-rw-r-- 	 1 wyj  wyj  851362  7月 11 20:55 get-pip.py
这几个rwx可以用二进制简洁表达	//如下图
在命令里有用
#chmod xxx(代表权限的数字) 【文件】  //例如#chmod 400 1.txt

使用数字表达

image-20220713144528377

文本处理—grep、sed、awk

grep —查找 文件 里符合条件的字符串

grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
【https://www.runoob.com/linux/linux-comm-grep.html】

sed —流文件编辑器

//留下两个坑,以后来填
https://blog.csdn.net/jsut_rick/article/details/78287737

awk —文本分析工具

https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

su命令

su [用户名]
//su 命令的主要作用是让你可以在已登录的会话中切换到另外一个用户。也就是说,在不登出当前用户的情况下登录为另外一个用户。在输入正确密码后,su 命令会在终端的当前会话中打开一个子会话【也就是下图的"$"】,exit可跳出子会话
[用户名]为空时,默认登录root

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vKm6gZ7I-1666355896069)(E:\安全港\青苗\image\image-20220713104432872.png)]

su和sudo的区别

sudo 命令只允许使用提升的权限运行单个命令,而 su命令会启动一个新的 shell,同时允许使用 root 权限运行尽可能多的命令,直到明确退出登录。
也就是说sudo是在单个命令里提权,命令运行完失效;而su是启动一个新的 shell

linux磁盘管理

查看磁盘使用情况

df [选项] [文件]

-h 列出文件系统的整体磁盘用量
-a 列出所有的文件系统
-k 以kb的容量显示文件系统
-i 以inode的数量显示容量
-T 显示文件系统类型
-H 进位方式

查看目录大小

显示每个文件和目录的磁盘使用空间,也就是文件的大小。

du

-h         			//以K  M  G为单位显示,提高可读性(最常用的一个)
-k 或者 -m   		//显示目录中文件的大小,-k 单位KB,-m 单位MB
--max-depth=1   //显示层级
		例如: du -h --max-depth=1

查看磁盘信息

fdisk  //用于磁盘分区
-l //查看硬盘信息,显示当前分区情况
	fdisk /dev/sdc #进入磁盘

磁盘检验

fsck		//磁盘检验(file system check)
检查和维护不一致的文件系统
-V 显示详细信息
-r 若检查有错则询问使用者是否修复
-A 分区检查
-d 打印出debug结果
-p 自动修复
-y 自动输入yes
-C 显示完整的检查进度
	例: fsck -f -C -t ext1 /dev/xxx

磁盘挂载与卸载

参考【https://blog.csdn.net/daydayup654/article/details/78788310】

mount
mount -t 文件系统-L Label名称-o 选项-n
装置文件挂载点
mkdir /mnt/hdc1
mount /dev/hdc1 /mnt/hdc1
umount
-f 强制删除
-n 不升级/etc/mtab卸载
umount /dev/hdc1

命令语句拼接

windows 或 linux 下:

command1 & command2 
//先执行 command2 后执行
  
command1 && command2 
//先执行 command1,如果为真,再执行 command2

command1 | command2 
//只执行 command2

command1 || command2 
//先执行 command1,如果为假,再执行 command2
管道“|//将前命令的结果输出作为后命令的输入,前输出通过管道通往后输入

连接符号“;//当有几个命令要连续执行时,我们可以把它们放在一行内,中间用“;”分开。 例如:mkdir myfile;cp

后台执行:“&//用户有时候执行命令要花很长时间,可能会影响做其他事情。最好的方法是将它放在后台执行。后台运行的程序在用户注销后系统还可以继续执行。当要把命令放在后台执行时,在命令的后面加上“&”。

这里我们选择**【“&” “;” “&&”】**作为注入的方式应该都可以

例如:

ping 127.0.0.1;ls

查找文件 find

【参考】https://www.cnblogs.com/scrit/p/5854197.html

一种方法是通过逐层查看文件目录找到,另一种方式是通过查找函数
函数有全局查找函数 find

find [OPTIONS] [查找起始路径] [查找条件] [处理动作]

一、OPTIONS参数
   -P、-L、-H:控制软连接的对待方式,用的不多。不介绍了
二、查找路径
   就是个目录路径,相对和绝对都可以。
三、查找条件
	(一)、根据名称查找
				-name "flag*"	:区分名称字母大小写
     -iname "flag*"	 :不区分名称字母大小写
     -regex PATTERN:基于正则表达式的模式查找,匹配的是整个路径,而非单个文件名。【参考图片】
	(二)、根据文件从属关系查找:
     -user USERNAME:查找属主指定用户的所有文件;
     -group GRPNAME:查找属组指定组的所有文件;
     -uid UID:查找属主指定的UID的所有文件;
     -gid GID:查找属组指定的GID的所有文件;
     -nouser:查找没有属主的文件;
     -nogroup:查找没有属组的文件;

………………,后面的规则有点多,以后用得上再说吧!我们记得个正则表达式【flag*】或者【*.txt】就行了!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zT3ghsNH-1666355896072)(E:\安全港\青苗\image\image-20220718211634217.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Svi1TQK-1666355896073)(E:\安全港\青苗\image\image-20220718211646217.png)]

find / -name "flag*"

返回:

/home/flag.txt
/sys/devices/platform/serial8250/tty/ttyS15/flags
/sys/devices/platform/serial8250/tty/ttyS6/flags
/sys/devices/platform/serial8250/tty/ttyS23/flags
…………………………【略】

软链接&硬链接

软链接

软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows 下的快捷方式的那个文件有很接近的意味)

软链接: 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径。
理解为快捷方式即可

ln -s P1 P2    //创建一个路径名为P2的新软链接,P2指向路径名P1。
记忆:link缩写为ln

硬链接

硬连接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的

硬链接: 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块。
硬链接指向的是同一份物理文件,而复制就是实打实的拷贝了一份新的物理文件。

ln P1 P2    //用来创建一个新的硬链接,即为由路径P1标识的文件创建一个路径名为P2的硬链接。

区别

硬链接不会创建新的物理文件,但是会使得当前物理文件的引用数加1。当硬链接产生的文件存在时,删除源文件,不会清除实际的物理文件,即对于硬链接“生成的新文件”不会产生任何影响。

软链接就更像一个指针/快捷方式,只是指向实际物理文件位置,当源文件移动或者删除时,软链接就会失效。

未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值