En Mac OS X, ls
y chmod
tienen algunas características adicionales para manejar los permisos ACL que el sistema operativo coloca en la parte superior de los permisos de posix predeterminados. I have some permission problems that need fixing y I wrote a script para ayudar a solucionar estos problemas hasta que Apple solucione ese error. Aquí está el código que analiza ls
para conseguir el la ACL:¿Hay alguna forma mejor de leer ACL en Ruby que analizar ls?
result = `#{Escape.shell_command(["ls", "-led", file])}`
if result.empty?
# ls error...
else
@acl = result.split("\n")[1..-1].collect do |ace|
ace = ace.split(": ", 2)
ace[0] = ace[0].to_i
ace
end
# acl processing code...
end
he añadido la gema escape, pero sigue siendo prácticamente el mismo código.
Pero sé que es una mala idea en general analizar ls
en un script, entonces ¿hay una mejor manera de leer los permisos ACL de un archivo?
necesito las ACE y sus índices para usar con chmod
más adelante en la secuencia de comandos:
system("chmod -a# #{index} \"#{file}\"")
'ls -led' recupera el OS X atributos avanzados, correcto? No creo que Ruby tenga soporte integrado para estos atributos. @Swanand: el modo solo trata con los bits de permiso de Unix normales, ¿no? – Nemo157
@ Nemo157 Sí, lo olvidé, la opción '-e' es probablemente única para OS X. Imprime las ACL después de la salida' -l' estándar – Tim