GNU/Linux >> Znalost Linux >  >> Linux

Jak odstranit setgid (linux/unix)?

Rád bych přidal několik bodů, které objasní přístup k práci s numerickým způsobem pro soubory i adresáře.

  • Přidání jednotlivých zvláštních oprávnění pro uživatele/skupinu/ostatní.

chmod "X"755 file

Kde X je specifický osmičkový číselný režim pro speciální oprávnění.

  • Pokud chcete přidat více zvláštních oprávnění najednou, např. pro suid(4) i sgid(2), tj. 4+2=6 .

chmod "6"755 file

pro suid(4), sgid(2) a sticky bit(1), tj. 4+2+1=7

chmod "7"755 file

  • Smazání všech speciálních oprávnění (platí pouze pro soubor)

chmod 00"0"755 file

No, koncové nuly před 4 číslicemi nepřidávají žádné hodnoty při změně oprávnění pro soubor, ale přidávají hodnoty při změně oprávnění pro adresář.

Výše uvedený číselný kód změní oprávnění na 755 z 7755 pouze pro soubor, ale pokud uděláte totéž pro adresář, bude to 6755, protože u ostatních pouze odstraní lepivý bit.

Chcete-li odebrat všechna speciální oprávnění pro adresář.

chmod "000"755 file

  • Podobně k odebrání oprávnění suid a použití sgid(2) a sticky bit(1), tj. 2+1=3 .

chmod 00"3"755 file

A řešení pomocí písmen (r,w,x,X,s,,t) a operátorů (+/-) již bylo diskutováno a schváleno v dřívějších odpovědích.


Pokud jde o:"můžete nastavit (ale ne vymazat) bity pomocí numerického režimu"

Na RHEL 7 chmod 0644 $filename neodstranil setuid(4), setgid(2) nebo sticky(1).

Nicméně předřazení 0 navíc udělalo trik:

chmod 00644 $filename


Změňte + pro přidání oprávnění do - pro jeho odstranění:

sudo chmod g-s filename

Pokud to chcete provést programově, budete muset použít některé bitové operátory. Normálně je to

mode_without_suid = bitwise_and(existing_mode, bitwise_not(S_ISUID))

kde S_ISUID je 0o4000, konstanta, která používá bity režimu nad typickým rwx něco jako 0644 .

Například v pythonu

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))

který tiskne

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

Chcete-li odstranit setgid numerickým způsobem, příkaz je

sudo chmod 0664 $filename

Zde se předpokládá, že oprávnění k souboru je 664 a neměníme to. Bit nejvíce vlevo ve výše uvedeném příkazu představuje setuid(4 ),setgid(2 ) a lepkavý (1 ). Nyní symbolicky reprezentovat setuid je u+s , setgid je g+s a lepkavý je o+t

Příklad 1:-chmod u+s název_souboruToto bude setuid pro uvedený název souboru, který je rws r_xr_x

Příklad 2:chmod 2770 directoryTo nastaví gid pro zmíněný adresář, který je rwxr_s r_x


Linux
  1. Jak spravovat možnosti souborů Linux

  2. Jak najít soubor v Linuxu

  3. Jak přejmenovat soubor v Linuxu?

  1. Jak přesunout soubor v Linuxu

  2. Linux – Jak lze zkontrolovat informace o struktuře adresářů souboru Unix/linux?

  3. Jak počítat řádky v souboru v UNIX/Linux

  1. Jak odstranit (smazat) soubor nebo adresář v Linuxu

  2. Jak odebrat adresář v Linuxu

  3. Jak vytvořit soubor v Linuxu