"Permesso negato" al CD in una directory anche se i permessi sono corretti


13

Questo è così strano. Accesso a un box Linux (RHEL) come utente 'g', durante uno ls -lahspettacolo

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

Quindi l'utente 'g' nel gruppo 'g' / dovrebbe / essere in grado di leggere e scrivere nella directory .ssh ma se lo faccio ls -lah .ssh/ottengo ls: .ssh/: Permission denied. Ottengo anche l'autorizzazione negata se provo e catqualsiasi file nella directory

Se vado come root e modificare le autorizzazioni a 700, 744, 766o qualsiasi cosa fino a quando l'autorizzazione 'user' è 7 funziona e posso CD e LS la directory e file all'interno.

id g ritorna

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

Modificare:

Ho copiato queste autorizzazioni esattamente in un'altra scatola identica e non c'è nessun problema. Posso cdentrare in una directory senza eseguire le autorizzazioni.

Risposte:


27

La directory si richiede il set di bit di esecuzione per poter entrare. Non so cosa hai testato, ma non puoi inserire una directory senza il bit di esecuzione o leggere i file in essa:

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

Cioè, a meno che il processo non abbia il set di funzionalità POS_DAC_OVERRIDE POSIX (come root ha), che consente di inserire directory senza il set di bit eseguibile, iirc.

Fondamentalmente, dovresti provare a mantenere la tua directory .ssh a 700, e tutto in essa a 600, solo per sicurezza. La pagina man di ssh fornisce istruzioni per file sulle proprietà e le modalità di autorizzazione richieste per i file in ~ / .ssh.


17

Una directory richiede l'autorizzazione di esecuzione per cdaccedervi. Questo è il comportamento previsto.


Ma anche io non posso avere catalcun file nella directory con le stesse autorizzazioni, non dovrebbero aver bisogno di autorizzazioni di esecuzione per leggere
— Smudge,

4
È necessario eseguire le autorizzazioni sulla directory per accedere a qualsiasi cosa all'interno di una directory. Questa risposta è corretta
— EightBitTony,

1
@samarudge Considerare xsu una directory per darti il ​​permesso di "essere in" quella directory. Senza di esso, non è possibile eseguire il cd nella directory, non è possibile vedere cosa c'è nella directory, non è possibile aprire ciò che è nella directory. Se non hai il permesso di essere in biblioteca, non puoi leggere i libri lì.
— DerfK,

Se aggiungo le autorizzazioni di esecuzione alla directory (744 alla directory, 644 ai file all'interno) ricevo un errore da SSHD che dice che le autorizzazioni della directory .ssh devono essere 644 o inferiori. Ma con i permessi come 644 dice che non può accedere a .ssh / authorized_keys
— Smudge il

* Dice specificamente '.ssh / directory', non i file
— Smudge,

2

Per poter ls o cd in una directory, è necessario eseguire le autorizzazioni. Mentre non li hai, non puoi davvero ispezionare il contenuto e vedere le autorizzazioni dei file all'interno, quindi molto probabilmente le autorizzazioni dei file sono sbagliate se non riesci a cat.

Il permesso di directory di 700 e il permesso di file 644 sono una configurazione perfettamente adatta a me.


Le autorizzazioni per i file sono 644, il proprietario dei file è g: g, quindi le autorizzazioni dei file sono corrette. Se aggiungo le autorizzazioni di esecuzione alla directory SSHD dice che devo rilasciare le autorizzazioni a 644 o meno
— Smudge,

I commenti di Sunny sono corretti - votazione verso il basso un po 'dura
— AndyM,

0

Presumo che questo sia un problema con un file SSH ora? non è un problema di chmod generale?

Se è così, prova

$chmod go-w ~/
$chmod 700 ~/.ssh
$chmod 600 ~/.ssh/*
$chmod 600 ~/.ssh/.*

un altro problema, potrebbe essere il punto di montaggio, è montato da qualche altra parte, CIFS, NFS?
— AndyM,

0

Le directory necessitano di x bit impostati (per la directory quel bit è visto come bit di ricerca) per aprirsi. Quindi uso tree in modo da ottenere solo il set di cartelle ed evitare l'incubo di avere tutti i file impostati come file eseguibili (l'opzione per tree è -d List directories only.):

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

Avvertimento!!! dovresti tenerlo in considerazione:

  • l'uso di chmod o chown ricorsivo nella /directory principale o nelle directory di sistema distruggerà il sistema operativo (in realtà qualsiasi cosa ricorsiva nella /directory o nelle directory di sistema è pericolosa)

  • questa non è una buona pratica di sicurezza per imporre tali autorizzazioni in blocco

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.