GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie entferne ich setgid (Linux/Unix)?

Nun, ich möchte nur ein paar Punkte hinzufügen, um den Ansatz zu verdeutlichen, mit dem numerischen Weg sowohl für Dateien als auch für Verzeichnisse zu arbeiten.

  • Hinzufügen individueller Sonderberechtigungen für Benutzer/Gruppen/andere.

chmod "X"755 file

Wobei X der spezifische oktale numerische Modus für spezielle Berechtigungen ist.

  • Wenn Sie mehrere Sonderberechtigungen gleichzeitig hinzufügen möchten, z. sowohl für suid(4) als auch für sgid(2) also 4+2=6 .

chmod "6"755 file

für suid(4), sgid(2) und sticky bit(1), also 4+2+1=7

chmod "7"755 file

  • Löschen aller Sonderberechtigungen (gilt nur für eine Datei)

chmod 00"0"755 file

Nun, die nachgestellten Nullen vor 4 Ziffern fügen keine Werte hinzu, wenn die Berechtigung für eine Datei geändert wird, aber sie fügen Werte hinzu, während die Berechtigung für ein Verzeichnis geändert wird.

Der obige numerische Code ändert die Berechtigung von 7755 nur für eine Datei auf 755, aber wenn Sie dasselbe für ein Verzeichnis tun, wird es 6755 sein, da es nur das Sticky-Bit für andere entfernt.

So entfernen Sie alle Sonderberechtigungen für ein Verzeichnis.

chmod "000"755 file

  • Ähnlich, um die suid-Berechtigung zu entfernen und sgid(2) und sticky bit(1) zu haben, d.h. 2+1=3 .

chmod 00"3"755 file

Und Lösungen mit Buchstaben (r,w,x,X,s,t) und Operatoren(+/-) wurden bereits in den früheren Antworten diskutiert und genehmigt.


Bezüglich:"Sie können die Bits mit einem numerischen Modus setzen (aber nicht löschen)"

Auf RHEL 7 hat chmod 0644 $filename setuid(4),setgid(2) oder sticky(1) nicht entfernt.

Das Voranstellen einer zusätzlichen 0 hat jedoch funktioniert:

chmod 00644 $filename


Ändern Sie die + zum Hinzufügen einer Berechtigung zu einem - um es zu entfernen:

sudo chmod g-s filename

Wenn Sie dies programmgesteuert tun möchten, müssen Sie einige bitweise Operatoren verwenden. Normalerweise ist es

mode_without_suid = bitwise_and(existing_mode, bitwise_not(S_ISUID))

wobei S_ISUID ist 0o4000, eine Konstante, die Modusbits über dem typischen rwx verwendet solche mit etwas wie 0644 .

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

die druckt

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

Um setgid auf numerische Weise zu entfernen, lautet der Befehl

sudo chmod 0664 $Dateiname

Die Annahme hier ist, dass die archivierte Berechtigung 664 ist und wir sie nicht ändern. Das linke Bit im obigen Befehl repräsentiert setuid(4 ),setgid(2 ) und sticky(1 ). Nun, um diese symbolische Setuid darzustellen, ist u+s , setgid ist g+s und sticky ist o+t

Beispiel 1:-chmod u+s DateinameDies setzt die UID für den erwähnten Dateinamen, der rws ist r_xr_x

Beispiel 2:chmod 2770 Verzeichnis Dies setzt gid für das erwähnte Verzeichnis, das rwxr_s ist r_x


Linux
  1. So verwalten Sie Linux-Dateifunktionen

  2. So finden Sie eine Datei in Linux

  3. Linux – Wie überprüft man die Verzeichnisstrukturinformationen einer Unix/Linux-Datei?

  4. Wie benenne ich eine Datei unter Linux um?

  5. Wie man Zeilen in einer Datei in UNIX/Linux zählt

So überprüfen Sie die Prüfsumme unter Linux

So benennen Sie eine Datei (en) in Linux um

So entfernen Sie ein Passwort aus einer PDF-Datei unter Linux

Chmod-Befehl – ​​So ändern Sie Dateiberechtigungen in Linux

So verknüpfen Sie eine Datei unter Linux per Symlink

So entfernen Sie (^M) Zeichen aus einer Datei in Linux