Izin ditolak untuk pemilik, meskipun diatur ke 666 dalam direktori .ssh

12

Saya baru-baru ini dipusingkan dengan direktori .ssh. Membuat beberapa perubahan izin, saya pikir dan sekarang tidak akan membiarkan saya mengaksesnya lagi. Saya dapat mengaksesnya sebagai pengguna root (sudo -i) tetapi tidak sebagai somesh

Saya mendapatkan izin yang ditolak ketika mendaftar atau menidurkan .ssh meskipun itu menunjukkan file

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

Masuk sebagai root dan ls memberikan hasil sebagai berikut

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

Bahkan file di dalamnya adalah .ssh dimiliki oleh somesh: somesh dan 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
Somesh Mukherjee
sumber
5
Lihat Mengapa chmod 644 membuat direktori tidak dapat diakses? . AFAIK izin yang benar untuk ~/.sshdirektori tersebut700 ( drwx------).
steeldriver

Jawaban:

21

Steeldriver benar. Pada direktori Anda juga perlu xmengakses flag untuk dapat membuat daftar file di dalamnya.

Memperbaiki penggunaan direktori chmod 700 ~/.sshakan membantu Anda untuk masuk ke kondisi (benar) ini:

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

Anda juga harus memperbaiki kunci Anda menggunakan chmod 600 ~/.ssh/id_rsa dan chmod 644 ~/.ssh/*.pubuntuk mendapatkan ini:

$ 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
Jakuje
sumber
Saya berhasil memperbaiki ini sebelumnya, dengan menyalinnya di tempat lain dan kemudian menyalinnya kembali
Somesh Mukherjee
-2

Ketika Anda menjalankan perintah ls-l pada direktori apa pun, kolom pertama adalah kolom izin yang ditafsirkan sebagai berikut:

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

(TYPE) ---- (pengguna) ----- (grup) ---- (lainnya)

TYPE: If '-' , itu adalah file. Jika 'd' itu adalah direktori.

Izin: baca: 4, tulis: 2, jalankan: 1

Jadi untuk membaca, menulis, dan mengeksekusi izin Anda akan menjadi 7 dalam grup pengguna.

Kamu bisa memakai

sudo chmod 7 6 6 file_name 

atau

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

-R - ini mengubah izin folder induk dan objek anak di dalam

Dhaval Simaria
sumber
2
Saya tidak mengerti bagian TYPE; juga chmod 700 file_namedan chmod u+x file_namemelakukan dua hal yang sangat berbeda. Yang pertama mengatur izin rwx/---/---, yang kedua hanya menetapkan xbit untuk pemilik (dan mulai dari 666itu akan mengubah file ke 766, bukan ke 700).
kos
1
@kos, s / dia berarti bidang pertama dalam string menunjukkan jenis entri file. Sebuah -karakter berarti itu adalah "normal" file. A dberarti itu adalah direktori. Ada yang lain juga, seperti c, l(untuk tautan simbolik) s, dan bahkan lebih untuk OS lainnya.
Josh
@ Ya, tata letak membingungkan saya.
kos