`Permission Denied` to CD in ein Verzeichnis, obwohl die Berechtigungen korrekt sind

13

Das ist so komisch. An einer Linux (RHEL) -Box als Benutzer 'g' angemeldet und ls -lahShows gemacht

drwxrwxrwx 6 g    g    4.0K Jun 23 13:27 .
drwxrw-r-x 6 root root 4.0K Jun 23 13:15 ..
-rwxrw---- 1 g    g     678 Jun 23 13:26 .bash_history
-rwxrw---- 1 g    g      33 Jun 23 13:15 .bash_logout
-rwxrw---- 1 g    g     176 Jun 23 13:15 .bash_profile
-rwxrw---- 1 g    g     124 Jun 23 13:15 .bashrc
drw-r----- 2 g    g    4.0K Jun 23 13:25 .ssh

Der Benutzer 'g' in der Gruppe 'g' / sollte / in der Lage sein, in das .ssh-Verzeichnis zu lesen und zu schreiben, aber wenn ich es tue, ls -lah .ssh/bekomme ich ls: .ssh/: Permission denied. Ich bekomme auch die Erlaubnis verweigert, wenn ich es versuche und catirgendwelche Dateien im Verzeichnis

Wenn ich als root gehen und die Berechtigungen ändern 700, 744, 766oder etwas , solange die ‚Nutzer‘ Erlaubnis 7 funktioniert und ich kann CD und LS das Verzeichnis und die Dateien innerhalb.

id g kehrt zurück

uid=504(g) gid=506(g) groups=506(g)

Bearbeiten:

Ich habe diese Berechtigungen genau in eine andere identische Box kopiert und es gibt kein Problem. Ich kann cdin ein Verzeichnis ohne Ausführungsberechtigungen.

Verschmieren
quelle

Antworten:

28

Für das Verzeichnis muss das Ausführungsbit gesetzt sein, damit Sie es eingeben können. Ich weiß nicht, was Sie getestet haben, aber Sie können kein Verzeichnis ohne das Ausführungsbit eingeben oder Dateien darin lesen:

$ mkdir foo
$ echo "baz" > foo/bar
$ chmod 660 foo
$ cd foo
bash: cd: foo: Permission denied
$ cat foo/bar
cat: foo/bar: Permission denied

Das heißt, es sei denn, in Ihrem Prozess ist die Funktion CAP_DAC_OVERRIDE POSIX (wie in root) festgelegt, mit der Sie Verzeichnisse ohne das ausführbare Bit iirc eingeben können.

Grundsätzlich sollten Sie versuchen, das .ssh-Verzeichnis auf 700 und das gesamte Verzeichnis auf 600 zu belassen, um sicher zu gehen. Die SSH-Manpage enthält pro Datei Anweisungen zu den erforderlichen Eigentümern und Berechtigungsmodi für Dateien in ~ / .ssh.

wzzrd
quelle
17

Ein Verzeichnis benötigt Ausführungsberechtigung, um hinein zu gelangen cd. Dies ist das erwartete Verhalten.

Grahamux
quelle
Aber ich kann auch catkeine Dateien im Verzeichnis mit den gleichen Berechtigungen, sie sollten keine Ausführungsberechtigungen zum Lesen benötigen
Smudge
4
Sie benötigen Ausführungsberechtigungen für das Verzeichnis, um auf alle Elemente in einem Verzeichnis zugreifen zu können. Diese Antwort ist richtig.
EightBitTony
1
@samarudge Betrachte xein Verzeichnis, um dir die Erlaubnis zu geben, in diesem Verzeichnis zu sein. Ohne sie können Sie nicht zum Verzeichnis wechseln, Sie können nicht sehen, was sich im Verzeichnis befindet, Sie können nicht öffnen, was sich im Verzeichnis befindet. Wenn Sie nicht die Erlaubnis haben, in der Bibliothek zu sein, können Sie die Bücher dort nicht lesen.
DerfK
Wenn ich dem Verzeichnis Ausführungsberechtigungen hinzufüge (744 zum Verzeichnis, 644 zu den darin enthaltenen Dateien), erhalte ich eine Fehlermeldung von SSHD, dass die Berechtigungen des .ssh-Verzeichnisses 644 oder niedriger sein müssen. Aber mit den Berechtigungen als 644 heißt es, es kann nicht auf .ssh / authorized_keys zugreifen
Smudge
* Es heißt ausdrücklich ".ssh / directory", nicht die Dateien
Smudge
2

Um ls oder cd in ein Verzeichnis zu kopieren, benötigen Sie Ausführungsberechtigungen. Während Sie sie nicht haben, können Sie den Inhalt nicht wirklich untersuchen und die Berechtigungen der darin enthaltenen Dateien sehen, so dass die Dateiberechtigungen höchstwahrscheinlich selbst falsch sind, wenn Sie sie nicht verwalten können.

Die Verzeichnisberechtigung von 700 und die Dateiberechtigungen 644 sind für mich in Ordnung.

Sonnig
quelle
Die Berechtigungen für die Dateien lauten wie 644folgt: Der Eigentümer der Dateien ist g: g, sodass die Berechtigungen für die Dateien korrekt sind. Wenn ich dem Verzeichnis "SSHD" Ausführungsberechtigungen hinzufüge, muss ich die Berechtigungen auf 644 oder darunter setzen
Smudge,
Sunnys
0

Ich nehme an, dies ist jetzt ein Problem mit einer ssh-Datei. kein generelles chmod problem?

Wenn ja, versuchen Sie es

$chmod go-w ~/
$chmod 700 ~/.ssh
$chmod 600 ~/.ssh/*
$chmod 600 ~/.ssh/.*
AndyM
quelle
Ein weiteres Problem könnte der Einhängepunkt sein. Wird er von einem anderen Ort eingehängt, CIFS, NFS?
AndyM
0

Für das Öffnen von Verzeichnissen muss das x-Bit gesetzt sein (für Verzeichnis wird dieses Bit als Suchbit angesehen). Also benutze ich tree, um nur den Ordner zu erhalten und den Albtraum zu vermeiden, dass alle Dateien als ausführbare Dateien festgelegt werden (die Option für tree ist -d List directories only.):

sudo tree -faid here_goes_your_directory xargs -L1 -I{} sudo chmod 755  "{}"

Warnung!!! Sie sollten dies berücksichtigen:

  • Die Verwendung von chmod oder chown für das Stammverzeichnis /oder die Systemverzeichnisse zerstört Ihr Betriebssystem (tatsächlich ist alles, was für das /Verzeichnis oder die Systemverzeichnisse rekursiv ist, gefährlich).

  • Dies ist keine gute Sicherheitspraxis, um einen solchen Berechtigungsumfang festzulegen

Eduard Florinescu
quelle