สิทธิ์ถูกปฏิเสธไปยังเจ้าของแม้ว่ามันจะถูกตั้งค่าเป็น 666 ในไดเรกทอรี. ssh


12

ฉันเพิ่งยุ่งกับไดเรกทอรี. ssh ทำการเปลี่ยนแปลงการอนุญาตฉันคิดว่าและตอนนี้มันจะไม่อนุญาตให้ฉันเข้าถึงอีกต่อไป ฉันสามารถเข้าถึงได้ในฐานะผู้ใช้รูท (sudo -i) แต่ไม่สามารถใช้งานได้เหมือน somesh

ฉันได้รับอนุญาตปฏิเสธเมื่อรายการหรือ cding เป็น. ssh แม้ว่ามันจะแสดงไฟล์

ls: cannot access /home/somesh/.ssh/amazon.pem: Permission denied
ls: cannot access /home/somesh/.ssh/id_rsa: Permission denied
ls: cannot access /home/somesh/.ssh/known_hosts: Permission denied
ls: cannot access /home/somesh/.ssh/id_rsa.pub: Permission denied
total 0
-????????? ? ? ? ?            ? amazon.pem
-????????? ? ? ? ?            ? id_rsa
-????????? ? ? ? ?            ? id_rsa.pub
-????????? ? ? ? ?            ? known_hosts

การเข้าสู่ระบบในฐานะ root และ ls ให้ผลลัพธ์ต่อไปนี้

# ls -l /home/somesh/ -a |grep ssh
drw-rw-rw-  2 somesh somesh 4096 Aug 27 15:45 .ssh

แม้แต่ไฟล์ข้างในก็เป็น. ssh ก็เป็นของ somesh: somesh และ chm

-rw-rw-rw- 1 somesh somesh 1692 Aug 27 15:45 amazon.pem
-rw-rw-rw- 1 somesh somesh 1675 Aug 25 20:01 id_rsa

5
ดูที่เหตุใด chmod 644 จึงทำให้ไดเรกทอรีไม่สามารถเข้าถึงได้ . AFAIK สิทธิ์ที่ถูกต้องสำหรับ~/.sshไดเรกทอรีคือ700( drwx------)
ขับรถเหล็ก

คำตอบ:


21

Steeldriver นั้นถูกต้อง ในไดเรกทอรีคุณต้องxใช้การตั้งค่าสถานะเพื่อให้สามารถแสดงรายการไฟล์ภายใน

การแก้ไขไดเรกทอรีโดยใช้chmod 700 ~/.sshจะช่วยให้คุณเข้าสู่สถานะนี้ (ถูกต้อง):

$ ls -ld ~/.ssh
drwx------. 2 user user 4096 Aug 26 10:37 /home/user/.ssh

นอกจากนี้คุณควรแก้ไขรหัสโดยใช้chmod 600 ~/.ssh/id_rsaและchmod 644 ~/.ssh/*.pubเพื่อรับสิ่งนี้:

$ ls -l ~/.ssh/
-rw-------. 1 user user  1766 Mar  7  2014 id_rsa
-rw-r--r--. 1 user user   415 Mar  7  2014 id_rsa.pub

ฉันจัดการเพื่อแก้ไขปัญหานี้ก่อนตัวเองโดยการคัดลอกไปที่อื่นแล้วคัดลอกกลับ
ดังนั้นสิ่งที่

-2

เมื่อคุณรันคำสั่งls -lในไดเร็กทอรีใด ๆ คอลัมน์แรกคือคอลัมน์สิทธิ์ที่ถูกตีความดังนี้:

1 ------------- 2 3 4 ------- 5 6 7 ------- 8 9 10

(TYPE) ---- (ผู้ใช้) ----- (กลุ่ม) ---- (อื่น ๆ )

ประเภท: ถ้า'-'มันเป็นไฟล์ หาก'd'เป็นไดเรกทอรี

สิทธิ์: อ่าน: 4 เขียน: 2 ดำเนินการ: 1

ดังนั้นสำหรับการอ่านเขียนและดำเนินการอนุญาตของคุณจะเป็น7ในกลุ่มผู้ใช้

คุณสามารถใช้ได้

sudo chmod 7 6 6 file_name 

หรือ

sudo chmod -R u+x /home/somesh/.ssh 

-R - สิ่งนี้แก้ไขสิทธิ์ของโฟลเดอร์พาเรนต์และวัตถุลูกภายใน


2
ฉันไม่เข้าใจส่วน TYPE; นอกจากนี้ยังมีchmod 700 file_nameและchmod u+x file_nameทำสองสิ่งที่แตกต่างกันอย่างสิ้นเชิง คนแรกกำหนดสิทธิ์เป็นrwx/---/---คนที่สองตั้งxบิตสำหรับเจ้าของ (และเริ่มจาก666มันจะเปลี่ยนไฟล์เป็น766ไม่เป็น700)
kos

1
@kos, s / เขาหมายถึงฟิลด์แรกในสตริงระบุประเภทของรายการไฟล์ -ตัวอักษรหมายความว่ามันเป็น "ปกติ" แฟ้ม dหมายความว่ามันเป็นไดเรกทอรี มีคนอื่นเช่นcกันl(สำหรับลิงก์สัญลักษณ์) sและอื่น ๆ อีกมากมายสำหรับระบบปฏิบัติการอื่น ๆ
Josh

@Josh Yep เค้าโครงทำให้ฉันสับสน
kos
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.