Autorizzazioni negate al proprietario, sebbene sia impostato su 666 nella directory .ssh


12

Di recente ho rovinato la directory .ssh. Ho apportato alcune modifiche alle autorizzazioni, penso e ora non mi permetterà più di accedervi. Posso accedervi come utente root (sudo -i) ma non come somesh

Mi viene negata l'autorizzazione quando si elenca o si inserisce in .ssh anche se mostra i 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

Accedendo come root e ls si ottengono i seguenti risultati

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

Anche i file all'interno sono .ssh sono di proprietà di somesh: somesh e 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
Vedi Perché chmod 644 rende le directory inaccessibili? . AFAIK le autorizzazioni corrette per la ~/.sshdirectory sono 700( drwx------).
Steeldriver,

Risposte:


21

Steeldriver ha ragione. Nella directory è necessario anche l' xaccesso flag per poter elencare i file all'interno.

Correggere la directory usando chmod 700 ~/.sshdovrebbe aiutarti a entrare in questo stato (corretto):

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

Inoltre, dovresti correggere le tue chiavi usando chmod 600 ~/.ssh/id_rsae chmod 644 ~/.ssh/*.pubper ottenere questo:

$ 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

Sono riuscito a risolvere questo problema prima di se stesso, copiandolo da qualche altra parte e poi copiandolo indietro
Somesh Mukherjee,

-2

Quando si esegue il comando ls -l su qualsiasi directory, la prima colonna è la colonna di autorizzazione che viene interpretata come segue:

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

(TIPO) ---- (utente) ----- (gruppo) ---- (altri)

TIPO: Se '-' , è un file. Se 'd' è una directory.

Autorizzazioni: leggi: 4, scrivi: 2, esegui: 1

Quindi per leggere, scrivere ed eseguire le autorizzazioni saranno 7 nel gruppo di utenti.

Puoi usare

sudo chmod 7 6 6 file_name 

o

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

-R : modifica l'autorizzazione della cartella principale e degli oggetti figlio all'interno


2
Non capisco la parte TYPE; anche chmod 700 file_namee chmod u+x file_namefare due cose completamente diverse. Il primo imposta i permessi su rwx/---/---, il secondo imposta semplicemente il xbit per il proprietario (e a partire da 666esso cambierà il file in 766, non in 700).
kos

1
@kos, indica che il primo campo nella stringa indica il tipo di voce del file. Un -personaggio significa che è un file "normale". A dsignifica che è una directory. Ce ne sono anche altri, come c, l(per il collegamento simbolico) s, e ancora di più per altri sistemi operativi.
Josh,

@Josh Sì, il layout mi ha confuso.
kos,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.