GNU/Linux >> Tutoriels Linux >  >> Linux

Comment supprimer setgid (linux/unix) ?

Eh bien, je voudrais juste ajouter quelques points pour clarifier l'approche consistant à travailler avec la méthode numérique pour les fichiers et les répertoires.

  • Ajout d'autorisations spéciales individuelles pour l'un ou l'autre utilisateur/groupe/autres.

chmod "X"755 file

Où X est le mode numérique octal spécifique pour les autorisations spéciales.

  • Si vous souhaitez ajouter plusieurs autorisations spéciales à la fois, par ex. pour suid(4) et sgid(2) c'est-à-dire 4+2=6 .

chmod "6"755 file

pour suid(4), sgid(2) et sticky bit(1), soit 4+2+1=7

chmod "7"755 file

  • Suppression de toutes les autorisations spéciales (uniquement applicable pour un fichier)

chmod 00"0"755 file

Eh bien, les zéros de fin avant 4 chiffres n'ajoutent aucune valeur lors de la modification de l'autorisation pour un fichier, mais ils ajoutent des valeurs lors de la modification de l'autorisation pour un répertoire.

Le code numérique ci-dessus changera l'autorisation de 755 à 7755 uniquement pour un fichier, mais si vous faites la même chose pour un répertoire, ce sera 6755 car il ne supprimera que le sticky bit pour les autres.

Pour supprimer toutes les autorisations spéciales pour un répertoire.

chmod "000"755 file

  • De même, pour supprimer l'autorisation suid et avoir sgid(2) et sticky bit(1) c'est-à-dire 2+1=3 .

chmod 00"3"755 file

Et la solution utilisant des lettres (r,w,x,X,s,,t) et des opérateurs (+/-) a déjà été discutée et approuvée dans les réponses précédentes.


Concernant :"vous pouvez définir (mais pas effacer) les bits avec un mode numérique"

Sur RHEL 7 chmod 0644 $filename n'a pas supprimé le setuid(4),setgid(2) ou sticky(1).

Cependant, précéder d'un 0 supplémentaire a fait l'affaire :

chmod 00644 $filename


Changez le + pour ajouter une permission dans un - pour le supprimer :

sudo chmod g-s filename

Si vous voulez le faire par programmation, vous devrez utiliser des opérateurs au niveau du bit. Normalement c'est

mode_without_suid = bitwise_and(existing_mode, bitwise_not(S_ISUID))

S_ISUID est 0o4000, une constante qui utilise des bits de mode au-dessus du rwx typique ceux de quelque chose comme 0644 .

Par exemple, en 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))

qui imprime

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

Pour supprimer setgid de manière numérique, la commande est

sudo chmod 0664 $nomfichier

L'hypothèse ici est que l'autorisation au dossier est 664 et nous ne la modifions pas. Le bit le plus à gauche dans la commande ci-dessus représente setuid(4 ),setgid(2 ) et collant(1 ). Maintenant, pour représenter symboliquement ces setuid est u+s , setgid est g+s et collant est o+t

Exemple 1 :-chmod u+s filenameCeci setuid pour le nom de fichier mentionné qui est rws r_xr_x

Exemple 2 :répertoire chmod 2770 Cela définira le gid pour le répertoire mentionné qui est rwxr_s r_x


Linux
  1. Comment gérer les capacités des fichiers Linux

  2. Comment trouver un fichier sous Linux

  3. Linux - Comment inspecter les informations de structure de répertoire d'un fichier Unix/linux ?

  4. Comment renommer un fichier sous Linux ?

  5. Comment compter les lignes d'un fichier sous UNIX/Linux

Comment vérifier la somme de contrôle sur Linux

Comment renommer un ou plusieurs fichiers sous Linux

Comment supprimer le mot de passe d'un fichier PDF sous Linux

Commande Chmod - Comment modifier les autorisations de fichiers sous Linux

Comment créer un lien symbolique vers un fichier sous Linux

Comment supprimer les caractères (^M) d'un fichier sous Linux