Autorisations refusées au propriétaire, bien qu'il soit défini sur 666 dans le répertoire .ssh

12

J'ai récemment joué avec le répertoire .ssh. J'ai fait quelques changements de permission, je pense et maintenant ça ne me permettra plus d'y accéder. Je peux y accéder en tant qu'utilisateur root (sudo -i) mais pas en tant que somesh

J'obtiens une autorisation refusée lors de l'inscription ou de la fusion dans .ssh même s'il affiche les fichiers

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

La connexion en tant que root et ls donne les résultats suivants

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

Même les fichiers à l'intérieur sont .ssh appartiennent à somesh: somesh et 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
la source
5
Voir Pourquoi chmod 644 rend les répertoires inaccessibles? . AFAIK les autorisations correctes pour le ~/.sshrépertoire est 700( drwx------).
steeldriver

Réponses:

21

Steeldriver a raison. Sur le répertoire, vous devez également xaccéder à l'indicateur pour pouvoir répertorier les fichiers à l'intérieur.

La correction du répertoire à l'aide chmod 700 ~/.sshdevrait vous aider à entrer dans cet état (correct):

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

Vous devez également corriger vos clés à l'aide de chmod 600 ~/.ssh/id_rsaet chmod 644 ~/.ssh/*.pubpour obtenir ceci:

$ 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
la source
J'ai réussi à résoudre ce problème avant lui-même, en le copiant ailleurs et en le copiant ensuite
Somesh Mukherjee
-2

Lorsque vous exécutez la commande ls -l sur n'importe quel répertoire, la première colonne est la colonne d'autorisation qui est interprétée comme suit:

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

(TYPE) ---- (utilisateur) ----- (groupe) ---- (autres)

TYPE: Si '-' , c'est un fichier. Si 'd' c'est un répertoire.

Autorisations: lecture: 4, écriture: 2, exécution: 1

Ainsi, pour la lecture, l'écriture et l'exécution, vos autorisations seront de 7 dans le groupe d'utilisateurs.

Vous pouvez utiliser

sudo chmod 7 6 6 file_name 

ou

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

-R - cela modifie l'autorisation du dossier parent et des objets enfants dans

Dhaval Simaria
la source
2
Je ne comprends pas la partie TYPE; aussi chmod 700 file_nameet chmod u+x file_namefaire deux choses complètement différentes. Le premier définit les autorisations sur rwx/---/---, le second définit simplement le xbit pour le propriétaire (et à partir de 666celui-ci, le fichier sera remplacé par 766, pas par 700).
kos
1
@kos, il signifie que le premier champ de la chaîne indique le type d'entrée de fichier. Un -caractère signifie que c'est un fichier "normal". A dsignifie qu'il s'agit d'un répertoire. Il y en a aussi d'autres, comme c, l(pour le lien symbolique) s, et encore plus pour d'autres OS.
Josh
@Josh Yep, la mise en page m'a dérouté.
kos