Linux 系统管理笔记
一、常用目录结构
| 目录 | 用途 |
|---|---|
/usr | 存放应用程序文件,/usr/local用于后安装软件 |
/var | 存放所有数据文件(日志、邮件等) |
/proc | 虚拟文件系统,反映内核配置和状态(CPU、内存等信息) |
/etc | 系统配置文件(RPM 安装软件的配置通常也放这里) |
二、硬件与系统信息查看
| 查看项 | 命令 |
|---|---|
| 内存总量 | grep MemTotal /proc/meminfo |
| 交换分区 | /sbin/swapon -s |
| 挂载光驱 | mount /dev/cdrom |
| 时区设置 | timeconfig |
三、常用命令速查
| 命令 | 用途 |
|---|---|
head/tail | 查看长文件的开头和结尾 |
netstat | 查看网络状态 |
tar | 解压.tar.gz压缩包 |
ps | 查看进程 |
kill/kill -3 | 终止进程(-3发送 SIGQUIT) |
top | 实时查看系统状态 |
shutdown | 关闭系统 |
cat | 查看文件内容 |
ping | 测试网络连通性 |
ftp | 文件传输 |
man | 查看手册 |
lsof | 查看端口占用和进程打开的文件 |
四、文件系统管理
4.1 mount 命令
查看已挂载文件系统的信息,包括:
挂载点与设备对应关系
文件系统类型(ext4/xfs/nfs/tmpfs 等)
挂载选项(rw/ro、noexec、nosuid、noatime 等)
4.2 RPM 包管理
| 操作 | 命令 |
|---|---|
| 安装/升级 | rpm -Uvh 包名 |
| 卸载 | rpm -e 包名 |
| 查询包内文件 | rpm -q --filesbypkg 包名 |
五、网络配置
5.1 IPTables 端口映射
场景:外网1.2.3.4:81→ 内网192.168.0.2:8180
# DNAT:目的地址转换(入站) iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 81 -j DNAT --to-destination 192.168.0.2:8180 # SNAT:源地址转换(出站) iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.2 -p tcp --dport 8180 -j SNAT --to-source 192.168.0.1 # 允许访问 iptables -A INPUT -d 192.168.0.2 -p tcp --dport 8180 -i eth0 -j ACCEPT # 禁止某个 IP iptables -I INPUT -s 192.168.0.55 -j DROP5.2 修改 IP/DNS/主机名
| 配置项 | 文件路径 | 示例 |
|---|---|---|
| 网卡 IP | /etc/sysconfig/network-scripts/ifcfg-eth0 | IPADDR=218.104.106.180 |
| DNS | /etc/resolv.conf | nameserver 202.106.196.115 |
| 主机名 | /etc/sysconfig/network | HOSTNAME=xxx+hostname XXXX |
| 多 IP 绑定 | 创建ifcfg-eth0:0 | DEVICE="eth0:0" |
| 网卡绑定(bonding) | 脚本加载bonding模块 | ifenslave bond0 eth0 eth1 |
重启网络:service network restart或ifdown eth0 && ifup eth0
六、VPN 服务(PPTP)
6.1 安装包
dkms-2.0.5-1.noarch.rpmkernel_ppp_mppe-0.0.5-2dkms.noarch.rpmppp-2.4.3-4.rhel3.i386.rpmpptpd-1.2.3-1.i386.rpm
6.2 配置步骤
| 步骤 | 文件 | 配置内容 |
|---|---|---|
| 1. 日志配置 | /etc/syslog.conf | daemon.debug /var/log/pptpd.log |
| 2. IP 分配 | /etc/pptpd.conf | localip 172.22.1.120-160/remoteip 172.22.1.161-190 |
| 3. 用户认证 | /etc/ppp/chap-secrets | user pptpd password * |
| 4. DNS 配置 | /etc/ppp/options.pptpd | ms-dns 202.101.172.35 |
| 5. 启动服务 | service pptpd start |
七、NFS 服务
7.1 服务端配置
| 操作 | 命令/文件 |
|---|---|
| 共享配置 | /etc/exports |
| 启动服务 | service portmap start+service nfs start |
| 重新加载配置 | exportfs -ra |
| 查看共享 | showmount -e hostname |
exports 参数说明:
rw/ro:读写/只读root_squash/no_root_squash:root 用户是否映射为匿名用户all_squash:所有用户映射为匿名用户sync/async:同步/异步写入
7.2 客户端使用
showmount -e server_ip # 查看可用共享 mkdir -p /home/nfs/public # 创建挂载点 mount -t nfs server:/home/public /home/nfs/public umount /home/nfs/public # 卸载八、SELinux 管理
| 操作 | 命令/配置 |
|---|---|
| 查看状态 | getenforce/sestatus -v |
| 临时关闭 | setenforce 0(permissive 模式) |
| 临时开启 | setenforce 1(enforcing 模式) |
| 永久关闭 | /etc/sysconfig/selinux中SELINUX=disabled |
| 内核参数 | /boot/grub/menu.lst添加selinux=0 |
九、NTP 时间同步
# 手动同步 ntpdate time.buaa.edu.cn hwclock -w # 写入硬件时钟 # 定时任务(crontab -e) 0 0 * * * /usr/sbin/ntpdate time.buaa.edu.cn;/sbin/hwclock -w十、SSH/Telnet 优化(解决登录慢)
| 原因 | 解决方法 |
|---|---|
| DNS 反向解析 | /etc/hosts加入客户端 IP 和主机名 |
| SSH DNS 检查 | /etc/ssh/sshd_config设置UseDNS=no |
| GSSAPI 认证 | GSSAPIAuthentication no |
| 多余 DNS 配置 | 注释/etc/resolv.conf中不使用的行 |
| NSS 顺序 | /etc/nsswitch.conf改为hosts: files |
重启 sshd:/etc/init.d/sshd restart
十一、系统资源限制(ulimit)
| 参数 | 说明 |
|---|---|
-c | core 文件最大值(blocks) |
-d | 数据段最大值(KB) |
-f | 创建文件最大值(blocks) |
-l | 内存锁定最大值(KB) |
-m | 常驻内存最大值(KB) |
-n | 打开文件描述符最大值 |
-s | 堆栈最大值(KB) |
-t | CPU 时间上限(秒) |
-u | 最大进程数 |
-v | 虚拟内存最大值(KB) |
示例:
ulimit -s 262140 # 设置堆栈为 256MB ulimit -u 16384 -n 65536 # 进程数和文件句柄数永久生效:添加到/etc/profile
十二、TCP/IP 内核参数优化
12.1 高并发 Web 服务器优化(/etc/sysctl.conf)
net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1800 net.ipv4.tcp_window_scaling = 0 net.ipv4.tcp_sack = 0 net.ipv4.tcp_timestamps = 012.2 解决 TIME_WAIT 过多
net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1生效命令:sysctl -p
12.3 其他重要参数
| 参数 | 默认值 | 建议值 | 说明 |
|---|---|---|---|
tcp_syn_retries | 5 | 2 | SYN 重试次数 |
tcp_synack_retries | 5 | 2 | SYN+ACK 重试次数 |
tcp_keepalive_probes | 9 | 5 | keepalive 探测次数 |
tcp_keepalive_intvl | 75 | 15 | 探测间隔(秒) |
tcp_retries2 | 15 | 5 | 活跃连接重试次数 |
tcp_orphan_retries | 7 | 3 | 孤儿连接重试次数 |
tcp_fin_timeout | 60 | 30 | FIN-WAIT-2 超时 |
tcp_max_tw_buckets | 180000 | 适当增加 | TIME_WAIT 最大数量 |
十三、系统安全加固
13.1 关闭不必要服务
| 方法 | 操作 |
|---|---|
| inetd 服务 | 编辑/etc/inetd.conf,注释不需要的服务 |
| 启动脚本 | /etc/rc.d/rc3.d/下将S改为s |
| 工具关闭 | setup→ "system services" 或chkconfig |
危险服务示例:rshd、rlogind、fingerd、linuxconf(曾存在 root shell 绑定漏洞)
13.2 账号安全
| 措施 | 操作 |
|---|---|
| 删除无用账号 | 从/etc/passwd移除 mail、news 等 |
| 限制 root 登录 | /etc/securetty去除虚拟终端 |
| FTP 限制 | /etc/ftpusers加入 root |
| SUID 检查 | find / -perm -4000 -print |
| 移除不必要 SUID | chmod -s |
13.3 访问控制(TCP Wrappers)
# /etc/hosts.deny - 拒绝所有 ALL:ALL # /etc/hosts.allow - 允许特定 sshd:192.168.0.0/2413.4 文件保护
# 锁定关键文件(连 root 都无法修改,需先 chattr -i) chattr +i /etc/shadow chattr +i /etc/inetd.conf # 清除历史命令记录 HISTFILESIZE=0 # .bash_profile ln -s /dev/null ~/.bash_history # 或链接到黑洞13.5 物理安全
/etc/lilo.conf设置启动密码取消 root 远程 Telnet/FTP:重命名
/etc/securetty或修改/etc/vsftpd.ftpusersSSH root 登录:
/etc/ssh/sshd_config设置PermitRootLogin yes
十四、VI 编辑器常用操作
14.1 模式切换
按
Esc进入命令模式按
i/a/o进入编辑模式
14.2 移动与编辑
| 操作 | 命令 |
|---|---|
| 光标移动 | h(左)j(下)k(上)l(右) |
| 行首/行尾 | 0/$ |
| 文件首/尾 | :0/:$ |
| 翻页 | Ctrl+f(下) /Ctrl+b(上) |
| 插入 | i(光标前)I(行首)a(光标后)A(行尾) |
| 换行插入 | o(下)O(上) |
| 删除 | x(字符)dd(行)d0(前半行)d$(后半行) |
| 查找 | /string(向下)?string(向上)n(下一个)N(反向) |
| 替换 | :1,$s/old/new/g(全局替换) |
| 显示行号 | :set number |
| 保存退出 | :wq! |
| 不保存退出 | :q! |
十五、其他实用配置
| 功能 | 配置方法 |
|---|---|
| 启动进入图形/文本界面 | /etc/inittab中id:5:initdefault:或id:3:initdefault: |
| 图形↔控制台切换 | Ctrl+Alt+Fn(n=1-6) /Alt+F7(返回图形) |
| 限制用户登录 | /etc/passwd中 shell 改为/sbin/nologin |
| 限制登录失败次数 | /etc/security/limits.conf设置maxlogins 3 |
| 系统日志路径 | /var/log/messages |
| VMware Tools 安装 | VM → Install VMware Tools → 挂载光驱 → 执行.pl文件 |
