Berechtigungen wurden dem Besitzer verweigert, obwohl im Verzeichnis .ssh der Wert 666 festgelegt ist

12

Ich habe vor kurzem mit dem .ssh-Verzeichnis rumgespielt. Ich glaube, es wurden einige Berechtigungsänderungen vorgenommen, und jetzt kann ich nicht mehr darauf zugreifen. Ich kann als root-Benutzer darauf zugreifen (sudo -i), aber nicht als somesh

Ich erhalte die Erlaubnis verweigert, wenn ich in .ssh aufführe oder cde, obwohl die Dateien angezeigt werden

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

Wenn Sie sich als root und ls anmelden, erhalten Sie die folgenden Ergebnisse

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

Sogar die darin enthaltenen Dateien sind .ssh und gehören somesh: somesh und 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
quelle
5
Siehe Warum macht chmod 644 Verzeichnisse unzugänglich? . AFAIK die richtigen Berechtigungen für das ~/.sshVerzeichnis ist 700( drwx------).
Steeldriver

Antworten:

21

Steeldriver ist richtig. Im Verzeichnis müssen Sie auch xauf das Flag zugreifen, um Dateien darin auflisten zu können.

Das Reparieren des Verzeichnisses mit chmod 700 ~/.sshsollte Ihnen helfen, in diesen (korrekten) Zustand zu gelangen:

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

Außerdem sollten Sie Ihre Schlüssel mit chmod 600 ~/.ssh/id_rsaund reparieren, um Folgendes chmod 644 ~/.ssh/*.pubzu erhalten:

$ 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
quelle
Es ist mir gelungen, dieses Problem zu beheben, indem ich es an eine andere Stelle kopiert und dann zurückkopiert habe
Somesh Mukherjee
-2

Wenn Sie den Befehl ls -l in einem beliebigen Verzeichnis ausführen, ist die erste Spalte die Berechtigungsspalte, die wie folgt interpretiert wird:

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

(TYP) ---- (Benutzer) ----- (Gruppe) ---- (andere)

TYP: Bei '-' handelt es sich um eine Datei. Bei 'd' handelt es sich um ein Verzeichnis.

Berechtigungen: Lesen: 4, Schreiben: 2, Ausführen: 1

Zum Lesen, Schreiben und Ausführen sind Ihre Berechtigungen also 7 in der Benutzergruppe.

Sie können verwenden

sudo chmod 7 6 6 file_name 

oder

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

-R - Hiermit wird die Berechtigung des übergeordneten Ordners und der untergeordneten Objekte geändert

Dhaval Simaria
quelle
2
Ich verstehe den TYPE-Teil nicht. auch chmod 700 file_nameund chmod u+x file_namemache zwei völlig verschiedene Dinge. Der erste setzt die Berechtigungen auf rwx/---/---, der zweite setzt nur das xBit für den Eigentümer (und ab 666hier ändert sich die Datei in 766, nicht in 700).
Kos
1
@kos, bedeutet, dass das erste Feld in der Zeichenfolge die Art des Dateieintrags angibt. Ein -Zeichen bedeutet, dass es eine "normale" Datei ist. A dbedeutet, es ist ein Verzeichnis. Es gibt andere, auch, wie c, l(für symbolische Verbindung), sund noch mehr für andere Betriebssysteme.
Josh
@Josh Yep, das Layout hat mich verwirrt.
Kos