¿Por qué chmod 0000 nombre-directorio no borra los bits especiales en el directorio?


8
$ mkdir test 
$ chmod 0000 test 
$ ls -la | grep test | awk '{print $1}'
d---------.
$ chmod 6000 test
$ ls -la | grep test | awk '{print $1}'
d--S--S---.
$ chmod 0000 test
$ ls -la | grep test | awk '{print $1}'
d--S--S---.

No estoy seguro de por qué chmod 0000 testno borrará todos los bits de permiso. ¿Qué no voy a llegar aquí? He intentado comparar con una calculadora , y no coinciden. El mismo comportamiento se ve en el servidor en el que he ingresado, RHEL, y mi propia máquina, Ubuntu. He estado leyendo sobre esto por un tiempo y pasé demasiado tiempo tratando de entender.

Me encontré con este problema al probar todos los símbolos para el primer octal, ya que nunca había usado chmod con 4 octales antes. Sin embargo, parece despejar la parte pegajosa.

Respuestas:


8

0000 se consideró ambiguo, ya que podría significar 000, más un cero inicial ya que es octal.

http://lists.gnu.org/archive/html/bug-coreutils/2011-03/msg00162.html

0755 no es explícito: es ambiguo con las personas que utilizan explícitamente printf% # 3o para generar una cadena octal de 3 dígitos con un 0 inicial. No creo que podamos cambiar esto.

Ese hilo de discusión de coreutils comienza con alguien que cita la página de manual de chmod y señala esta limitación:

Puede establecer (pero no borrar) los bits con un modo numérico.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.