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/