linux基本使用

写在前面

参加了一个小组内的awd,体验感极差,上来被人抓着phpmyadmin改了密码,无限被check,非root用户我不会改mysql密码(其实当时是没意识到),在查linux文件、编辑、复制过程中一度出现命令忘记。。在这篇持续记录一下自己使用的centos7的命令吧。。

用户和组

查看自己的用户名

whoami

增加一个test组

groupadd test

删除一个test组

groupdel test2

查看当前用户所在的组

gours

查看所有组

cat /etc/group

添加用户(参考帮助文档进行用户配置)

useradd -g test -m  hpdoger #添加hpdoger到test组并创建用户目录(要先创建test组)

具体参考 useradd -help

若想创建不能登陆的用户

useradd -g test2 -M -s /sbin/nologin hpdoger #添加hpdoger到test组不创建用户目录,并且不可用于登录

修改hpdoger用户密码

passwd hpdoger

切记,创建完用户要修改密码,否则用户不能登陆

普通账号与root的切换

root切换为普通: login -f hpdoger
普通切换成root权限: su # 然后输入密码

端口类命令

查看端口

我的centos7把firewall给ban了,那么查看端口的命令我用的是这个:
[root@vultr ~]# netstat -lnp

开放/关闭端口监听:

我用ncat进行监听,监听命令:
nc -l -p 8888 -vvv

停止监听:
ctrl + c

注意ctrl + z并不是停止,而是退出当前监听命令界面,仍然在执行监听

文件类命令

进入目录

cd /home # into dir named home
cd ../ # into superior dir
cd - # into last dir which u are from 

创建/删除目录

mkdir ilove # make dir named ilove
rm -rf ilove # delete dir named ilove

显示当前路径

pwd

复制目录

cp -a /root/ilove/ifuck /root # 第一个为原目录地址,第二个为新目录父级目录地址

原目录地址必须为绝对路径

新建/打开/删除文件

vi filename # 创建了一个叫filename的文件了,如果存在就打开了。

进入插入模式,按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

当处于vi编辑模式时,想要退出的话按esc后输入冒号然后再输入wq,就能退出并保存。
linux 不区分文本和二进制,不需要文件名有txt。

rm -f filename # 删除文件

vi的基本操作

操作 解析
i 进入编辑文本模式
Esc 退出编辑文本模式
:w 保存当前修改
:q 不保存退出vi
:wq 保存当前修改并退出vi

查看当前文件内容

cat /root/ilove/filename # 查看相应目录的文件内容

查询类相关命令

find语句的用法

语句 解析
find / -name file1 从 ‘/’ 开始进入根文件系统查找文件和目录
find / -user user1 查找属于用户 ‘user1’ 的文件和目录
find /home/user1 -name *.bin 在目录 ‘/ home/user1’ 中查找以 ‘.bin’ 结尾的文件
find /usr/bin -type f -atime +100 查找在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 查找在10天内被创建或者修改过的文件
locate *.ps 寻找以 ‘.ps’ 结尾的文件,先运行 ‘updatedb’ 命令
find -name ‘*.[ch]’ | xargs grep -E ‘expr’ 在当前目录及其子目录所有.c和.h文件中查找 ‘expr’
find -type f -print0 | xargs -r0 grep -F ‘expr’ 在当前目录及其子目录的常规文件中查找 ‘expr’
find -maxdepth 1 -type f | xargs grep -F ‘expr’ 在当前目录中查找 ‘expr’

前几天做题py到了一个很牛逼的查询flag的find用法,先看一下语句:

find / -iname "flag*" 2>/dev/null 

寻找可写目录

find / -type d -writable 2>/dev/null | grep -v -P '(^/proc)|(^/dev)'

寻找可写文件

find / -type f -writable 2>/dev/null | grep -v -P '(^/proc)|(^/dev)'

寻找最近20分钟内修改的文件

find /var/www/html -mmin -20 -type f -print

补一下相关知识

/dev/null
在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF[1]。在程序员行话,尤其是Unix行话中,/dev/null被称为比特桶[2]或者黑洞。

数据流重定向
操作符 | 解析
—— | —-
1> | 以覆盖的方法将“正确的数据”输出到指定的文件或设备上
1>> | 以累加的方法将“正确的数据”输出到指定的文件或设备上
2> | 以覆盖的方法将“错误的数据”输出到指定的文件或设备上;
2>> | 以累加的方法将“错误的数据”输出到指定的文件或设备上;

所以这句话的意思就是搜索所有文件名包含flag字段的文件,并把错误的搜索项以覆盖的方式丢弃到/dev/null

文本内容查找

命令 解析
grep str /tmp/test 在文件 ‘/tmp/test’ 中查找 “str”
grep ^str /tmp/test 在文件 ‘/tmp/test’ 中查找以 “str” 开始的行
grep [0-9] /tmp/test 查找 ‘/tmp/test’ 文件中所有包含数字的行
grep str -r /tmp/* 在目录 ‘/tmp’ 及其子目录中查找 “str”
diff file1 file2 找出两个文件的不同处
sdiff file1 file2 以对比的方式显示两个文件的不同

权限类相关

修改上传目录权限

linux 修改某目录下所有所有子目录权限

chmod -R 777 html

修改某目录为任何用户都用写读执行权限

chmod a+rwx html

显示进程

ps -ef # 列出所有进程信息,包括pid

杀死进程

kill [option] pid

选项 -9 会强行终止进程

系统相关

关机/重启

shutdown -h now # 关机
shutdown -r now # 重启

查看Ip

ifconfig

查看参考手册(例如arpspoof 命令)

man arpspoof

linux中的&&和&,|和||

&  表示任务在后台执行,如要在后台运行redis-server,则有  redis-server &

&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo '2'    

| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo 'yes' | wc -l

|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo "fail"

写在最后

目前接触到的有这些,还有很多命令没接触到,日后一并记录到此。已知的,chomd目前还没有记载

相关链接

linux添加用户,用户组(centos7)
【Linux】CentOS7 常用命令集合

not found!