Linux入门级介绍(续)

上一篇介绍了Linux命令行入门指南,这篇做下补充。力求涵盖Linux开发、运维绝大多数场景。建议收藏这两篇作为Linux入门手册查询。

本文以ubuntu18.04为实验平台。

主机名、时区、中文支持

hostname kelemi-s  #  修改主机名为 kelemi-s

sudo vim /etc/hostname  #  永久修改主机名在此文件

timedatectl set-timezone "Asia/Shanghai"  #  修改时区

date  #  检查时间时区

sudo apt install language-pack-zh-hans  #  安装中文包

sudo localectl set-locale LANG=zh_CN.utf8  #  设置为中文

sudo reboot

locale  #  检查当前语言设置

SSH 介绍

sudo apt install openssh-server  #  安装

systemctl status sshd  #  查看状况

sudo systemctl restart ssh  #  还有start,stop

sudo ufw allow ssh  #  允许外部访问22端口

sudo systemctl enable ssh  #  自启动

ip a  #  查看本机对外IP,假设为192.168.1.112

ssh linuxconfig@192.168.1.112  #  连接

vim /etc/ssh/sshd_config  #  编辑配置修改端口为8282

Port 8282  #  添加一行,表示端口修改为8282

sudo ufw allow 8282/tcp  #  相应防火墙也要允许

sudo systemctl restart ssh  #  重启ssh服务应用修改

ssh -p 8282 linuxconfig@192.168.1.112  #  通过8282连接

使用公钥密钥 登录ssh:

生成密钥对,私钥在本地,公钥发服务器,放在家目录下的

~/.ssh/authorized_keys

并修改配置文件 /etc/ssh/sshd.config

PubkeyAuthentication 调为 yes

可以只设置只允许公钥私钥登录,也可以密码和私匙同时有效

PasswordAuthentication 调为 no ,则不允许用密码登陆

ssh-keygen  #  生成密钥对,默认放在home目录下 ~/.ssh,文件名为 id_rsa

            #  公钥是.pub 后缀名,当然可以改变名字

            #  可以给私钥提供一个保护密码

ssh-keygen -b 4096  #  默认用3072位RSA密钥,可以改成4096位的RSA。

                    #  也可以加 -t 更改加密类型,加密类型除RSA外,还有

#  dsa

                    #  ecdsa

                    #  ecdsa-sk

                    #  ed25519

                    #  ed25519-sk

ssh-keygen -f  ~/.ssh/linuxconfig_rsa  #  我们可以改变默认保存的路径

                                       #  加 -f 参数

ssh-keygen -p  #  如果一开始未设私钥密码,后来想改,可以用 -p 参数

ssh-keygen -p -f ~/.ssh/id_rsa  #  也可以提供密钥路径,不用交互式

ssh-copy-id -i ~/.ssh/id_rsa.pub egdoc@192.168.0.39

    #  openSSH提供了一个工具 ssh-copy-id,用来将公钥传给服务器

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 15342 egdoc@192.168.0.39

    #  如果SSH端口不是默认 22,加上 -p 参数


查找文件-whereis,find

whereis

whereis php

whereis apache2

whereis find  #  查找到放置相关文件的文件夹

find

find -name 'test.txt'  #  从当前文件夹开始查找test.txt文件,大小写敏感

find -name 'test*' #  使用通配符

find -iname 'test.txt'  #  iname表示不区分大小写

sudo find / -name 'test.txt'  #  从 / 根目录开始查找,注意要加上 sudo,否则会有一大堆错误

sudo find / -name 'php.ini'  #  实际中经常要查找某配置文件

#  ----------------------------

find -user 'bob'  #  从当前目录开始,查找属于用户bob的文件

#  ----------------------------

find -cmin -20  #  查找过去20分钟内修改的文件

用户和组管理

上一篇介绍过useradd,groupadd等命令,这里介绍另一种更简单的交互式方法

sudo adduser tim  #  添加tim用户,根据提示输入密码,全名,手机号码等信息

vim /etc/passwd  #  查看用户密码文件。 看看是否已创建了用户

#  ----------------------------

#  以tim登录,然后修改宻码

passwd  #  提示修改密码

sudo passwd tim  #  以管理员身份修改tim密码

修改用户:

sudo chfn tim  #  修改相关属性,包括全名,房间号,电话等

               #  然后我们查看 /etc/passwd,查看结果

sudo usermod tim  #  usermod可以修改用户,不加参数将打开man手册

删除用户

sudo deluser tim  #  删除用户 tim

sudo rm -rf /home/tim  #  手动删除home下的目录,上一个命令不会自动删除家目录

组信息保存位置

/etc/group

添加组:

sudo addgroup testgroup  #  添加testgroup组

vim /etc/group  #  查看已添加

sudo adduser ralph testgroup  #  添加用户ralph 到 testgroup组

sudo adduser bob testgroup

删除组成员:

sudo deluser bob testgroup

删除组:

sudo delgroup testgroup

vim /etc/group  #  查看组已消失

Linux-Vim介绍

vim test.txt

i  #  小写 i 表示进入插入模式

:wq  #  编辑完成后,ESC退出,输入 :wq,w表示写入,q表示退出

:q!  #  表示退出且不保存。如果未改修改,不加!也是可以的 :q

/bob  #  /表示查找bob,文本会高亮显示找到的bob,如果按Enter键,将定位到

      #  bob,可以按小写 n ,定位到下一个;按大写 N ,定位到上一个

新建、重命名、移动、删除文件夹(mkdir,mv,cp,rm)

与文件操作类似,但也有不同,比如新建文件夹,删除文件夹要添加递归参数或其他选项等。

mkdir newfolder  #  新建文件夹

mv newfolder newfolder2  #  重命名文件夹

mv newfolder2 newfolder

cd newfolder

vim testfile  #  新建文件

cd ..

mv newfolder folder/newfolder  #  将newfolder文件夹移动到 folder下,也命名为newfolder

#  移动文件无需使用递归参数,但复制删除就需要

cp -r newfolder newfolder.bak  #  加上 -r 参数表示递归复制

rm -rf newfolder.bak  #  加上 r 表示递归, f 表示强制

Linux服务器安装软件(apt-get

安装软件:

sudo apt-get update  #  更新软件仓库

sudo apt-get install apache2  #  安装apache2

sudo apt-get upgrade  #  更新已安装的软件

删除软件:

whereis apache2  #  显示安装包关联的文件夹

sudo apt-get remove apache2  #  删除apache2,但保留配置文件

whereis apache2  #  发现还是存在关联文件夹的

sugo apt-get purge apache2  #  彻底删除apache2,包括配置文件

网络配置(ip,route,dhclient,systemd-resolve,netplan)

查IP情况

ifconfig  #  旧的方式,还是有效的

ip addr  #  新的方式

查默认网关

 route -n  #  如果不加 n 显示名称,加了 n 显示IP地址

查看DNS

 systemd-resolve --status  #  

DHCP:

sudo dhclient -v -r  #  -v  表示详细信息

                     #  -r  表示重新获取IP地址

sudo dhclient -v  #  查看详细

设置静态IP:

cd /etc/netplan  #  

ls -l  #  能看到里面有个 yaml 文件

sudo vim XXXX.yaml  #  编辑 yaml 文件,设置IP,网关,DNSServer等

sudo netplan apply  #  应用更改

Linux-FTP服务器安装(vsftpd)

查看是否安装了vsftpd服务

sudo systemctl status vsftpd  #  看到本机未装vsftpd

sudo apt-get install vsftpd  #  安装vsftpd

sudo systemctl status vsftpd  #  检查vsftpd已在运行

客户端安装 FileZilla

连接 vsftpd 服务端,能看到对应用户的主目录。vsftpd 使用用户的主目录作为FTP的主目录。如果想修改FTP主目录,可以修改 /etc/passwd 文件,找到相应用户修改主目录。

默认情况下,客户端连接 vsftpd 只能下载,不能上传,也就是不能写入。需要做相关调整。

sudo vim /etc/vsftpd.conf

#  查找 write_enable=yes ,去掉注释启用

sudo systemctl restart vsftpd  #  重启服务使修改生效

然后就可以上传下载文件了

任务管理和终止进程(top)

top类似windows中的任务管理器。

top  #  打开Linux世界的任务管理器

     #  项部说明总体状况

     #  第一行:开机的时间,登录的用户数,以及CPU 1分钟,5分钟,

#          15分钟的平均负荷(每核的范围 0-1)

     #  第二行:表示任务总数量,运行数量,睡眠数量,停止数量,僵尸进程数

     #  第三行:CPU利用率,包括用户使用的 和 系统使用的

     #  第四行:内存总数,多少使用,多少空闲

#  -------------------------------

     #  下面列表详细说明不同的进程

     #  PID  进程ID,操作系统分配。终止进程就用这个ID

     #  USER  除了root,还有其他用户

     #  能看到各进程CPU、内存利用率,Time+ 表示进程运行的时间

#  按 h 弹出简单帮助说明,按 q 退出   

#  如果想查看某个用户运行的进程

u --> bob  # 按小写的u,再输入bob,只显示bob运行的进程。

o --> COMMAND=apache2  #  按小写o,再输入大写COMMAND=apache2,

                       #  查找进程apache2的情况

                       #  按 = 退出筛选

V  #  大写V显示父子进程情况

k  #  小写k 提示kill哪个进程,输入PID即可完成终止该进程

   #  这个需要root权限,终止进程需要加 sudo 进的 top

   #  sudo top --> k

压缩与归档文件夹(tar)

类似Windows下的Winzip或7-zip, 

tar -czvf tarArchive.tar.gz testFolder  #  C--添加,z--压缩

                                      #  v--显示详细,f--指定文件名

tar  --list -f tarArchive.tar.gz  #  列出打包压缩文件内容

cp tarArchive.tar.gz newfolder/tarArchive.tar.gz

tar -xzvf tarArchive.tar.gz  #  解压缩 x--解压缩

启动、停止、重启服务(systemd,systemctl,service,init.d)

Windows只有一种管理服务的方式,而Linux有三种,这可能是很多人比较困惑的地方。

systemd,service,init.d。现在主流是sytstemd,service仍在用。init.d基本淘汰,不再建议用,但有些还在用,仍是有效的。

三种方式做同样的事情,能达到同样的目标。

sudo systemctl status  #  展示系统中全部的服务状态

sudo systemctl status apache2  #  展示特定的服务,这里是apache2

sudo systemctl stop apache2  #  停止服务

sudo systemctl status apache2

sudo systemctl start apache2

sudo systemctl restart apache2  #  启动,重启服务等

sudo service --status-all | less  #  查看所有服务

                                  #  + 表示正在运行

#  -表示未在运行

sudo service apache2 status  #  查看特定的服务状态,这里是apache2  

sudo service apache2 stop  #  停止服务

sudo service apache2 start

sudo service apache2 restart  #  启动,重启等                     

sudo /etc/init.d/apache2 status  #  具体的文件夹及脚本apache2

sudo /etc/init.d/apache2 stop

sudo /etc/init.d/apache2 status | less 

sudo /etc/init.d/apache2 start

sudo /etc/init.d/apache2 restart

实现基本以查看状态 status和重启restart 服务为多.

也有一个reload ,在不重启的情况使配置生效。

一般用restart没问题,不差这微小的时间差异。

计划任务(crontab)

crontab的调度时间5位数字分别表示分、小时、天、月、星期。

可以访问这个有趣的网站了解用法:

https://crontab.guru/

命令示例:

crontab -e  #  选择编辑器。这里选2 vim

            #  以当前用户的权限执行计划任务,如

            #  * * * * * touch /home/bob/cronTest


sudo crontab -e  #  表示以 root权限,写计划任务

crontab -l  #  检查计划任务列表

sudo crontab -u tim -l  查看用户tim的计划任务

#  --------------------

#  有时中间可能想修改crontab的编辑器,比如之前不小心选了nano,现准备换成

#  vim,可以用以下命令

rm ~/.selected_editor  #  删除默认选择的编辑器

crontab -e  #  下次再编辑将跳出选择选项,重做选择

UFW防火墙安装(ufw)

默认 ufw 是没有开启的。我们来开启,并添加规则

sudo ufw status #  查看状态是未激活的

#  用 filezilla测试可以连上 该服务器的FTP服务

sudo ufw enable  #  开启 ufw

#  再用filezilla测试连接 ftp,已不能连了

sudo ufw status verbose  #  查看详细的 ufw 信息,ufw默认是阻止所有

#  Default: deny(incoming),allow(outgoing),disabled(routed)

sudo ufw allow 21  #  只允许21端口

sudo ufw status verbose  #  查看规则

#  我们再测试 filezilla, 就可以连入该服务器了

sudo ufw allow from 10.0.1.19 to any port 22  # 

#  允许 来自10.0.1.19 到 端口 22 的 访问,允许该地址的SSH访问

sudo ufw allow from 10.0.1.0/24 to any port 22  #

#  允许 10.0.1.0/24子网的主机 ssh 访问

sudo ufw allow ftp  #  知名服务直接写 服务名字

删除相关规则

sudo ufw status numbered  #  查看规则号

sudo ufw delete 2  #  删除第2条规则

#  如果想要删作全部规则

sudo ufw reset  #  删除全部规则并禁用 ufw

NMAP介绍

Linux运行 nmap 最好以 sudo 命令方式,否则可能取不到MAC 信息。

https://nmap.org

安装nmap

sudo apt-get install nmap

扫描一台特定的主机

sudo nmap 192.168.1.1  #  扫描

#  中间可以按一下键,查看进度

#  结果有些可以看到 MAC 地址 及品牌

扫描整个网络

sudo nmap -v 192.168.1.0/24  #  -v 表示显示详细信息

#  能看到哪些主机是开放的,扫描花了多长时间。

#  并可向上滚动屏幕查看具体主机的情况

扫描结果保存到文件中

sudo -A -F nmap 192.168.1.0/24 -oN /home/bob/text.txt

#  -A  积极扫描,获取一些有用的如操作系统信息等

#  -F  快速扫描最常见的 100 个端口

#  -o  表示输出文件

#  -N  表示输出为简单的文本文件,-X 表示 XML文件

可以将扫描结果通过程序处理,存到数据库,然后再作处理,比如查看分析等。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,076评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,658评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,732评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,493评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,591评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,598评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,601评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,348评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,797评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,114评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,278评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,953评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,585评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,202评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,180评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,139评论 2 352

推荐阅读更多精彩内容

  • 一、Linux概述 GNU是GNU's Not NUXI的递归缩写。 二、Linux安装 硬盘的分区主要分为基本分...
    赤果_b4a7阅读 832评论 0 1
  • 文件相关命令 man less:查看less的帮助手册 --helpsudo cat /etc/passwd:su...
    MagicalGuy阅读 324评论 0 0
  • [TOC] svn 添加所有文件 svn add * 会忽略所有已经在版本控制之下的目录。有时候,你会希望添加所有...
    russelllei阅读 379评论 0 0
  • 一、Ubuntu16.04.6_64 系统安装 位置选择我们第一步创建的文件夹 网络选择 NAT 最后一步选择 完...
    黑战士安全阅读 1,720评论 0 7
  • JAVA 网站Linux服务器配置总结 通过ssh端口进入远程终端 netstat -tnl 检查各个端口状态 w...
    其实我是一条鱼阅读 265评论 0 1