GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo eliminar setgid (linux/unix)?

Bueno, me gustaría agregar algunos puntos para aclarar el enfoque de trabajar de forma numérica tanto para archivos como para directorios.

  • Agregar permisos especiales individuales para usuarios/grupos/otros.

chmod "X"755 file

Donde X es el modo numérico octal específico para permisos especiales.

  • Si desea agregar varios permisos especiales a la vez, p. tanto para suid(4) como para sgid(2), es decir, 4+2=6 .

chmod "6"755 file

para suid(4), sgid(2) y sticky bit(1), es decir, 4+2+1=7

chmod "7"755 file

  • Eliminar todos los permisos especiales (solo aplicable a un archivo)

chmod 00"0"755 file

Bueno, los ceros finales antes de los 4 dígitos no agregan ningún valor al cambiar el permiso de un archivo, pero sí agregan valores al cambiar el permiso de un directorio.

El código numérico anterior cambiará el permiso de 7755 a 755 solo para un archivo, pero si hace lo mismo para un directorio, será 6755, ya que solo eliminará la parte adhesiva para los demás.

Para eliminar todos los permisos especiales para un directorio.

chmod "000"755 file

  • Del mismo modo, para eliminar el permiso suid y tener sgid(2) y sticky bit(1), es decir, 2+1=3 .

chmod 00"3"755 file

Y la solución que usa letras (r, w, x, X, s, t) y operadores (+/-) ya se discutió y aprobó en las respuestas anteriores.


Con respecto a:"puede configurar (pero no borrar) los bits con un modo numérico"

En RHEL 7 chmod 0644 $filename no eliminó setuid(4),setgid(2) o sticky(1).

Sin embargo, preceder con un 0 extra funcionó:

chmod 00644 $filename


Cambia el + para agregar un permiso en un - para eliminarlo:

sudo chmod g-s filename

Si desea hacer esto programáticamente, deberá usar algunos operadores bit a bit. Normalmente es

mode_without_suid = bitwise_and(existing_mode, bitwise_not(S_ISUID))

donde S_ISUID es 0o4000, una constante que usa bits de modo por encima del típico rwx unos de algo como 0644 .

Por ejemplo, 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))

que imprime

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

Para eliminar setgid de forma numérica, el comando es

sudo chmod 0664 $nombre de archivo

La suposición aquí es que el permiso en el archivo es 664 y no lo estamos cambiando. El bit más a la izquierda en el comando anterior representa setuid(4 ),setgid(2 ) y fijo (1 ). Ahora para representar estos setuid simbólicamente es u+s , setgid es g+s y pegajoso es o+t

Ejemplo 1:-chmod u+s nombre de archivo Esto configurará el nombre de archivo mencionado que es rws r_xr_x

Ejemplo 2:directorio chmod 2770 Esto establecerá gid para el directorio mencionado que es rwxr_s r_x


Linux
  1. Cómo administrar las capacidades de archivos de Linux

  2. Cómo encontrar un archivo en Linux

  3. Linux:¿cómo se inspecciona la información de la estructura del directorio de un archivo Unix/linux?

  4. ¿Cómo cambiar el nombre de un archivo en Linux?

  5. Cómo contar líneas en un archivo en UNIX/Linux

Cómo verificar la suma de comprobación en Linux

Cómo cambiar el nombre de un archivo (s) en Linux

Cómo quitar la contraseña de un archivo PDF en Linux

Comando Chmod:cómo cambiar los permisos de archivo en Linux

Cómo vincular un archivo en Linux

Cómo quitar (^M) caracteres de un archivo en Linux