Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

แก้ไข: You don't currently have permission to access this folder

หากคุณใช้ Linux subsystem ใน Windows, Cygwin หรือวิธีอื่นๆ ในการเชื่อมต่อ Unix และ Windows คุณอาจเจอข้อผิดพลาด "you don't currently have permission to access this folder" ในสภาพแวดล้อม Linux/Unix 純粋 (pure) อาจเจอข้อความแบบ "error opening directory: permission denied" สิ่งเดียวกันอาจเกิดบน network drives ที่ให้บริการจากระบบไฟล์ที่เข้ากันได้กับ POSIX ไม่ว่าจะเข้าถึงจาก OS ใดก็ตาม

สาเหตุเหมือนกันทุกกรณี: คุณมีไดเรกทอรีที่ตั้งค่าจำกัดการเข้าถึง แล้วพยายามเข้าไปจากบัญชีที่ไม่มีสิทธิ์ที่เหมาะสม การแก้ไขง่ายๆ คือ ล็อกอินเข้าบัญชีอื่น หรือเปลี่ยนสิทธิ์โฟลเดอร์

วิธีที่ 1: เปลี่ยนบัญชีเพื่อเข้าถึงไดเรกทอรี

ลองเข้าถึงโฟลเดอร์ที่ต้องการ หากพยายาม cd เข้าไปจาก command prompt จะได้ข้อความแบบ bash: cd: Permission denied

แก้ไข: You don t currently have permission to access this folder คุณจะได้ข้อผิดพลาดคล้ายกันหากพยายามเข้าถึงจากสภาพแวดล้อมกราฟิกอล

แก้ไข: You don t currently have permission to access this folder

ในตัวอย่างเราพยายามเข้าถึงไดเรกทอรี /lost+found ซึ่งในการติดตั้ง Linux ส่วนใหญ่ล็อกการเข้าถึงไว้เฉพาะ root user กลับไปที่เทอร์มินัล พิมพ์ sudo -i แล้วกด Enter จะขอรหัสผ่าน แล้วคุณจะได้ root login shell สามารถ cd เข้าไปดูได้ แต่โปรดระวังว่าคุณทำงานจาก root shell ซึ่งทำลายระบบได้ง่ายมาก

หากชอบอยู่บัญชีปกติ ให้ลอง sudo ls /lost+found เพื่อดูเนื้อหาในไดเรกทอรีโดยไม่ต้องรัน sudo -i สามารถแทนที่ /lost+found ด้วยชื่อไดเรกทอรีอื่นๆ รวมถึง /root ได้ จำไว้ว่าการใช้ sudo นำหน้ายังคงอนุญาตให้ทำลายเกือบทุกอย่างได้

วิธีที่ 2: เปลี่ยนสิทธิ์เริ่มต้นของโฟลเดอร์ (Changing Default Permissions)

วิธีแรกเรียบง่ายและใช้ได้กับโฟลเดอร์ที่อยากดูเพื่อซ่อมบำรุงระบบ แต่หากต้องการให้ผู้ใช้ทั่วไปเข้าถึงโฟลเดอร์ได้ปกติแม้บนเซิร์ฟเวอร์หรือเครือข่าย ให้ลองทางเลือกอื่น

รัน sudo chmod -R 755 /path/to/folder โดยแทนที่ path ด้วย path จริงของไดเรกทอรีที่ต้องการให้เข้าถึงได้ หลังจากนั้นลองเข้าถึงจากบัญชีผู้ใช้ทั่วไป วิธีนี้ซับซ้อนกว่าเล็กน้อย แต่ปลอดภัยและถาวรมากกว่า เพราะไม่ต้องใช้บัญชี root หลังจากครั้งแรก

ในส่วนใหญ่ สามารถสร้างไดเรกทอรีใหม่พร้อมสิทธิ์เหล่านี้ตั้งแต่แรกได้ ลองใช้ mkdir -m 755 เพื่อตั้งค่าให้อ่าน เขียน รันได้สำหรับเจ้าของ และอ่าน รันได้สำหรับผู้อื่น หรือใช้ 777 ซึ่งให้ทุกคนที่ล็อกอินในโครงสร้างไฟล์ทำอะไรก็ได้กับไดเรกทอรีนั้น แม้จะมีกรณีที่ต้องการทำเช่นนี้ (เช่น removable storage เพื่อย้ายไฟล์ระหว่างเครื่อง) แต่ควรคิดดีๆ หากทำบน local file system การใช้ flag -p แทนจะให้ไดเรกทอรีใหม่ได้สิทธิ์ default ซึ่งมักเหมือนกับการรัน mkdir ธรรมดา

ยังสามารถกำหนดสิทธิ์ไฟล์ขณะคัดลอกได้ ลองใช้ rsync --perms --chmod Fu+w หากต้องการให้เจ้าของมีสิทธิ์เขียนไฟล์ สามารถระบุการผสมผสานอื่นๆ ได้ ยังสามารถใช้ --chown= กับ rsync ตามด้วยชื่อผู้ใช้, colon, และกลุ่มของพวกเขา เพื่อให้ไฟล์ที่คัดลอกได้รับการกำหนดสิทธิ์ที่ถูกต้อง

เนื่องจาก rsync มีประโยชน์มากในการคัดลอกโครงสร้างไฟล์ POSIX-compatible ระหว่าง Windows และ Linux อาจลองทดสอบการตั้งค่า chmod ต่างๆ ขณะใช้ rsync อีกคำสั่งที่น่าสนใจคือ install รัน install -m 777 ตามด้วยต้นทางและปลายทางของไฟล์ เพื่อให้สิทธิ์อ่านเขียนทันทีสำหรับทุกคน สามารถใช้ 755 หรือรูปแบบอื่นเพื่อความปลอดภัยได้

แน่นอนว่าวิธีนี้ไม่เร็วเท่า rsync แต่อาจใช้ได้ในสถานการณ์ที่ต้องการระบุสิทธิ์แน่นอนเพื่อแก้ข้อผิดพลาดแบบ "you don't currently have permission to access this folder"