Willson Chen

Stay Hungry, Stay Foolish.

Linux 基础

Linux

简介

  • Linux是Linux Is Not Unix的递归缩写。
  • 是开源和免费的类Unix操作系统,1991年首次发布。
  • 广泛应用于服务器、移动设备、嵌入式设备等。
  • 主要由内核、shell、文件系统和应用软件组成。
  • 存在不同的发行版,如ubuntu、centos等。
  • 特点:
    • 开源免费,内核的官网www.kernel.org
    • 支持多用户、多任务
    • 稳定性、可靠性,可连续长时间运行不重启。
    • 安全性
    • 灵活性
  • linux哲学:一切皆文件,包括系统配置、硬件等。

文件结构

  • /:根目录
  • /bin:存放二进制可执行文件,包括常用命令ls、mkdir等。
  • /sbin:存放系统管理的可执行文件,必须root权限执行,如shutdown。
  • /usr/bin:存放用户自己安装的可执行文件。
  • /boot:存放内核与启动引导相关文件。
  • /dev:存放设备文件,可以直接访问设备。
  • /etc:存放系统配置文件。
  • /proc:存放内存映射文件,不占用磁盘空间,可以获取系统信息。
  • /lib:存放C语言函数库。
  • /home:存放所有用户文件的根目录。
  • /root:存放root用户文件的目录。
  • /tmp:存放临时文件的目录。
  • /var:存放经常变动的文件。
  • /var/log:存放日志文件。
  • /usr:存放应用程序文件。
  • /usr/local:存放用户自己安装的软件文件。
  • /usr/share:存放共享的文件。

常用命令

文件目录相关命令

  • ls/cd/pwd/mkdir/rmdir
  • touch/cp/mv/rm
  • cat/more/head/tail
  • find

权限相关命令

  • chmod:修改文件权限
    • chmod abc file
    • abc各为一个数字,分别表示User、Group、Other的权限。
    • 读r=4,写w=2,执行x=1,rwx=7,对应二进制0111。
    • 例如:chmod 777 file,表示User、Group、Other都有读写执行权限。
  • chown:修改文件所有者

文本编辑器

  • vim/vi
    • vim file
    • 进入后处于命令模式
    • 命令模式下按i进入输入模式,按ESC退回命令模式。
    • 命令模式下按:进入底行模式,输入wq保存并退出,输入q直接退出,如果有变更需输入q!强制退出。
    • 命令模式下按/进入搜索模式,输入要搜索的内容,按n向下搜索,按N向上搜索。

打包

  • tar
    • tar -cvf 打包文件.tar 被打包的文件
    • tar -xvf 打包文件.tar
    • -c:创建打包文件
    • -x:解开打包文件
    • -v:显示打包过程
    • -f:指定打包文件

重定向

  • 重定向是将命令的输出从终端重定向到其他地方。
  • “>”:输出重定向,符号前命令的输出将输入到符号后指定的文件中。
  • “>>”:追加重定向,符号前命令的输出将追加到符号后指定的文件中。
  • “|”:管道重定向,符号前命令的输出将作为符号后一个命令的输入。

输出

  • echo:直接输出
    • echo “文本内容”,输出文本内容
    • echo $PATH,输出变量内容
    • echo “文件内容” > file.txt,将文本内容写入文件file.txt

系统控制相关

  • date:查看当前时间
  • ps -aux:显示所有进程
    • -a:所有进程,包括其他用户的进程
    • -u:显示用户信息
    • -x:包括没有控制终端的进程
  • kill:正常终止进程
  • kill -9:强制终止进程
  • top/htop:实时显示进程信息
  • reboot:重启
  • shutdown:关机

网络相关命令

  • ifconfig:查看网络接口信息。
  • ping:测试网络连通性。
  • traceroute:追踪数据包路径。
  • telnet:远程登录,可以用来测试端口是否开放。
  • netstat -antp|grep 端口号:查看端口占用情况。
    • -a:所有连接和监听端口。
    • -n:数字格式显示地址和端口号。
    • -t:TCP连接。
    • -p:显示建立连接的进程。
  • wget:下载文件。
  • curl:发起http请求。
  • nslookup:域名解析。
  • scp:远程文件拷贝。
  • tcpdump:网络抓包。
  • iptables:管理防火墙规则。

用户及权限

  • 用户分类
    • 超级用户:root,拥有最高权限,唯一
    • 普通用户:由管理员创建,权限受限,一般在自己的home目录下拥有完整权限。
    • 程序用户:安装系统或应用时自动创建,仅拥有基本权限,不允许登录。
  • 用户组:方便管理员对用户进行分类管理。
  • 用户和用户组的关系:多对多。
  • 密码:root可以修改所有用户密码,普通用户只能修改自己密码。
  • 权限身份
    • 拥有者权限:文件或目录的创建者或所属者。
    • 所属组权限:文件或目录所属的用户组。
    • 其他用户权限:除文件或目录的创建者或所属者外的其他用户。
  • 权限限位
    • 读取r:查看文件内容或目录文件列表。
    • 写入w:修改文件内容或在目录下管理文件。
    • 执行x:运行文件或进入目录。
    • 无权限-
  • 权限表示方法
    • rwxr-x—:拥有者rwx,所属组r-x,其他—
    • 750:八进制表示法,等同于二进制的111101000
  • sudo权限:使普通用户可以临时以root权限执行命令。
  • 用户配置文件:
    • /etc/passwd:存放用户信息。
    • 每一行包括:用户名、密码占位符、用户ID、组ID、描述、主目录、登录shell。
    • 如果登录shell为/sbin/nologin,则不允许登录。
    • /etc/shadow:存放用户密码信息,哈希加密存储。
    • /etc/group:存放用户组信息。
    • 每一行包括:组名、组密码(通常为空)、组ID、用户列表。
    • /etc/sudoers:存放sudo权限信息。
  • 命令:
    • useradd:创建用户。
    • passwd:修改密码.
    • userdel:删除用户。
    • usermod:修改用户信息,包括所在组等。
    • groupadd:创建用户组。
    • groupdel:删除用户组。
    • su:切换用户,root可以直接切换任意用户,普通用户需输密码。
    • sudo:临时获取root权限执行命令。
    • sudo -s:切换到root权限。
    • sudo -i:切换到root用户,会加载root到环境变量。
    • whoami:查看当前用户。

SSH

  • SSH(Secure Shell)安全外壳协议。
  • 是应用层的安全协议,用于连接linux服务器。
  • SSH服务是一个守护进程,进程名sshd,基于TCP,默认端口22。
  • 登录认证方式:
    • 用户名与密码登录
    • 公钥认证登录:将自己的公钥复制到服务器,免密登录。
  • 使用公钥认证登录的方法:
    • 客户端生成公钥与私钥:ssh-keygen -t rsa
    • 复制ssh公钥到远程服务器:ssh-copy-id username@host
    • 登录远程服务器:ssh username@host
  • 公钥认证原理:
    • 客户端将自己的公钥添加到服务的到authorized_keys文件中。
    • 服务端收到客户端请求后,从authorized_key中匹配到公钥,生成随机数R,用公钥加密R发给客户端。
    • 客户端用私钥解密得到R,对R和本次会话对SessionKey一起取哈希得到摘要1,发给服务端。
    • 服务端用同样算法对R和SessionKey取摘要2,对比两个摘要,一致则认证成功。
    • 认证成功后,客户端也会存储服务端公钥,在~/.ssh/known_hosts文件中。

包管理

  • yum(YellowDog Updater,Modified)
  • 是Redhat开发的包管理器,适用于centos、fedora等发行版。
  • 优点:自动解决包的依赖关系,安装、卸载方便。
  • yum源:配置于/etc/yum.repos.d/
  • 常用命令:
    • yum search:搜索软件包。
    • yum list:列出所有已安装的软件包。
    • yum install:安装软件包。
    • yum remove:卸载软件包。
    • yum update:更新软件包。
    • yum clean:清理缓存。
    • yum makecache:生成缓存。
  • 配置yum源:下载repo文件到/etc/yum.repos.d/