• Publicidad

Permisos de un fichero

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Permisos de un fichero

Notapor pepinho » 2007-05-06 13:29 @604

Buenas :
Mi pregunta es la siguiente. En un fichero txt tengo guardado cuentas y logins de diferentes usuarios. Lo que tengo que hacer es conectarme al servidor a través de una cuenta y de un login pero solo si el fichero tiene los permiso -r--------, es decir, solo puede leerlo el dueño del fichero. ¿Cómo puedo saber esto a través de Perl?
Gracias
Saludo
pepinho
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2007-05-04 13:17 @595

Publicidad

Notapor explorer » 2007-05-06 13:51 @619

Con la función stat() se puede obtener quién es el dueño de un determinado fichero. Pero con los test -X se puede saber los permisos del fichero en relación al usuario que ejecuta el programa.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
    stat($filename);
    print "Readable\n" if -r _;
    print "Writable\n" if -w _;
    print "Executable\n" if -x _;
    print "Setuid\n" if -u _;
    print "Setgid\n" if -g _;
    print "Sticky\n" if -k _;
    print "Text\n" if -T _;
    print "Binary\n" if -B _;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re:

Notapor noitora-5 » 2012-11-28 23:43 @029

¿Qué pasa si quiero saber si el archivo tiene permisos 777(-rwxrwxrwx), 766 (-rwxrw-rw-), 666(-rw-rw-rw-)?
¿Puedo usar, por ejemplo para los permisos 777, algo como "if -rwxrwxrwx"?
¿Y para guardar el dueño del archivo, me sirve la forma: $dueñoArchivo = stat($filename)?

Muchas Gracias...
noitora-5
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2012-11-09 18:22 @806

Re: Re:

Notapor explorer » 2012-11-29 06:45 @323

Bienvenido a los foros de Perl en Español, noitora-5.

noitora-5 escribiste:¿Qué pasa si quiero saber si el archivo tiene permisos 777(-rwxrwxrwx), 766 (-rwxrw-rw-), 666(-rw-rw-rw-)?
La función stat() devuelve una lista de 13 valores, de los cuales el que te interesa es el tercero, que guarda el valor -en decimal- de los permisos del archivo indicado. A ese valor le debes aplicar una máscara para quedarte con el rango de bits que quieres comprobar, y luego hacer la comparación. Ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$permisos = (stat "archivo")[2] & 0777;    # Tercer elemento de stat(), ANDeado con el valor octal '777'
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y ahora ya puedes hacer la comparación:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if ($permisos == 0777) {
  2.     print "Ejecutable para todo el mundo\n";
  3. }
  4. elsif ($permisos == 0666) {
  5.     print "Permisos de escritura para todo el mundo\n";
  6. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Lo tienes más detallado en este hilo.

Más información en tu propio ordenador en perldoc perlfunc, y en la Web (traducido). Busca por 'stat'. O usa perldoc -f stat

noitora-5 escribiste:¿Y para guardar el dueño del archivo, me sirve la forma: $dueñoArchivo = stat($filename)?
No, lo que devuelve stat() es una lista de 13 valores, de los cuales el quinto es el uid del usuario. El uid es el número de usuario dentro del sistema. Si quieres saber el nombre del usuario a partir del uid, deberás usar la función getpwuid():
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$nombre = getpwuid($iud);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Más información en perldoc -f getpwuid
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados