Vi un cambio de código en el trabajo, donde los valores de modo se cambiaron de 777 a 0777 para que nfs setattr funcione. ¿Cuál es la diferencia en los 2 valores?
mkdir(). 0777 vs 777
Vi un cambio de código en el trabajo, donde los valores de modo se cambiaron de 777 a 0777 para que nfs setattr funcione. ¿Cuál es la diferencia en los 2 valores?
mkdir(). 0777 vs 777
Respuestas:
Si los pasa a chmod(el programa de línea de comandos), no hay diferencia. Pero en un programa en C o similar, 0777es octal (tres conjuntos de tres bits de 1, que es lo que pretende), mientras que 777es decimal, y es un patrón de bits bastante diferente. ( chmodinterpretará cualquier argumento numérico como octal, por lo tanto, no es necesario un cero inicial).
0777 (octal) == binario 0b 111 111 111 == permisos rwxrwxrwx (== decimal 511)
777 (decimal) == binario 0b 1 100 001 001== permisos sr----x--x(== octal 1411)
chmodcomando siempre se interpreta como octal. El uso chmod 888dará un error.
chmodinterpreta un argumento numérico como octal, independientemente del prefijo. (Pero realmente el número en sí no tiene función; solo los dígitos, o más bien los bits.)
1777, ¿necesitas escribir 01777?
1777está escrito 01777en C. (O podrías escribir 1023, que es el mismo número en decimal. Pero no lo hagas :-)
El primer bit se usa para el bit adhesivo http://en.wikipedia.org/wiki/Sticky_bit
Si establece el permiso con 4 dígitos, el primero establecerá o eliminará este bit.
La respuesta interesante es:
0700y 700, como se explica en las otras respuestas00700y 0700(para los directorios)Al menos ese es el caso de la versión chmod de GNU coreutils, que es la predeterminada en Linux.
Ver este ejemplo:
$ ls -ld mydir
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 0710 mydir ; ls -ld mydir # surprise ahead -- s-bits remain:
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 00710 mydir ; ls -ld mydir # _now_ they're gone:
drwx--x--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
Esto es para evitar la eliminación accidental de bits setuid / setgid para directorios. Para más detalles, consulte la documentación de chmod .
En el sistema Linux hay dos tipos de permisos disponibles:
En Permiso de archivo, establecemos permiso en archivos y carpetas:
Los permisos son:
Si bien tiene un permiso especial, tres tipos de permisos son:
En su pregunta, pregunta cuál es la diferencia, por lo que no hay ninguna diferencia entre chmod 777 and 0777porque hay no any octal valuecuál muestra el valor de (0) cero.