วิธีแก้ปัญหาเบื้องต้น เมื่อคุณรันแอพลิเคชั่นบางอย่างไม่ได้ (ทั้งๆ ที่เคยใช้ได้มาก่อน)


Posted in:
Cray's picture

พอดีว่าผมเป็นพวกมือใหม่หัดขับ แต่ชอบลองของ (เมื่อวานก็เจอปัญหา Trash เดี้ยง ไม่รู้จะแก้ยังไง เลยจัดการ format ลงใหม่ไปซะเลย อิอิ)

มาวันนี้หลังจากลงโปรแกรมทั้งผ่านทาง apt-get และ download มาลงเอง (ทั้งแบบ binary package และ source package) ก็เจอปัญหาเข้าอีกจนได้

อย่างแรกเลย ผมต้องการเพิ่ม menu item ใหม่ แต่ไม่สามารถรันโปรแกรม main menu (System -> Preferences -> Main Menu) ได้ พยายามค้นดูจาก google ก็รู้ว่าเจ้าโปรแกรมนี้ชื่อว่า alacarte

ได้ชื่อมาปุ๊บ ก็เอามาลองรันใน terminal เลยรู้ว่ามันต้องการ write permission เพื่อที่จะเขียนไฟล์ลงใน ./local/share/applications/... ซึ่งมันอยู่ใน home directory ของผมอยู่แล้ว งงสิครับ มันควรจะใช้ได้แล้วนี่นา แต่ทำไมมันใช้ไม่ได้ ?!?!?

หลังจากมั่วไปมาอยู่พักใหญ่ ก็เข้าใจว่า เป็นเพราะมี application บางอย่างที่ผมติดตั้งและรันเองใน super user mode มันเลยสร้างไฟล์และไดเร็คทอรี่ด้วย user/group ของ root ทำให้ application ไมาสามารถเข้าไปเขียนไฟล์เหล่านั้นได้ (ทั้งๆ ที่อยู่ใน home directory ของตัวเอง)

วิธีแก้ก็ได้พี่ google นี่แหละที่บอกให้ พี่เค้าว่าให้ใช้ chown เปลี่ยนเจ้าของไฟล์และไดเร็คทอรี่ที่เป็นของ root กลับมาเป็นของเราซะ ตัวอย่างเช่น เราสั่ง ls -la แล้วเจอแบบนี้เข้า



.
..
drwxr-xr-x root root .eclipse <-- อีกปัญหาที่ผมเจอ และแก้ด้วยอิธีเดียวกัน
-rw-r--r-- root root .pixelmsg <-- นี่ก็ด้วย
-rw-r--r-- cray cray .bashrc

cray@cray-laptop:~$


ซึ่ง .eclipse มันน่าจะเป็นของเราแทนที่จะเป็นของ root (ซึ่งทำให้ผมติดตั้ง plugins ไม่ได้) ส่วนอีกอันเป็นไฟล์ของโปรแกรม Pixel Image Editor (หน้าตาและการใช้งานคล้ายๆ Photoshop เป็น shareware ครับ) ให้แก้อย่างนี้ครับ



cray@cray-laptop:~$ sudo chown -R cray:cray .eclipse/ <-- จริงๆไม่ใส่ / ตามหลังก็ได้ แต่กด tab แล้วมันมาเอง

cray@cray-laptop:~$ sudo chown cray:cray .pixelmsg <-- แบบไฟล์ไม่มี / ตามหลัง ไม่ต้องใช้ -R ก็ได้


อธิบายเพิ่มนิดหน่อย สำหรับคนที่เป็นมือใหม่เหมือนผม chown เป็นคำสั่งที่ใช้ในการเปลี่ยนความเป็นเจ้าของไฟล์และไดเร็คทอรี่ครับ ส่วน parameter -R เป็นการบอกให้มันเปลี่ยน owner ให้กับไฟล์และ sub directory ทั้งหมดที่อยู่ภายใต้ directory เป้าหมาย ส่วน cray:cray ก็เปลี่ยนเป็นชื่อ user ของคุณนะครับ ใช้ชิ่อผมคง error แน่ๆ ตามด้วยชื่อไฟล์หรือไดเร็คทอรี่ที่ต้องการเปลี่ยนความเป็นเจ้าของ เท่านี้ โปรแกรมต่างๆ ก็กลับมาทำงานได้เป็นปกติแล้วครับ

ลองเข้าไปเช็คกันดูสิครับว่า ใน /home/<yourname>/ มีไฟล์ไหนที่กลายเป็นของ root ไปมั่ง จัดการแก้กลับมาเป็นของเราให้หมดครับ :)

GreenApple's picture

ดีมาก

เป็นความรู็ที่ดีจริงๆ

ขอบคุณครั

ขอบคุณครับ

ขอบคุณมากครับ

เห็นคำสั่งนี้มาตังนานแล้วแต่ไม่ get ว่ามันใช้อย่างไงผมมีปัญหามาก ต้องใช้ chmod ทำตลอด เจอ chown เจ๋งเลยขอบคุณมากครับ

คือ

คือ เป็นเด็กใหม่อะครับ ยังงง งง อยู่

อยากทราบ ว่าจะดูยังไง ว่าไฟล์ไหน เปลี่ยนเป็น root แล้วอะ ครับ

Cray's picture

อย่างนี้ครับ

ใช้คำสั่ง ls -la ใน terminal ครับ ดูใน /home/ นะครับ (จริงๆ ดูใน Nautilus ก็ได้ แต่ผมไม่ชินกับวิธีแสดง Permission แบบใหม่ของมัน เลยดูจาก Terminal เอาครับ)


cray@cray-laptop:~$ ls -l
.
..
drwxr-xr-x root root .eclipse
-rw-r--r-- root root .pixelmsg
-rw-r--r-- cray cray .bashrc

cray@cray-laptop:~$

สังเกตุจากส่วนที่เป็นตัวหนาครับ ถ้าขึ้นเป็น root root ก็หมายความว่าไฟล์ดังกล่าวโดน root ยึดไปแล้วครับ ผมไม่แน่ใจว่า root ตัวแรกหมายถึง user และ root ตัวที่สองหมายถึง group หรือเปล่า อาจจะจำสลับกันครับ แต่ใน ubuntu ชื่ิอ user ของคุณจะถูกสร้างออกมาเป็น group ในชื่อเดียวกันด้วยครับ

บางทีมันไม่ได้อยู่ใน level บนสุดนะครับ มันอาจจะโดนเปลี่ยนในส่วนที่เป็น sub-folder ก็เป็นได้ ถ้าโปรแกรมไหนใช้งานไม่ได้ ให้ลองเข้าไปดูใน folder ของมัน เช่น ถ้าใช้ alacarte ไม่ได้ ให้เข้าไปดูที่ /home//.config แล้วใช้ ls -la ดู ให้ครบทุก folder ว่ามี file หรือ folder ไหนที่โดนเปลี่ยน owner เป็น root หรือเปล่าครับ

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <i> <center> <span> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <br> <dt> <dd> <object> <embed> <hr> <img> <blockquote> <b> <u> <del> <div> <p> <table> <tr> <td> <font>

More information about formatting options