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.

Responder a