Article View: es.comp.os.linux.programacion
Article #7620Re: calcular permisos de umask mediante bash ¿?
From: Pascal Bourguignon
Date: Sun, 02 Feb 2003 03:00
Date: Sun, 02 Feb 2003 03:00
60 lines
3015 bytes
3015 bytes
"Javier Perez" <javiperez78@yahoo.es> writes:
> Holas.
>
> C�mo podr�a calcular los permisos que obtendr�n los ficheros
> (umask) mediante un script en bash (s�lo con bash.)?
>
> Por ejemplo, dada una m�scara 0022, c�mo podr�a calcular
> que los fichero obtendr�n los permisos 0644?
>
> Muchas gracias.
Leer bash(1), secci�n "ARITHMETIC EVALUATION".
El termino m�scara hace referencia a las operaci�ns l�gicas:
Cuando uno crea un fichero, da los permisos que quiere por defecto
(open(2) o creat(2)):
open("/tmp/exec",O_RDWR|O_CREAT,0777); // cuando se crea un executable,
open("/tmp/file",O_RDWR|O_CREAT,0666); // cuando se crea un archivo,
o si el programa es m�s atento a la seguridad:
open("/tmp/exec",O_RDWR|O_CREAT,0755); // cuando se crea un executable,
open("/tmp/file",O_RDWR|O_CREAT,0644); // cuando se crea un archivo,
o a la privacidad:
open("/tmp/exec",O_RDWR|O_CREAT,0700); // cuando se crea un executable,
open("/tmp/file",O_RDWR|O_CREAT,0600); // cuando se crea un archivo,
En todo caso, el systema usa la m�scara:
mode_efectivo = mode & ( ~ mascara ) ;
mascara : 022 = 000010010
~ mascara : 111101101
mode : 777 = 111111111
mode & ~mascara : 111101101 = 755
mascara : 027 = 000010111
~ mascara : 111101000
mode : 644 = 110100100
mode & ~mascara : 110100000 = 640
No hay ninguna dificultad, salvo que las m�scaras estan escritas en
octal y umask la quiere en octal. Entonces hay que convertir en
decimal para hacer los calculos (f�cil basta con a�adir un 0 delante
de los n�meros), y luego volver al octal (se puede hacer con el
comando printf, o calculando en bash).
--
__Pascal_Bourguignon__ http://www.informatimago.com/
----------------------------------------------------------------------
There is a fault in reality. Do not adjust your minds. -- Salman Rushdie
Technical Details
Message-ID:
<87el6re69b.fsf@thalassa.informatimago.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!thalassa.informatimago.COM!not-for-mailReferences:
<b1hkei$bvj$1@news.ya.com>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,2262509fd343e66e X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-02-01 19:00:36 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!thalassa.informatimago.COM!not-for-mail From: Pascal Bourguignon <pjb@informatimago.com> Newsgroups: es.comp.os.linux.programacion Subject: Re: calcular permisos de umask mediante bash ¿? Date: 02 Feb 2003 04:00:32 +0100 Organization: informatimago.com Lines: 60 Sender: pascal@thalassa.informatimago.com Message-ID: <87el6re69b.fsf@thalassa.informatimago.com> References: <b1hkei$bvj$1@news.ya.com> NNTP-Posting-Host: thalassa.informatimago.com (212.87.205.57) Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: fu-berlin.de 1044154835 36678798 212.87.205.57 (16 [41911]) User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2