[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: valor octal de los permisos



On Tue, 19 Jan 1999, Javier Fdz-Sanguino Pen~a wrote:
> 	La verdad es que es mu sencillo hacerlo "a mano"
> Un script podría hacer algo así... a ver lo estoy probando... sí:

> On Tue, Jan 19, 1999 at 02:36:58AM +0100, Vicente Barba wrote:
> > Me pregunto si hay alguna forma (por comando o script) de saber que
> > permisos en forma octal tiene un archivo.

Yo he hecho un pequeño programilla: Grábalo, míralo, modifícalo a 
tu gusto, compílalo y ejecútalo.
·····················8<·············································
/*
 * Se trata de mostrar los permisos de un fichero cuyo nombre
 * suministra el usuario como argumento del programa, en octal.
 * ©1999 yo, bajo licencia GPL y bla, bla, bla...
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>

void ver_permisos(const char *camino);

static char *NombrePrograma;

int main(int argc, char **argv)
{
  NombrePrograma = *argv;
  if (argc == 1) {
    fprintf(stderr, "Modo de empleo: %s fichero...\n", NombrePrograma);
    return 1;
  }
  while (*++argv)
    ver_permisos(*argv);
  return 0;
}

/*---------------------------------------------------------------
** ver_permisos() - Muestra los permisos de acceso del fichero 
** cuyo nombre recibe como argumento.
** No devuelve nada.
*/
void ver_permisos(const char *camino)
{
  struct stat nodoi;		/* para stat() */

  if (stat(camino, &nodoi) != 0) { /* obtención del nodo-í */
    fprintf(stderr, "%s: Fallo en stat(%s, ...)\a\n", NombrePrograma, camino);
    exit(1);
  }
  /* El # en el formato hace que salga un 0 inicial para indicar que el
     número mostrado es octal.
     La operación Y con 0777 es para filtrar sólo los bits de permisos
     normales, descartando el de los especiales SGID, SUID y STI (si se
     desean éstos, fíltrese con 07777), y los del tipo del fichero.
  */
  printf("%#o\n", nodoi.st_mode & 0777);
}
·············8<·························································
--
G. A. Gª - C.I.T.I. - S.I.C.Y.N.T.E. - Dpto. L.S.I. - U.C.A.
-------------------------------------------------------------------------------
        Esta frase es "shareware". Para registrarte mándame 1000 duros.


Reply to: