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?
permissions
usuario1071840
fuente
fuente
mkdir()
. 0777 vs 777Respuestas:
Si los pasa a
chmod
(el programa de línea de comandos), no hay diferencia. Pero en un programa en C o similar,0777
es octal (tres conjuntos de tres bits de 1, que es lo que pretende), mientras que777
es decimal, y es un patrón de bits bastante diferente. (chmod
interpretará cualquier argumento numérico como octal, por lo tanto, no es necesario un cero inicial).0777 (octal) == binario
0b 111 111 111
== permisosrwxrwxrwx
(== decimal511
)777 (decimal) == binario
0b 1 100 001 001
== permisossr----x--x
(== octal1411
)fuente
chmod
comando siempre se interpreta como octal. El usochmod 888
dará un error.chmod
interpreta 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 escribir01777
?1777
está escrito01777
en C. (O podrías escribir1023
, 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.
fuente
La respuesta interesante es:
0700
y700
, como se explica en las otras respuestas00700
y0700
(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:
Esto es para evitar la eliminación accidental de bits setuid / setgid para directorios. Para más detalles, consulte la documentación de chmod .
fuente
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 0777
porque hayno any octal value
cuál muestra el valor de (0) cero.fuente