GNU/Linux >> Linux Esercitazione >  >> Linux

Come rimuovere setgid (linux/unix)?

Bene, vorrei solo aggiungere alcuni punti per chiarire l'approccio di lavorare con il modo numerico sia per i file che per le directory.

  • Aggiunta di autorizzazioni speciali individuali per utente/gruppo/altri.

chmod "X"755 file

Dove X è la modalità numerica ottale specifica per permessi speciali.

  • Se desideri aggiungere più autorizzazioni speciali alla volta, ad es. sia per suid(4) che per sgid(2) cioè 4+2=6 .

chmod "6"755 file

per suid(4), sgid(2) e sticky bit(1), cioè 4+2+1=7

chmod "7"755 file

  • Eliminazione di tutti i permessi speciali (applicabile solo per un file)

chmod 00"0"755 file

Bene, gli zeri finali prima delle 4 cifre non aggiungono alcun valore durante la modifica dell'autorizzazione per un file, ma aggiungono valori durante la modifica dell'autorizzazione per una directory.

Il codice numerico sopra cambierà l'autorizzazione a 755 da 7755 solo per un file, ma se fai lo stesso per una directory sarà 6755 in quanto rimuoverà solo lo sticky bit per gli altri.

Per rimuovere tutti i permessi speciali per una directory.

chmod "000"755 file

  • Allo stesso modo, per rimuovere il permesso suid e avere sgid(2) e sticky bit(1) cioè 2+1=3 .

chmod 00"3"755 file

E la soluzione che utilizza lettere (r, w, x, X, s,, t) e operatori (+/-) è già stata discussa e approvata nelle risposte precedenti.


Per quanto riguarda:"puoi impostare (ma non cancellare) i bit con una modalità numerica"

Su RHEL 7 chmod 0644 $filename non ha rimosso setuid(4),setgid(2) o sticky(1).

Tuttavia precedere con uno 0 in più ha funzionato:

chmod 00644 $filename


Cambia il + per aver aggiunto un'autorizzazione in un - per rimuoverlo:

sudo chmod g-s filename

Se vuoi farlo in modo programmatico, dovrai usare alcuni operatori bit per bit. Normalmente lo è

mode_without_suid = bitwise_and(existing_mode, bitwise_not(S_ISUID))

dove S_ISUID è 0o4000, una costante che utilizza bit di modalità sopra il tipico rwx quelli di qualcosa come 0644 .

Ad esempio, in Python

import os
import stat

def mode_details(m):
    return f"mode={oct(m)} = {stat.filemode(m)}"

mode = os.stat('foo').st_mode
print("old mode", mode_details(mode))

new_mode = mode & ~stat.S_ISUID

os.chmod('foo', new_mode)
print("new mode", mode_details(new_mode))

che stampa

old mode mode=0o104654 = -rwSr-xr--
new mode mode=0o100654 = -rw-r-xr--

Per rimuovere setgid in modo numerico il comando è

sudo chmod 0664 $nomefile

Il presupposto qui è che l'autorizzazione sul file è 664 e non la stiamo cambiando. Il bit più a sinistra nel comando precedente rappresenta setuid(4 ),setgid(2 ) e sticky(1 ). Ora per rappresentare simbolicamente questi setuid è u+s , setgid è g+s e appiccicoso è o+t

Esempio 1:-chmod u+s filenameQuesto setuid per il nome file menzionato è rws r_xr_x

Esempio 2:directory chmod 2770 Questo imposterà gid per la directory menzionata che è rwxr_s r_x


Linux
  1. Come gestire le capacità dei file Linux

  2. Come trovare un file in Linux

  3. Linux:come si controllano le informazioni sulla struttura delle directory di un file Unix/linux?

  4. Come rinominare un file in Linux?

  5. Come contare le righe in un file in UNIX/Linux

Come verificare il checksum su Linux

Come rinominare uno o più file in Linux

Come rimuovere la password da un file PDF in Linux

Comando Chmod:come modificare le autorizzazioni dei file in Linux

Come collegare simbolicamente un file in Linux

Come rimuovere (^M) caratteri da un file in Linux