Linux新手避坑指南:零基础安装与环境配置
|
哎你说现在这Linux新手教程,十个有八个教人用root装系统——我原以为早没人这么干了,结果上周运维小王刚踩坑,他装Ubuntu时直接勾了「自动登录root」,结果第二天发现/home目录权限被自己用vim改成了777,所有用户的.ssh/id_rsa都暴露了,你说这找谁说理去? 咖啡机坏了三天了,现在全组都靠楼下便利店的瓶装美式续命。但这不是重点,重点是上周五我帮新人装系统,他非要用虚拟机,我原以为他图方便,结果他给虚拟机分配了2核4G——可他宿主机才8G内存啊!装到一半卡死,日志刷得比瀑布还快,我蹲在椅子上看他屏幕,发现他居然在/etc/fstab里手动挂载了三个NTFS分区,其中两个还是Windows的休眠分区,开机直接卡在「waiting for device」... 这时候隔壁测试组的小刘突然凑过来:「你们是不是在聊Linux?我上周把/etc/sudoers改错了,直接锁了所有用户的sudo权限,最后用live CD恢复的。」他说着掏出手机翻照片,「你看这行,我原以为写『%admin ALL=(ALL) ALL』就行,结果多打了个空格,系统直接拒接所有sudo命令。」我盯着他手机屏幕看了五秒,发现他居然用记事本编辑sudoers文件——这哥们儿之前是Windows运维吧? 说到空格,上周二我帮新人配置环境变量,他非要把JAVA_HOME写成「/usr/lib/jvm/java-11-openjdk-amd64/」——注意最后那个斜杠!结果每次启动Tomcat都报「Permission denied」,我查了半小时日志才发现,是环境变量末尾的斜杠导致系统把后续路径当成了子目录。后来我让他用echo $JAVA_HOME测试,发现输出里多了个空格——这货居然在.bashrc里用「JAVA_HOME= /usr/lib...」写的,等号两边都有空格! 这时候运维老张端着保温杯晃过来:「你们说的这些我都懂,但最坑的是换源。上周有个新人把Ubuntu的源换成了CentOS的,apt update直接报404,他还以为网络问题,折腾了两小时才发现/etc/apt/sources.list里写的是『baseurl=http://mirror.centos.org』。」他说着指了指自己工位隔断上贴的便签——那上面用红笔写着「换源前先看系统版本!」,便签边都卷了。 我原以为换源是最基础的操作,结果上周三产品组的小李找我,说他的Docker容器里curl不通外网。我登上去一看,好家伙,他在Dockerfile里写了「RUN echo 'nameserver 8.8.8.8' > /etc/resolv.conf」,结果容器启动后/etc/resolv.conf被覆盖成了空文件——他忘了Docker默认会使用宿主机的DNS配置!最后我让他在docker run时加--dns 8.8.8.8才解决,他还问我:「那以后每个容器都要加这个参数吗?」我盯着他屏幕上的「docker build -t test .」命令,突然不想说话了。 这时候测试组的小刘又插嘴:「你们说的这些都不算啥,我上周把/etc/ssh/sshd_config里的「PermitRootLogin」从『no』改成『yes』,结果重启ssh服务后自己被踢出服务器了——我忘了自己是用root连接的!」他说着掏出手机翻聊天记录,「你看这行,我原以为改完配置直接systemctl restart sshd就行,结果...」我打断他:「结果你忘了保存原配置?」他摇头:「不,我保存了,但没开另一个终端窗口!」 说到终端窗口,上周四新人小王装完系统后问我:「为什么我的终端显示中文是乱码?」我让他运行「locale」,发现LANG=en_US.UTF-8,LC_ALL=C。我让他改/etc/default/locale,结果他直接用vim打开文件,把所有行都删了,只留了「LANG=zh_CN.UTF-8」——然后保存时手滑按了Ctrl+Z,文件没保存成功,还把vim挂在了后台。我查了半天堆栈才发现,他的.bashrc里居然有「stty -ixon」这行——这货之前看教程说禁用Ctrl+S/Ctrl+Q,结果把终端的流控制关了,导致Ctrl+Z失效! 这时候运维老张突然说:「你们说的这些我早见怪不怪了,但最绝的是上周五,新人小赵装完系统后问我『为什么我的磁盘空间显示只有10G?』我让他运行df -h,发现/dev/sda1确实只有10G——他装系统时选了「最小安装」,结果/根分区只分了10G,/home分了200G!更绝的是,他居然把/var/log挂载到了/home下的一个子目录里,导致系统日志写满后直接崩溃!」 我原以为分区是最基础的操作,结果上周六产品组的小陈找我,说他的Ubuntu虚拟机突然无法启动,报错「no such device」。我登上去一看,好家伙,他在/etc/fstab里挂载了一个不存在的NTFS分区——那分区是他之前用Windows分的,但虚拟机里根本没这个磁盘!更搞笑的是,他居然给这个不存在的分区设置了「nofail」选项——这选项确实能避免启动时报错,但会导致系统每次启动都尝试挂载这个分区,直到超时! 这时候测试组的小刘又插嘴:「你们说的这些都不算啥,我上周把/etc/cron.d/里的一个定时任务写错了,导致系统每分钟执行一次『rm -rf /tmp/』——结果把正在运行的Tomcat的临时文件全删了,服务直接崩溃!」他说着掏出手机翻日志,「你看这行,我原以为写『 root rm -rf /tmp/』就行,结果...」我打断他:「结果你忘了加路径?」他摇头:「不,我加了,但我把『root』写成了『rooot』!」 说到拼写错误,上周二新人小王装完系统后问我:「为什么我的ifconfig命令找不到?」我让他运行「which ifconfig」,发现/sbin/ifconfig不存在。我让他运行「apt install net-tools」,结果他输入成了「apt install net-tool」——少了个s!系统提示「Unable to locate package net-tool」,他还以为网络问题,折腾了半小时才发现是拼写错误! 这时候运维老张突然说:「你们说的这些我早见怪不怪了,但最绝的是上周三,新人小赵装完系统后问我『为什么我的sudo命令要输密码?』我让他运行『sudo -l』,发现他的用户不在sudoers列表里。我让他用root运行『usermod -aG sudo 小赵』,结果他输入成了『usermod -aG sudoer 小赵』——多打了个er!系统提示『group sudoer does not exist』,他还以为自己没权限,折腾了半天才发现是拼写错误!」 我原以为这些基础操作不会出错,结果上周四产品组的小陈找我,说他的Ubuntu虚拟机无法联网。我登上去一看,好家伙,他在/etc/network/interfaces里把eth0的配置写成了: auto eth0 iface eth0 inet dhcp address 192.168.1.100 netmask 255.255.255.0
文章配图,仅供参考 gateway 192.168.1.1——他居然同时用了DHCP和静态IP!结果系统启动时先获取了DHCP分配的IP,又被静态配置覆盖,导致网络配置冲突,无法访问外网! 所以你看,Linux新手踩的坑,十有八九是「自以为懂」的结果。就像运维老张说的:「优胜劣汰,能活下来的新手,都是踩过足够多的坑的。」至于怎么避坑?我的建议是:装系统时别用root,换源前先看系统版本,改配置前先备份,拼命令时多检查两遍——还有,别信那些「一键安装」的脚本,它们只会让你踩更深的坑。 不过话说回来,我上周五帮新人恢复系统时,发现他的/home目录下有个叫「linux_notes.txt」的文件,里面记着他踩过的所有坑——从分区错误到拼写错误,从权限问题到网络配置,整整写了二十多条。我翻着翻着突然笑了:这哥们儿虽然踩了一堆坑,但至少知道记录下来——这比那些踩完坑还浑然不知的新手,强多了。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


Linux老手也常踩的5个Unix环境搭建坑
Linux下H5开发环境搭建与数据库配置
PHP建站避坑:90%新手选错框架的真相
Linux安全环境搭建:13年经验实战指南
Linux数据库环境搭建七步实操指南