2. Unix (archivos)

 

2.1 Comandos comunes para la manipulación de archivos

file Determina el tipo de archivo
chown Cambia los id del dueño y del grupo de un archivo
chmod

 

Descripción r,w,x para archivos

r
Poder leer el contenido del archivo.
w
Modificar el contenido del archivo.
x
Ejecutar, si se trata de un executable/script.




Descripción r,w,x para directorios

r
Permite ver el listado "ls" de archivos contenidos en el directorio. Si se desea usar este permiso, siempre deberá también usarse "x".
w
Permite agregar, eliminar o renombrar archivos en el directorio.
x
Permite hacer "cd" al directorio y utilizar los archivos contenidos en él; si no se tiene el permiso "r" sólo se pueden usar pero no se pueden ver los archivos contenidos en el directorio, habría que saberse la ruta ej: "more directorio/archivo.txt".


Modifica los permisos de un archivo o directorio
Modo Simbólico
U    (Owner)   G (group) O  (Others)    
-rwxr--r--    1 carlos   carlos        932 Aug 24 20:23 steps.txt
ej. chmod u+rwx,g+w,o+x  steps.txt
-rwxrw-r-x    1 carlos   carlos        932 Aug 24 20:23 steps.txt

Permiso adicional (visible en el bit the execute)

User Permission File Permission + Execute (on) Permission + Execute (off)
Owner setuid (s) Executable s S
Group setgid   (s) Executable s l
Others sticky bit (t) Directory t T
ej. chmod u+s  script.sh
-rwsr-xr-x    1 carlos   mail        932 Aug 24 20:23 script.sh
(El script se correrá con permisos de 'carlos') *Actualmente sólo funciona para ejecutables binarios

ej. chmod g+s  script.sh
-rwxr-lr-x    1 carlos   mail        932 Aug 24 20:23 script.sh
(El script se correrá con permisos de 'mail')

ej. chmod o+wt  directory
drwxr-xrwt    1 carlos   carlos        932 Aug 24 20:23 directory
(En 'directory' cualquiera puede escribir, pero solo el dueño de cada archivo, el dueño de 'directory' y root podrán borrarlos)



Modo Absoluto (Octal)
Octal Value Permission Ad Permission
4 Read setuid
2 Write setgid
1 Execute sticky bit

Por ejemplo si queremos modificar un archivo de manera que 
U    (Owner) Lectura+Ejecución+Escritura=7
G (group) Lectura+Ejecución=5
O  (Others) Lectura=4
chmod 754 archivo.txt

Para permisos adicionales (setuid + setgid)
chmod 6754 archivo.txt

grep Busca expresiones regulares en la entrada
ln  Creación de ligas, simbólicas o duras
ls Listado de archivos en un directorio
cp Copiar archivos o directorios
mv Mueve o renombra un archivo
more Visualizador de un archivo hacia adelante
less Visualizador de un archivo hacia adelante y hacia atrás
head Ver el encabezado (primeras líneas de un archivo)
tail Ver la cola (últimas líneas de un archivo)
find Busca archivos  con cierto criterio (nombre, fecha) en una ruta dada
 >  Redireccionamiento hacia un archivo nuevo
ej. ls > archivo.txt
>> Redireccionamiento hacia un archivo existente (append) 
ej.    ls >> archivo.txt

Redireccionamiento:
1>filename
# Redirect stdout to file "filename".
1>>filename
# Redirect and append stdout to file "filename".
2>filename
# Redirect stderr to file "filename".
2>>filename
# Redirect and append stderr to file "filename".
&>filename
# Redirect both stdout and stderr to file "filename".
2>&1
# Redirects stderr to stdout.
# Error messages get sent to same place as standard output.
0< FILENAME
   < FILENAME
# Accept input from a file.

2.2 Accesando Filesystems

Compartiendo los directorios de una máquina

Windows
En Windows esta actividad es gráfica y no requiere mayor conocimiento, pero el operativo asume algunas cosas y esta restringido en la capacidad de importar/montar  sistemas de archivos externos
Para compartir basta con dar click derecho en el archivo/directorio deseado y seleccionar "compartir"

Unix
En unix (aunque ya existen ambientes graficos) tradicionalmente se realiza a través de archivos

Linux: /etc/exports
 

/home/carlos    192.168.0.1(rw)

Solaris: /etc/dfs/dfstab
 

root:scanner:/etc/dfs>more dfstab

#       Place share(1M) commands here for automatic execution
#       on entering init state 3.
#
#       Issue the command '/etc/init.d/nfs.server start' to run the NFS
#       daemon processes and the share commands, after adding the very
#       first entry to this file.
#
#       share [-F fstype] [ -o options] [-d "<text>"] <pathname> [resource]
#       .e.g,
#       share  -F nfs  -o rw=engineering  -d "home dirs"  /export/home2
 

 



Montando/importando  directorios de otras máquinas

Conceptos Importantes:

Filesystem: tipo del sistema de archivos del directorio a importar

Device (dispositivo):  dispositivo o directorio que se quiere importar.
ej. /dev/hda3 ,   /home/lolo, acadaplic:/home/carlos

Mount Point (punto de montaje): directorio donde vamos a ver los que estamos importando (de preferencia que NO sea el raíz)


Windows
Nuevamente la interfaz nos ayuda para realizar esta actividad
Existen varias opciones para montar un directorio de otra maquina:

1) Si las máquinas son parte de nuestra intranet podemos ir al Vecindario o Neighbourhood y buscar por grupo, máquina  y directorios.

2) En otro caso podemos buscar la maquina desde el explorador de archivos o bien utilizar la opción "Conectar a unidad de Red" en el menú de "Herramientas".
Se nos pedirá la ruta o path a importar asi como el usuario y password respectivos
ej:  \\192.168.0.23\directorio
  username:   abcde 
  password:   xxxxxxx
Y opcionalmente podemos seleccionar si queremos importar ese directorio cada vez que entremos a la máquina


Unix (Linux y Solaris)
Existen 2 tipos de montaje en unix: los temporales y los permanentes

Para montar temporalmente (solo durante la sesión) se utilizan los comandos mount y umount

mount [-a] [ -t fstype] [-o options ] device dir
 

-a= monta todo lo que este en los archivos fstab (en Solaris existe el comando mountall)

fstype= ext2, ext3, ufs, nfs, smbfs, vfat, swap, etc

options (separadas por comas)= rw , ro, uid=value

device= dispositivo físico a montar

dir= directorio donde se localizará el filesystem (debe estar creado)


ej:
mount -t iso9660 /dev/cdrom /mnt/cdrom
mount -t nfs www.linux.com:/directorio /mnt/directorio
 

umount [-a] [-f] [-t fstype] mountpoint | device
 

-a desmonta todo lo que está definido en /etc/fstab o /etc/vfstab

-f  forza el desmontaje, aún si está en uso el filesystem


ej.
umount -a -f
umount /mnt/cdrom


Para montar permanentemente tenemos que configurar algunos archivos
que permitan el montaje al arrancar la máquina:

 

Linux : /etc/fstab
 

[root@pcproal etc]# more fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0
/dev/hda2               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              iso9660 noauto,owner,kudzu,ro 0 0
/dev/fd0                /mnt/floppy             auto    noauto,owner,kudzu 0 0

Contenido de cada línea:
Dispositivo a montar
Punto de Montaje
Tipo de sistema de archivos
Opciones de Montaje
Dump
fsck

Solaris : /etc/vfstab
 

root:scanner:/etc>more vfstab
#device         device          mount           FS      fsck    mount   mount
#to mount       to fsck         point           type    pass    at boot options
#
#/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2 /usr          ufs     1       yes     -
fd      -       /dev/fd fd      -       no      -
/proc   -       /proc   proc    -       no      -
/dev/dsk/c0t0d0s1       -       -       swap    -       no      -
/dev/dsk/c0t0d0s0       /dev/rdsk/c0t0d0s0      /       ufs     1       no      -
/dev/dsk/c0t0d0s3       /dev/rdsk/c0t0d0s3      /tmp    ufs     2       yes     -
/dev/dsk/c0t0d0s4       /dev/rdsk/c0t0d0s4      /var/tmp        ufs     2       yes     -
filer0:/vol/vol0/home   -       /scanner        nfs     -       yes     -
superadminaplic:/home/34/vol301 -       /archivos/vol301        nfs     -       yes     -
centia:/centia01 -       /centia01        nfs     -       yes     -
centia:/centia03 -       /centia03        nfs     -       yes     -

Contenido de cada línea:

Dispositivo a montar

Dispositivo donde se ejecutará el comando fsck

Punto de Montaje

Tipo de sistema de archivos

fsck pass (1 o -)

Mount at boot  (bandera usada por mountall)

Opciones de Montaje

 

Montando con Automounter
 

El hecho de tener muchos sistemas de archivos, ya sean locales o externos implica un costo en el rendimiento de la máquina, por ello unix posee una variante a lovisto anteriormente que se conoce como Automounter, montar/importar sobre demanda.

Tenemos un archivo principal (auto.master o auto_master) el cual contiene las especificaciones del punto de montaje para lo que se quiere montar (ej. /misc) y que está especificado en otro archivo (ej. /etc/auto.misc)

[carlos@pcproal /etc]$ more auto.master
# $Id: auto.master,v 1.2 1997/10/06 21:52:03 hpa Exp $
# Sample auto.master file
# Format of this file:
# mountpoint map options
# For details of the format look at autofs(8).
/misc   /etc/auto.misc  --timeout=60


  En el archivo incluído por el automaster se definen los montajes de manera muy similar a los archivos "tab" mencionados anteriormente

[carlos@pcproal /etc]$ more auto.misc
# $Id: auto.misc,v 1.2 1997/10/06 21:52:04 hpa Exp $
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# Details may be found in the autofs(5) manpage

#cd             -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom

# the following entries are samples to pique your imagination
#linux          -ro,soft,intr           ftp.example.org:/pub/linux
#boot           -fstype=ext2            :/dev/hda1
#floppy         -fstype=auto            :/dev/fd0
#floppy         -fstype=ext2            :/dev/fd0
#e2floppy       -fstype=ext2            :/dev/fd0
#jaz            -fstype=ext2            :/dev/sdc1
#removable      -fstype=ext2            :/dev/hdd
centia01        -fstype=nfs,hard        centia.proal.mx:/centia01
centia03        -fstype=nfs,hard        centia.proal.mx:/centia03

De manera que el montaje quedaría:
/misc/centia01

Nota: a diferencia de fstab y vfstab aqui el punto de montaje no debe ser creado por el administrador, se crea sobre demanda

Más información:

http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch29_:_Remote_Disk_Access_with_NFS



 
 
 

Samba (www.samba.org)

Samba es una aplicación para unix que permite compartir archivos entre plataformas unix y windows a traves de la red
Nota: si lo que queremos es compartir una "partición" de algun disco local, entonces se puede utilizar simplemente el mount

Dos componentes principales

Servidor de Samba

Interfaz web de administración Swat , (normalmente en el puerto 901)


 


# /etc/samba/smb.conf
# Samba config file created using SWAT
               # from 127.0.0.1 (127.0.0.1)
               # Date: 2007/05/07 18:08:03
[global]
             
 obey pam restrictions = Yes
               passdb backend = tdbsam
               passwd program = /usr/bin/passwd %u
               passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
               syslog = 0
               log file = /var/log/samba/log.%m
               max log size = 1000
               dns proxy = No
               panic action = /usr/share/samba/panic-action %d
               invalid users = root
[printers]
               comment = All Printers
               path = /var/spool/samba
               create mask = 0700
               printable = Yes
               browseable = No
[print$]
               comment = Printer Drivers
               path = /var/lib/samba/printers
[homes]
               comment = Home Directories
               path = /home/%u
               username = %u
               valid users = %S
           read only = No