GNU/Linux >> Linux Esercitazione >  >> Linux

Il collegamento simbolico non funziona come previsto quando si cambia utente?

Collegamento simbolico non funzionante, utilizzando lo standard UBUNTU 16 LTS... Mostra "Autorizzazione negata" dove mi aspettavo di ottenere l'accesso, non funzionante anche dopo chown .

Esempio completo:

sudo rm /tmp/file.txt  # if exist, remove

cd ~
sudo chmod 666 data/file.txt
ls -l data/file.txt    # "-rw-rw-rw-" as expected
more data/file.txt     # working fine
sudo ln -sf $PWD/data/file.txt /tmp/file.txt  # fine
ls -l /tmp/file.txt    # "lrwxrwxrwx",  /tmp/file.txt -> /home/thisUser/file.txt
more /tmp/file.txt     # fine

sudo chown -h postgres:postgres /tmp/file.txt

sudo more /tmp/file.txt   #  NOT WORK! but its is sudo! and 666!

Risposta accettata:

Queste azioni dovrebbero risultare con un messaggio di errore:Autorizzazione negata . La directory, /tmp , dispone di autorizzazioni incluso il bit appiccicoso. L'errore è il risultato della configurazione del kernel per fs.protected_symlinks .

Per mostrare l'impostazione, sysctl fs.protected_symlinks . Questo equivale a 1 quando impostato. Per disattivare temporaneamente, cosa non consigliata , sysctl -w fs.protected_symlinks=0 . Per disattivare in modo permanente, che è ancora una volta sconsigliato , usa /etc/sysctl.conf .

Vedere patchwork.kernel.org per ulteriori informazioni.

Per evitare la putrefazione dei collegamenti, seguono i principali paragrafi di riepilogo sui collegamenti simbolici dal collegamento ipertestuale.

Kees Cook – 2 luglio 2012, 20:17

Questo aggiunge restrizioni per collegamenti simbolici e hardlink al VFS Linux.

Collegamenti simbolici:

Una classe di problemi di sicurezza di vecchia data è la corsa basata sui collegamenti simbolici
time-of-check-time-of-use, più comunemente vista nelle directory scrivibili
come /tmp. Il metodo comune di sfruttamento di questo difetto
consiste nell'attraversare i confini dei privilegi quando si segue un determinato collegamento simbolico (cioè un processo di root
segue un collegamento simbolico appartenente a un altro utente). Per un probabile
elenco incompleto di centinaia di esempi nel corso degli anni, vedere:http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp

La soluzione consiste nel consentire ai collegamenti simbolici di essere seguiti solo all'esterno di
una directory appiccicosa scrivibile da tutto il mondo, o quando l'uid del collegamento simbolico e
follower corrispondono o quando il proprietario della directory corrisponde al proprietario del collegamento simbolico.


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Ssh non funziona da un computer specifico?

  3. Come systemd-tmpfiles pulisce /tmp/ o /var/tmp (sostituzione di tmpwatch) in CentOS/RHEL 7

  4. CentOS/RHEL:il punto di montaggio /tmp non si monta automaticamente quando viene aggiunto in /etc/fstab

  5. Errore ldconfig:non è un collegamento simbolico

Node.js:verifica se il file è un collegamento simbolico durante l'iterazione sulla directory con 'fs'

Errore in phpMyAdmin dopo l'aggiornamento alla v4.8.0:$cfg['TempDir'] (./tmp/) non è accessibile

Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

Perché il mio collegamento simbolico non funziona?

Come reindirizzare l'output di un comando a un file quando il comando richiederà gli input dell'utente?

/etc/motd non viene visualizzato quando una named pipe?