🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #7620

Re: calcular permisos de umask mediante bash ¿?

#7620
From: Pascal Bourguignon
Date: Sun, 02 Feb 2003 03:00
60 lines
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-mail
References: <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