แก้ PATH ผิดชีวิตก็เปลี่ยน

mrgill   | June 3, 2015   |   197 Views

ขอบคุณพี่หน่อยมากครับที่ช่วยให้ผมได้แก้ปัญหา Server ในรอบ 2 ปีเลยก็ว่าได้
Linux ก็มี PATH
Windows ก็มี PATH

ส่วนใหญ่ตัวแปร PATH จะใช้เก็บไดเร็กทอรี execute file ของพวกโปรแกรมต่างๆ ไว้เพื่อให้เรียกใช้ง่ายได้ง่ายไม่ต้อง /xxx/yyy/zzz ให้ยุ่งยากเสียเวลา แต่ถ้าคุณเพิ่ม PATH ผิดละก็ทำให้งานงอกได้เหมือนกันนะครับ

ตัวอย่างเช่นกรณีวันนี้
ใครสักคนต้องการที่จะติดตั้ง tomcat ไว้ใช้งานบน server แต่ปรากฏว่าเขาได้แก้ไขไฟล์ config บางตัวผิดพลาดทำให้เรียกคำสั่ง ls, cat หรือคำสั่งควบคุม service ต่างๆ ไม่ได้เลย ที่จริงก็ยังเรียกได้แต่ต้องพิมพ์ PATH เต็มๆ เข้าไป
เมื่อได้รับสายจากพี่ชายที่อยู่แดนไกล แล้วพี่เขาบอกว่า น้องกิว server พี่เรียกทำสั่งๆ ต่างไม่ได้เลย ประเด็นแรกที่ผมโฟกัสไปก็คือเจ้า PATH นี่แหละ ต้องมีอะไรผิดปกติแน่ๆ ปัญหามีอยู่อย่างเดียวคือตอนที่พี่แกโทรมาผมนั่งกิน Sukishi อยู่กับภรรยา เบื้องต้นให้พี่เค้าสองสั่งคำสั่งต่างๆ ด้วย path เต็มๆ ก็ยังสามารถสั่งได้ปัญหามาจาก PATH ผิดชัวๆ

หลังจากเช็คบิลตัวเบาๆ ออกจากร้านก็กลับมาเปิด 3g กากๆ remote ไปดู
สิ่งแรกที่ผมทำคือ
/bin/echo $PATH

[root@PDCSERVER ~]# echo $PATH
/opt/tomcat/bin::/root/bin

ดูเสร็จรู้เลย /bin /sbin ไม่รู้หายไปไหนหมดเช็ค .bash_profile .bash_rc ก็ปกติดี
ลอง last กับ history ดูก็พบว่ามีคน remote มาลง tomcat แล้วก็ได้ฝังไฟล์ script.sh ไว้ที่ /etc/profile.d
ลองตามไปเปิดดู

[root@PDCSERVER ~]# /bin/cat /etc/profile.d/script.sh
#!/bin/bash
CATALINA_HOME=/opt/tomcat
PATH=$CATALINA_HOME/bin:$PATHcd
export PATH CATALINA_HOME
export CLASSPATH=.

ผมเดาเอาว่าคนแก้คงต้องการแก้เป็น
[root@PDCSERVER ~]# cat /etc/profile.d/script.sh
#!/bin/bash
CATALINA_HOME=/opt/tomcat
PATH=$CATALINA_HOME/bin::$PATH
export PATH CATALINA_HOME
export CLASSPATH=.

สิ่งที่ทำให้ผิดพลาดคือ : หายไปตัวนึงแล้วก็เผลอกด cd ตามหลัง $PATH
หลังจากลองแก้ดู แล้ว login เข้าไปยัง Server ใหม่ก็ใช้งาน PATH ได้ตามปกติครับ

[root@PDCSERVER ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

PATH กลับมาแล้ว
จบข่าว

ประเด็นที่ผมอยากโฟกัสอีกเรื่องนึงครับสำหรับทำ Troubleshooting คือการหาสาเหตุที่แท้จริงของปัญหาไม่ใช่แก้ปัญหาที่ปลายน้ำ อย่างเช่นกรณีนี้เรื่อง PATH ผิดที่จริงแก้ไขง่ายมากแค่

export PATH=/bin::/sbin::/usr/bin::/usr/sbin::$PATH

จะต้องการให้ชี้ไปไหนก็ใส่ๆ ไปครับแต่มันยังไม่จบแค่นั้น เราควรหาสาเหตุที่แท้จริงว่าทำไมมันจึงเกิดปัญหานั้น อย่างที่ผมเจอดีตรงที่มี keyword tomcat โผล่อยู่ใน PATH ผมเลยพอเดาไว้ว่าน่าจะมาจากมันนี่แหละ แต่มันแอบอยู่ตรงไหนหละ ผมจึง history ไปดูก็พบกับ config /etc/profile.d/script.sh และนี่แหละครับสาเหตุต้นตอของปัญหานี้ แก้ให้ถูกซะจะได้ไม่ต้องมานั่ง export ทุกครั้งที่ login ที่จริงผมคิดไปถึงเรื่อง server โดน hack ด้วยซ้ำแต่ที่ดู last log กับ history ก็ยังไม่ถือว่าเลวร้าย

ขอบคุณที่สนใจอ่าน

Share/Save

Comments

comments

Powered by Facebook Comments

Category : Linux,truebleshooting,Unix

Tags:

วิธีแก้ปัญหา HDMI ของการ์ดจอ ATI ไม่มีเสียงบน Ubuntu (สำหรับ External Monitor)


Recent Entries

Random Posts

Social Network

Tag Cloud

Calendar

June 2015
S M T W T F S
« Oct    
 123456
78910111213
14151617181920
21222324252627
282930  

Twitter: imrgill

RSS LinuxToday

RSS HowToForge

RSS UbuntuClub

RSS Blognone

RSS PowerWindowsBlog

Tag

Categories

Archives

Blogroll