Linux 入门超详细讲解

简介: Linux 入门超详细讲解

OpenSSH

SSH 是芬兰一家公司开发。但是受到版权和加密算法限制,现在很多人都使用 OpenSSH。OpenSSH 是 SSH 的替代软件,免费。

OpenSSH 由客户端和服务端组成。

  • 基于口令的安全验证:知道服务器的帐号密码即可远程登录,口令和数据在传输过程中都会被加密。
  • 基于密钥的安全验证:此时需要在创建一对密钥,把公有密钥放到远程服务器上自己的宿主目录中,而私有密钥则由自己保存。

检查软件是否安装

apt-cache policy openssh-client openssh-server

安装服务端

apt-get install openssh-server

安装客户端

apt-get install openssh-client

OpenSSH 服务器的主要配置文件为 /etc/ssh/sshd\_config,几乎所有的配置信息都在此文件中。

Linux 目录结构

目录 说明
bin 存放二进制可执行文件(ls,cat,mkdir等)
boot 存放用于系统引导时使用的各种文件
dev 用于存放设备文件
etc 存放系统配置文件
home 存放所有用户文件的根目录
lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt 系统管理员安装临时文件系统的安装点
opt 额外安装的可选应用程序包所放置的位置
proc 虚拟文件系统,存放当前内存的映射
root 超级用户目录
sbin 存放二进制可执行文件,只有root才能访问
tmp 用于存放各种临时文件
usr 用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录
var 用于存放运行时需要改变数据的文件

Linux 操作文件夹目录

命令 说明 语法 参数 参数说明
ls 显示文件和目录列表 ls [-alrtAFR] [name...]
-l 列出文件的详细信息
-a 列出当前目录所有文件,包含隐藏文件
mkdir 创建目录 mkdir [-p] dirName
-p 父目录不存在情况下先生成父目录
cd 切换目录 cd [dirName]
touch 生成一个空文件
echo 生成一个带内容文件 echo abcd > 1.txt,echo 1234 >> 1.txt
cat 显示文本文件内容 cat [-AbeEnstTuv] [--help] [--version] fileName
cp 复制文件或目录 cp [options] source dest
rm 删除文件 rm [options] name...
-f 强制删除文件或目录
-r 同时删除该目录下的所有文件
mv 移动文件或目录 mv [options] source dest
find 在文件系统中查找指定的文件
-name 文件名
grep 在指定的文本文件中查找指定的字符串
tree 用于以树状图列出目录的内容
pwd 显示当前工作目录
ln 建立软链接
more 分页显示文本文件内容
head 显示文件开头内容
tail 显示文件结尾内容
-f 跟踪输出

Linux 系统管理命令

命令 说明
stat 显示指定文件的相关信息,比ls命令显示内容更多
who 显示在线登录用户
hostname 显示主机名称
uname 显示系统信息
top 显示当前系统中耗费资源最多的进程
ps 显示瞬间的进程状态
du 显示指定的文件(目录)已使用的磁盘空间的总量
df 显示文件系统磁盘空间的使用情况
free 显示当前内存和交换空间的使用情况
ifconfig 显示网络接口信息
ping 测试网络的连通性
netstat 显示网络状态信息
clear 清屏
kill 杀死一个进程

Linux 开关机命令

shutdown 命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。

命令 语法 参数 参数说明
shutdown shutdown [-t seconds] [-rkhncfF] time [message]
-t seconds 设定在几秒钟之后进行关机程序
-k 并不会真的关机,只是将警告讯息传送给所有只用者
-r 关机后重新开机(重启)
-h 关机后停机
-n 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机
-c 取消目前已经进行中的关机动作
-f 关机时,不做 fcsk 动作(检查 Linux 档系统)
-F 关机时,强迫进行 fsck 动作
time 设定关机的时间
message 传送给所有使用者的警告讯息
  • 重启

    • reboot
    • shutdown -r now
  • 关机

    • shutdown -h now

Linux 压缩命令

  • tar

    命令 语法 参数 参数说明
    tar tar [-cxzjvf] 压缩打包文档的名称 欲打包目录
    -c 建立一个归档文件的参数指令
    -x 解开一个归档文件的参数指令
    -z 是否需要用 gzip 压缩
    -j 是否需要用 bzip2 压缩
    -v 压缩的过程中显示文件
    -f 使用档名,在 f 之后要立即接档名
    -tf 查看归档文件里面的文件

    例子:

    • 压缩文件夹: tar -zcvf test.tar.gz test\
    • 解压文件夹:tar -zxvf test.tar.gz
  • gzip

    命令 语法 参数 参数说明
    gzip gzip [选项] 压缩(解压缩)的文件名
    -d 解压缩
    -l 对每个压缩文件,显示压缩文件的大小,未压缩文件的大小,压缩比,未压缩文件的名字
    -v 对每一个压缩和解压的文件,显示文件名和压缩比
    -num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6

    说明:压缩文件后缀为 gz

  • bzip2
命令 语法 参数 参数说明
bzip2 bzip2 [-cdz]
-d 解压缩
-z 压缩参数
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6

说明:压缩文件后缀为 bz2

Linux 编辑器

  • vim

    运行模式

    • 编辑模式:等待编辑命令输入
    • 插入模式:编辑模式下,输入 i 进入插入模式,插入文本信息
    • 命令模式:在编辑模式下,输入 : 进行命令模式

    命令

    :q 直接退出vi

    :wq 保存后退出vi ,并可以新建文件

    :q! 强制退出

    :w file 将当前内容保存成某个文件

    :set number 在编辑文件显示行号

    :set nonumber 在编辑文件不显示行号

  • nano

    nano 是一个字符终端的文本编辑器,有点像 DOS 下的 editor 程序。它比 vi/vim 要简单得多,比较适合 Linux 初学者使用。某些 Linux 发行版的默认编辑器就是 nano。

    命令

    • 保存:ctrl + o
    • 搜索:ctrl + w
    • 上一页:ctrl + y
    • 下一页:ctrl + v
    • 退出:ctrl + x

Linux 软件包管理

  • 修改数据源

    由于国内的网络环境问题,我们需要将 Ubuntu 的数据源修改为国内数据源,操作步骤如下:

    • 查看系统版本

      lsb_release -a

      ​ 输出结果为

      No LSB modules are available.
      Distributor ID:    Ubuntu
      Description:    Ubuntu 16.04 LTS
      Release:    16.04
      Codename:    xenial

      注意: Codename 为 xenial,该名称为我们 Ubuntu 系统的名称,修改数据源需要用到该名称

    • 编辑数据源

      vi /etc/apt/sources.list

      删除全部内容并修改为

      deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
      deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
      deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
      deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    • 更新数据源

      apt-get update
    • 其他常用 APT 命令

      • 安装软件包

        apt-get install packagename
      • 删除软件包

        apt-get remove packagename
      • 更新软件包列表

        apt-get update
      • 升级有可用更新的系统(慎用)

        apt-get upgrade
      • 搜索

        apt-cache search package
      • 获取包信息

        apt-cache show package
      • 删除包及配置文件

        apt-get remove package --purge
      • 了解使用依赖

        apt-cache depends package
      • 查看被哪些包依赖

        apt-cache rdepends package
      • 安装相关的编译环境

        apt-get build-dep package
      • 下载源代码

        apt-get source package
      • 清理无用的包

        apt-get clean && apt-get autoclean
      • 检查是否有损坏的依赖

        apt-get check

Linux 用户和组管理

  • 使用 Root 用户

    在实际生产操作中,我们基本上都是使用超级管理员账户操作 Linux 系统,也就是 Root 用户,Linux 系统默认是关闭 Root 账户的,我们需要为 Root 用户设置一个初始密码以方便我们使用。

  • 设置 Root 账户密码

    sudo passwd root
  • 切换到 Root

    su
  • 设置允许远程登录 Root

    vi /etc/ssh/sshd_config
    
    # Authentication:
    LoginGraceTime 120
    #PermitRootLogin without-password     //注释此行
    PermitRootLogin yes                             //加入此行
    StrictModes yes
    
    重启服务
    service ssh restart
  • 账户系统文件说明

    • /etc/passwd

      每一行代表一个账号,众多账号是系统正常运行所必须的,例如 bin,nobody 每行定义一个用户账户,此文件对所有用户可读。每行账户包含如下信息:

      root:x:0:0:root:/root:/bin/bash
      • 用户名: 就是账号,用来对应 UID,root UID 是 0。
      • 口令: 密码,早期 UNIX 系统密码存在此字段,由于此文件所有用户都可以读取,密码容易泄露,后来这个字段数据就存放到 /etc/shadow 中,这里只能看到 X。
      • 用户标示号(UID): 系统内唯一,root 用户的 UID 为 0,普通用户从 1000 开始,1-999 是系统的标准账户,500-65536 是可登陆账号。
      • 组标示号(GID): 与 /etc/group 相关用来规定组名和 GID 相对应。
      • 注释: 注释账号
      • 宿主目录(主文件夹): 用户登录系统后所进入的目录 root 在 /root/itcast
      • 命令解释器(shell): 指定该用户使用的 shell ,默认的是 /bin/bash
    • /etc/shadow

      为了增加系统的安全性,用户口令通常用 shadow passwords 保护。只有 root 可读。每行包含如下信息:

      root:$6$Reu571.V$Ci/kd.OTzaSGU.TagZ5KjYx2MLzQv2IkZ24E1.yeTT3Pp4o/yniTjus/rRaJ92Z18MVy6suf1W5uxxurqssel.:17465:0:99999:7:::
      • 账号名称: 需要和 /etc/passwd 一致。
      • 密码:

        经过加密,虽然加密,但不表示不会被破解,该文件默认权限如下:

        • -rw------- 1 root root 1560 Oct 26 17:20 passwd-
        • 只有root能都读写
      • 最近修改密码日期: 从1970-1-1起,到用户最后一次更改口令的天数
      • 密码最小时间间隔: 从1970-1-1起,到用户可以更改口令的天数
      • 密码最大时间间隔: 从1970-1-1起,必须更改的口令天数
      • 密码到期警告时间: 在口令过期之前几天通知
      • 密码到期后账号宽限时间
      • 密码到期禁用账户时间: 在用户口令过期后到禁用账户的天数
      • 保留
    • /etc/group

      用户组的配置文件

      root:x:0:
      • 用户组名称
      • 用户组密码: 给用户组管理员使用,通常不用
      • GID: 用户组的ID
      • 此用户支持的账号名称: 一个账号可以加入多个用户组,例如想要 itcast 加入 root 这个用户组,将该账号填入该字段即可 root:x:0:root, icast 将用户进行分组是 Linux 对用户进行管理及控制访问权限的一种手段。一个中可以有多个用户,一个用户可以同时属于多个组。该文件对所有用户可读。
    • /etc/gshadow

      该文件用户定义用户组口令,组管理员等信息只有root用户可读。

      root:\*::
      • 用户组名
      • 密码列
      • 用户组管理员的账号
      • 用户组所属账号
  • 账户管理常用命令

    • 增加用户

      useradd 用户名
      useradd -u (UID号)
      useradd -p (口令)
      useradd -g (分组)
      useradd -s (SHELL)
      useradd -d (用户目录)

      如:useradd ycq

      增加用户名为 ycq 的账户

    • 修改用户

      usermod -u (新UID)
      usermod -d (用户目录)
      usermod -g (组名)
      usermod -s (SHELL)
      usermod -p (新口令)
      usermod -l (新登录名)
      usermod -L (锁定用户账号密码)
      usermod -U (解锁用户账号)

      如:usermod -u 1024 -g group2 -G root ycq

      将 ycq 用户 uid 修改为 1024,默认组改为系统中已经存在的 group2,并且加入到系统管理员组

    • 删除用户

      userdel 用户名 (删除用户账号)
      userdel -r 删除账号时同时删除目录

      如:userdel -r ycq

      删除用户名为 ycq 的账户并同时删除 ycq 的用户目录

    • 组账户维护

      groupadd 组账户名 (创建新组)
      groupadd -g 指定组GID
      groupmod -g 更改组的GID
      groupmod -n 更改组账户名
      groupdel 组账户名 (删除指定组账户)
    • 口令维护

      passwd 用户账户名 (设置用户口令)
      passwd -l 用户账户名 (锁定用户账户)
      passwd -u 用户账户名 (解锁用户账户)
      passwd -d 用户账户名 (删除账户口令)
      gpasswd -a 用户账户名 组账户名 (将指定用户添加到指定组)
      gpasswd -d 用户账户名 组账户名 (将用户从指定组中删除)
      gpasswd -A 用户账户名 组账户名 (将用户指定为组的管理员)
    • 用户和组状态

      su 用户名(切换用户账户)
      id 用户名(显示用户的UID,GID)
      whoami (显示当前用户名称)
      groups (显示用户所属组)

Linux 文件权限管理

  • 查看文件和目录的权限

    ls -al 使用 ls 不带参数只显示文件名称,通过ls –al 可以显示文件或者目录的权限信息。

    ls -l 文件名 显示信息包括:文件类型 (d 目录,- 普通文件,l 链接文件),文件权限,文件的用户,文件的所属组,文件的大小,文件的创建时间,文件的名称

    -rw-r--r-- 1 ycq ycq 675 Aug 17 2015 .profile

    • -:普通文件
    • rw-:说明用户 ycq 有读写权限,没有运行权限
    • r--:表示用户组 ycq 只有读权限,没有写和运行的权限
    • r--:其他用户只有读权限,没有写权限和运行的权限
    -rw-r--r-- 1 ycq ycq 675 Oct 26 17:20 .profile
    文档类型及权限 连接数 文档所属用户 文档所属组 文档大小 文档最后被修改日期 文档名称
    - rw- r-- r--
    文档类型 文档所有者权限(user) 文档所属用户组权限(group) 其他用户权限(other)
    • 文档类型

      • d 表示目录
      • l 表示软连接
      • 表示文件
      • c 表示串行端口字符设备文件
      • b 表示可供存储的块设备文件
      • 余下的字符 3 个字符为一组。r 只读,w 可写,x 可执行,- 表示无此权限
  • 更改操作权限

    • chown

      是 change owner 的意思,主要作用就是改变文件或者目录所有者,所有者包含用户和用户组

      chown [-R] 用户名称 文件或者目录
      chown [-R] 用户名称 用户组名称 文件或目录

      -R:进行递归式的权限更改,将目录下的所有文件、子目录更新为指定用户组权限

    • chmod

      改变访问权限

      chmod [who] [+ | - | =] [mode] 文件名
      • who

        表示操作对象可以是以下字母的一个或者组合

        • u:用户 user
        • g:用户组 group
        • o:表示其他用户
        • a:表示所有用户是系统默认的
      • mode

        表示可执行的权限,可以是 r、w、x

      • 文件名

        文件名可以使空格分开的文件列表

      • 示例
      ycq@UbuntuBase:~$ ls -al test.txt 
      -rw-rw-r-- 1 ycq ycq 6 Nov  2 21:47 test.txt
      ycq@UbuntuBase:~$ chmod u=rwx,g+r,o+r test.txt 
      ycq@UbuntuBase:~$ ls -al test.txt 
      -rwxrw-r-- 1 ycq ycq 6 Nov  2 21:47 test.txt
      ycq@UbuntuBase:~$
  • 数字设定法

    数字设定法中数字表示的含义

    • 0 表示没有任何权限
    • 1 表示有可执行权限 = x
    • 2 表示有可写权限 = w
    • 4 表示有可读权限 = r

    也可以用数字来表示权限如 chmod 755 file_name

    r w x r – x r - x
    4 2 1 4 - 1 4 - 1
    user group others

    若要 rwx 属性则 4+2+1=7 可读可写可执行

    若要 rw- 属性则 4+2=6 可读可写

    若要 r-x 属性则 4+1=5 可读可执行

    ycq@UbuntuBase:~$ chmod 777 test.txt 
    ycq@UbuntuBase:~$ ls -al test.txt 
    -rwxrwxrwx 1 ycq ycq 6 Nov  2 21:47 test.txt
    
    ycq@UbuntuBase:~$ chmod 770 test.txt 
    ycq@UbuntuBase:~$ ls -al test.txt 
    -rwxrwx--- 1 ycq ycq 6 Nov  2 21:47 test.txt

Linux 安装 Java

  • 下载地址

    http://www.oracle.com/technetwork/java/javase/downloads/index.html
  • 解压缩并移动到指定目录

    • 解压缩

      tar -zxvf jdk-8u152-linux-x64.tar.gz
    • 创建目录

      mkdir -p /usr/local/java
    • 移动安装包

      mv jdk1.8.0_152/ /usr/local/java/
    • 设置所有者

      chown -R root:root /usr/local/java/
  • 配置环境变量

    • 配置系统环境变量

      nano /etc/environment
    • 添加如下语句

      PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
      export JAVA_HOME=/usr/local/java/jdk1.8.0_152
      export JRE_HOME=/usr/local/java/jdk1.8.0_152/jre
      export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    • 配置用户环境变量

      nano /etc/profile
    • 添加如下语句

      if [ "$PS1" ]; then
        if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
          # The file bash.bashrc already sets the default PS1.
          # PS1='\h:\w\$ '
          if [ -f /etc/bash.bashrc ]; then
            . /etc/bash.bashrc
          fi
        else
          if [ "`id -u`" -eq 0 ]; then
            PS1='# '
          else
            PS1='$ '
          fi
        fi
      fi
      
      export JAVA_HOME=/usr/local/java/jdk1.8.0_152
      export JRE_HOME=/usr/local/java/jdk1.8.0_152/jre
      export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
      export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
      
      if [ -d /etc/profile.d ]; then
        for i in /etc/profile.d/*.sh; do
          if [ -r $i ]; then
            . $i
          fi
        done
        unset i
      fi
    • 使用户环境变量生效

      source /etc/profile
  • 测试是否安装成功

    root@UbuntuBase:/usr/local/java# java -version
    java version "1.8.0_152"
    Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
    Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
  • 为其他用户更新用户环境变量

    su ycq
    source /etc/profile

Linux 安装 Tomcat

  • 下载地址

    https://tomcat.apache.org/
  • 解压缩并移动到指定目录

    • 解压缩

      tar -zxvf apache-tomcat-8.5.23.tar.gz
    • 变更目录名

      mv apache-tomcat-8.5.23 tomcat
    • 移动目录

      mv tomcat/ /usr/local/
  • 常用命令

    • 启动

      /usr/local/tomcat/bin/startup.sh
    • 停止

      /usr/local/tomcat/bin/shutdown.sh
  • 在目录内执行脚本

    ./startup.sh
相关文章
|
25天前
|
Linux 数据安全/隐私保护 Windows
Linux入门指南:linux权限究竟是什么?和文件有什么关系?
Linux入门指南:linux权限究竟是什么?和文件有什么关系?
30 0
|
1月前
|
监控 网络协议 Java
Linux 网络编程从入门到进阶 学习指南
在上一篇文章中,我们探讨了 Linux 系统编程的诸多基础构件,包括文件操作、进程管理和线程同步等,接下来,我们将视野扩展到网络世界。在这个新篇章里,我们要让应用跳出单机限制,学会在网络上跨机器交流信息。
Linux 网络编程从入门到进阶 学习指南
|
1月前
|
域名解析 运维 网络协议
Linux命令行全景指南:从入门到实践,掌握命令行的力量
Linux命令行全景指南:从入门到实践,掌握命令行的力量
84 0
|
2月前
|
Shell Linux
Linux下的Shell基础——Shell概述和入门(一)
Linux下的Shell基础——Shell概述和入门(一)
38 0
Linux下的Shell基础——Shell概述和入门(一)
|
3月前
|
安全 Unix Linux
【Linux入门指南:掌握开源操作系统的基础知识】(四)
【Linux入门指南:掌握开源操作系统的基础知识】
|
3月前
|
Linux
【Linux入门指南:掌握开源操作系统的基础知识】(三)
【Linux入门指南:掌握开源操作系统的基础知识】
|
13天前
|
Unix 大数据 Linux
linux入门
linux入门
17 1
|
1月前
|
网络协议 Unix Linux
Linux 入门了解
Linux 入门了解
32 0
|
1月前
|
存储 消息中间件 网络协议
Linux 系统编程从入门到进阶 学习指南
本文旨在为初学者提供一个清晰的 Linux 系统编程入门指南,带你步入 Linux 系统编程的世界,从基本概念到实用技能,一步步建立起您的知识体系。
Linux 系统编程从入门到进阶 学习指南
|
1月前
|
人工智能 Linux 索引
Linux入门指令和权限讲解
Linux入门指令和权限讲解