[Python-es] Agregar/quitar permisos de un archivo

lasizoillo lasizoillo en gmail.com
Mar Sep 13 14:21:46 CEST 2011


El día 13 de septiembre de 2011 14:06, Enric Florit
<efz1005 en gmail.com> escribió:
> Hola a todos los suscritores de esta lista:
>
> Estoy desarrollando un programa en python que tiene como finalidad traducir
> archivos de código PHP a Python. Mediante una instrucción al programa, el
> usuario tiene la posibilidad de guardar el código traducido en un archivo
> aparte. Entonces, el programa pide si se quiere guardar el archivo como
> ejecutable ('+x'). Para hacer esto uso os.chmod:
>
>     os.chmod(file,stat.S_IRWXU)
>
> Hasta aquí todo bien, pues si el usuario decide que el archivo sea
> ejecutable, se hará ejecutable. El problema viene cuando es un archivo
> sobreescrito, que ya tiene permisos de ejecución. Aunque reescriba el
> archivo, sus permisos no cambian, por lo que si el usuario decide no hacer
> que el archivo sea ejecutable, se queda ejecutable.
>
> Para solventar esto, he intentado usar de nuevo os.chmod, pero si primero le
> adjudico permisos de lectura y luego de escritura, se borran los de lectura,
> y viceversa.
>
> Existe alguna manera (mediante chmod u otro método) para quitar los permisos
> de ejecución a un archivo? O alguna API diferente que permita hacerlo?
>

Con os.stat puedes leer los permisos del usuario y con máscaras de
bits volver a establecerlos según te convengan (con o sin el flag de
ejecución). Para que lo veas claro (o al menos eso espero):

>>> bin(0777 & ~stat.S_IXUSR)
'0b110111111'

Saludos:

Javi


Más información sobre la lista de distribución Python-es