Come posso cancellare l'autorizzazione "s" su una directory in Linux?


24

Ho una directory che viene visualizzata con la maschera di autorizzazione drwsrwsr-x. Quando provo a ripristinare i permessi per 755la S rimane ancora.

Che cos'è la "s" e perché non posso ripristinare le autorizzazioni su 775 ( drwxrwxr-x)?

Risposte:


25

I messaggi visualizzati nella posizione "Esegui" nella colonna utente e gruppo sono i bit SetUID (Imposta ID utente all'esecuzione) e SetGID (Imposta ID gruppo all'esecuzione).

Le autorizzazioni per i file Unix sono in realtà un numero ottale di 4 cifre SUGO

  • S controlla i bit SetUID (4), SetGID (2) e "Sticky" (1)
  • U controlla i bit di lettura (4) / scrittura (2) / esecuzione (1) per il proprietario del file
  • G controlla i bit di lettura / scrittura / esecuzione per il gruppo del file
  • O controlla i bit di lettura / scrittura / esecuzione per tutti gli altri.

Puoi rimuovere i bit setuid dalla tua directory con chmod ug-s directory, ochmod 0755 directory

Per ulteriori informazioni, consultare la pagina man di chmode questa pagina Wikipedia sul bit SetUID .


È "sgid" (no "u").
In pausa fino a nuovo avviso.

"cos'è il drwsrwsrwx?" <- ricontrolla
Hrvoje Špoljar,

6
chmod 0755non non azzerare il bit setuid, almeno non su Linux. Attualmente sto testando su altri sistemi.
FUZxxl,

1
POSIX afferma che la sua implementazione è definita per tipi di file diversi dai file normali, sia chmodcon una modalità ottamale che cancella i bit setuid, setgid e vtx.
FUZxxl,

2
Per cancellare il bit setuid in una directory su Linux, usare chmod 00755; vedi unix.stackexchange.com/q/393531/46851
Roger Lipscombe

23

setuid e setgid

setuid e setgid (abbreviazione di set ID utente all'esecuzione e set ID gruppo all'esecuzione, rispettivamente) sono flag dei diritti di accesso Unix che consentono agli utenti di eseguire un eseguibile con le autorizzazioni del proprietario o del gruppo dell'eseguibile. Sono spesso utilizzati per consentire agli utenti di un sistema informatico di eseguire programmi con privilegi temporaneamente elevati al fine di eseguire un'attività specifica. Sebbene i privilegi forniti come ID utente o ID gruppo non siano sempre elevati, almeno sono specifici.

Per rimuovere numericamente i bit setuid e setgid, è necessario aggiungere un prefisso al bit-pattern con un 0(es.: 0775Diventa 00775).

Esegui per eliminare setuid e setgid:

chmod 00775 path

o

chmod a-st path

È nella directory non nel file
Hrvoje Špoljar,

1
una directory è anche un file in un filesystem unix, quello che dice ooshro è completamente corretto
lynxman

sì, è tutto un file, ma la descrizione non si adatta poiché non si esegue qualcosa che assomiglia a drwxrwxr-x: |
Hrvoje Špoljar,

In unix, l'inode è la cosa che ottiene i permessi.
chris,

2
GNU chmod non cancella i byte setuid e setgid nelle directory quando lo si esegue con una modalità ottamale. POSIX consente questo comportamento.
FUZxxl,

2

Aggiunta alla risposta di ooshro ...

Se si utilizzano autorizzazioni suid o sgid su una directory, tutti i file creati all'interno di quella directory avranno lo stesso proprietario (se suid) o gruppo (sgid) della directory in questione.

Lo uso per la mia condivisione Samba a casa. La directory di base non appartiene all'utente nessuno e al gruppo olympia e le autorizzazioni sono 2770. Quindi devi essere nel gruppo olympia per leggere o scrivere qualsiasi cosa al di sotto di quella directory e si assicurerà che olympia sia il gruppo proprietario di tutto ciò che sta sotto . Ho anche configurato Samba per usare una maschera di comando di 2770 e una maschera di file di 660 per mantenere i permessi corretti lungo l'albero.

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.