Imprimiendo en Linux

Histórico

El sistema de impresión de Linux (el sistema lp) es una adaptación del código escrito por los Regents de la Universidad de California para la versión Berkeley Software Distribution (BSD) del sistema operativo UNIX.

Lo básico de imprimir

La forma más simple (con mucho) de imprimir en el sistema operativo Linux es enviar el fichero a ser impreso directamente al dispositivo de impresión. Una manera de hacer esto es usar el comando cat. Como usuario root, uno puede hacer lo siguiente:

# cat tesis.txt > /dev/lp

En este caso, /dev/lp es un enlace simbólico al verdadero dispositivo de impresión (una matricial, láser, tipográfica o plotter). Mira la página del man ln(1) para más información acerca de enlaces simbólicos.

Para el propósito de la seguridad, sólo el usuario root y los usuarios de su mismo grupo como el demonio de impresión son capaces de escribir directamente a la impresora. Es por esto por lo que se tienen que usar comandos como lpr, lprm y lpq para acceder a la impresora.

Por esto, los usuarios tienen que usar lpr para imprimir un fichero. El comando lpr es responsable de preocuparse por el trabajo inicial para imprimir un fichero, pasando entonces el control a otro programa, lpd, el demonio de las impresoras de líneas.

Este demonio le dice entonces a la impresora cómo imprimir el fichero.

Cuando lpr es ejecutado, primero copia el fichero a un cierto directorio (el directorio de spool) donde el fichero permanece hasta que lpd lo imprime. Una vez se le dice a lpd que hay un fichero para imprimir, creará una copia de sí mismo (lo que los programadores llaman un 'fork'). Esta copia imprimirá nuestro fichero mientras la copia original queda esperando otras peticiones. Esto permite que hayan múltiples trabajos a la vez en una cola.

Las sintaxis de lpr(1) es bastante familiar,

$ lpr [ opciones ] [ nombre_fichero ... ]

Si no se especifica un nombre de fichero, lpr asume que la entrada será efectuada por la entrada estándar (normalmente el teclado o la salida de otro programa). Esto permite que el usuario redirija la salida de un programa al dispositivo de impresión. Por ejemplo:

$ cat tesis.txt | lpr

o algo más potente, como

$ pr -l60 tesis.txt | lpr

El comando lpr acepta varios argumentos en la línea de comandos que permiten al usuario controlar cómo trabaja. Algunos de los argumentos más ampliamente usados son: -Pprinter especifica la impresora a usar, -h suprime la impresión de la página, burst, -s crea un enlace simbólico en lugar de copiar el fichero completo al directorio de spooling (útil para ficheros grandes), y -#num especifica el número de copias a imprimir. Un ejemplo de interacción con lpr podría ser algo como

$ lpr -#2 -sP dj tesis.txt

Este comando crearía un enlace simbólico al fichero tesis.txt en el directorio de spool de la impresora llamada dj, donde debería ser procesado por lpd. Además debería imprimir una segunda copia de tesis.txt.

Para ver un listado de todas las opciones que reconoce lpr, ver la página del man lpr(1).

Viendo la cola de impresión

Algunas veces es útil saber qué trabajos están actualmente en una cola de impresión particular. Esta es la única tarea del comando lpq.

Para ver qué hay en la cola de la impresora por defecto (definida por /etc/printcap), usa

  $ lpq
lp is ready and printing
Rank Owner Job Files Total Size
active mwf 31 tesis.txt 682048 bytes

2.4 Cancelando un trabajo de impresión

Otra útil característica para cualquier sistema de impresión es la capacidad de cancelar un trabajo que ha sido 'encolado' anteriormente. Para hacer esto, usa lprm.

 $ lprm -

El comando anterior cancela todos los trabajos de impresión que son propiedad del usuario que envió el comando. Se puede cancelar un trabajo de forma individual obteniendo primero el número del trabajo usando lpq, dando entonces el número a lprm. Por ejemplo

$ lprm 31

cancelaría el trabajo 31 (tesis.txt) en la impresora por defecto.

Fuente: http://es.tldp.org/COMO-INSFLUG/COMOs/Uso-Impresion-Como/Uso-Impresion-Como-2.html

Tamaño ideal para la partición SWAP de Linux

| 0 comentarios

La creación de una partición SWAP es un paso imprescindible en cualquier instalación de un sistema Linux. Explicado de forma muy simple la finalidad de esta partición es la de ampliar de forma virtual la memoria de nuestro ordenador almacenando los datos que no caben en la memoria RAM física. Su homólogo en Windows es el llamado archivo de paginación (pagefile.sys) que podemos ver en color verde cuando utilizamos el desfragmentador de disco.

Una de las reglas más extendidas a la hora de seleccionar el tamaño de la partición SWAP es elegir el doble del tamaño de la memoria RAM disponible en nuestro ordenador, pero según Rosell Coker, esto deja de tener sentido en la actualidad debido a la gran cantidad de RAM de la que disponen los ordenadores de hoy en día. Según Coker el tamaño debería ser elegido según las siguientes premisas:

  • Hasta 1GB de RAM la SWAP debería tener un tamaño igual al de la RAM.
  • Entre 2GB y 4GB el tamaño de la SWAP debería ser la mitad de la memoria RAM.
  • Para equipos con más de 4GB la SWAP debería tener un tamaño máximo de 2GB.
Algo que me parece perfectamente lógico para equipos de uso personal, yo utilicé esta regla en mi última instalación de Ubuntu y no he notado ningún tipo de descenso en el rendimiento. Pero no lo tengo tan claro en el caso de entornos servidor donde las cargas que han de soportar los equipos son en algunos momentos muy elevadas y quedarse cortos de memoria SWAP sí que podría representar un problema.

Fuente: http://bitelia.com/2007/10/tamano-ideal-para-la-particion-swap-de-linux

Dispositivos de almacenamiento en Gnu/Linux | Unix

Cómo reconoce nuestros discos duros o dispositivos Gnu/Linux | Unix?
Primeramente debemos tener en cuenta que Unix/Linux distribuye los dispositivos por letras y por números.... Veamos un ejemplo:

Tenemos un Disco Duro 1 con el S.O Gnu/Linux o Unix, cuando digo unix me puedo estar Refiriendo a unos de sus derivados Freebsd, openbsd... seguimos tenemos el disco duro conectado al Bus IDE 1 como Primary (primario), y ocupando una partición todo el Disco.

Tenemos otros Disco Duro con dos particiones una FAT y otra NTFS (no importa si tiene o NO Windows, o solamente esta particionado y ya). Y lo tenemos colocado en el Bus IDE 1 como Slave (secundario). Creo que debes saber que los bus IDE son para dos dispositivos :-)

Por lo tanto nuestro Disco Duro 1 será reconocido en Gnu/Linux | Unix como: /dev/hda y la partición sera /dev/hda1.

El disco 2 ya te imaginas como debe ser, nuestro Disco Duro 2 será reconocido en Gnu/Linux | Unix como: /dev/hdb aquí se nota lo que explique arriba el primer disco que era el primerio hda el segundo que es el secundario hdb esta bien claro las particiones serán reconocidas por la letra del dispositivo mas el numero: /dev/hdb1 (FAT) y /dev/hdb2 (NTFS).

Algo que debe quedar claro es que los numero no son asignado en el orden esto viene dependiendo del el numero de particiones que tengamos en el sistema al final dejare la salida de las particiones de mi sistemas para que vean un ejemplo.

Sigamos...

Ahora nuestros Discos Duros fueron reconocidos así:

Disco Duro 1 (recuerda que obviamente este Disco Duro ya esta montado, ya que contiene el S.O Gnu/Linux | Unix)
--> Bus IDE 1 Primary.
-------> En posición: /dev/hda
-------> Partición 1 (es la partición SWAP), como: /dev/hda1
-------> Partición 2 (ocupa todo el Disco Duro), como: /dev/hda2

NOTA: debemos saber de antemano que un Disco Duro con el S.O Unix/Linux siempre posee una partición SWAP y la partición donde esta el S.O ;). No lo mencione más arriba, ya que se supone que deben de saber, para que sirve esta partición (Te lo dejo de tarea) -- (Obvio... antes de meterte al Mundo Gnu/LInux | Unix, debemos leer mínimo el FAQ.

Disco Duro 2 (recuerda que este Disco Duro es el que montaremos) --> Bus IDE 1 Slave.
-------> En posición: [b]/dev/hdb[/b]
-------> Partición 1 (FAT), como: /dev/hdb1
-------> Partición 2 (NTFS), como: /dev/hdb2

Obteniendo información sobre las particiones:
Para que ballas aprendiendo por ti mismo, como debemos editar el fstab, podemos verlo en el manual para lo que hacemos en una consola

$ man mount
Aquí encontraremos como debemos poner según el Sistema de archivo que sea en este caso tenemos FAT Y NTFS, para lo que esto se utilizan las siglas vfat para FAT y ntfs para NTFS

Luego con lo que debemos proceder es con la edición del fichero que contiene dicha configuración de los dispositivos en este caso es el fichero /etc/fstab.
El fichero /etc/fstab contiene los dispositivos de almacenamiento montados en el sistema como son: cdrom, memorias flash, floppy, discos duros, etc... Del mismo modo, los dispositivos descritos en este fichero, se especifican aquí mismo para que el Ordenador siempre tenga presente este Dispositivo, así que NO es necesario tenerlo puesto. Un Ejemplo Claro son:

Las Memorias USB Flash, puedes especificar en /etc/fstab la dirección de tu puerto USB, y NO tener puesto la Flash... cuando sea necesario, la colocas en el puerto USB previamente establecido en /etc/fstab, realizas su montaje y listo, funcionando.

Si en ves de especificar el montaje dentro del fichero /etc/fstab, lo realizamos por medio de la llamada a mount con sus respectivas OPCIONES, pues el dispositivo funcionara CORRECTAMENTE, pero solo funcionara en ese momento que se MONTO, ya que cuando se reinicie el sistema se tiene que volver a realizar su montaje manual como se había echo anteriormente.

Mi consejo: mejor escríbelo en /etc/fstab, así no escribes TODO el comando, del mismo modo ya sabes que si el Dispositivo NO está puesto, pues NO corrompes nada de Sistema.

El fichero /etc/fstab tiene este orden:

/dev/hda2 / ext3 defaults 1 1

Fichero especial que representa el dispositivo.
Un Fichero Especial es el que utiliza el S.O para poder comunicarse con el Dispositivo o algún Puerto.

Carpeta de montaje.
Pues la carpeta que nos enlazara al Dispositivo de Almacenamiento en este caso es la partición que contiene el S.O por lo que es la partición principal que en sistemas Gnu/Linux | Unix es /, pero los dispositivos siempre se suelen montar en la carpeta /mnt.

Sistema de Ficheros (ósea tipo de partición, para que se entienda mejor).
Es el sistema de ficheros que contiene el Disco Duro a montar, puede ser: ext3, ntfs, vfat, etc.

Privilegios.
Es el tipo de usuario que puede observar/interactuar con el Dispositivo de Almacenamiento, sus valores posibles son: owner, user, defaults, para entender como se aplican y su funcionamiento debes tener unos conocimientos mínimos de como funcionan los permiso en Gnu/Linux | Unix.

Editando el fichero /etc/fstab.
Bueno, ahora agregaremos nuestro Disco Duro de esta manera:

Algo que debes tomar en cuenta ante de llevar a cabo esto es que debes tener acceso al sistema como root, suponemos que lo tienes :-) procedemos hacer lo siguiente.

# vi /etc/fstab
Un ejemplo de lo que vas a ver puede ser esto
------------- Nuestro Fichero /etc/fstab -------------
/dev/hda1 swap swap defaults 0 0
/dev/hda2 / ext3 defaults 1 1
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
proc /proc proc defaults 0 0

Ahora Según nuestro Disco Duro 2, el fichero quedaría así:
------------- Nuestro Fichero /etc/fstab -------------
/dev/hda1 swap swap defaults 0 0
/dev/hda2 / ext3 defaults 1 1
/dev/hdb1 /mnt/hdb1 vfat defaults 1 1
/dev/hdb2 /mnt/hdb2 ntfs defaults 1 1
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
proc /proc proc defaults 0 0

Aquí podemos ver que vemos todo lo explicado mas arriba si quieres verifícalo para que tenga menos dudas de lo que haremos ahora

Creamos ahora 2 carpetas dentro del directorio: /mnt, y serian así: # cd /mnt
# mkdir hdb1
# mkdir hdb2
O como quieras

Bueno, ahora sólo queda montarlos (activarlos)... y sería así:

# mount /mnt/hdb1
# mount /mnt/hdb2

Y listo veremos que las carpetas en mnt de respectivo dispositivo contendrán lo que tenemos almacenado en ellos.

Otro dato importante:
Como vemos... los 2 Bit de Permiso los pusimos en: 1 1, esto quiere decir que podremos Escribir/Leer en el Dispositivo, pero del mismo modo esta implícito que siempre estará MONTADO, y NO necesitaremos hacer el comando mount (como lo hicimos anteriormente).

En caso que los dejemos en 0 0, cada ves que queramos acceder a alguno de ellos, ahí que montarlo como lo hicimos anteriormente.

Algo que quiero dejar claro en Derivados de Unix y el mismo Unix mismo, la variación en como se muestran las particiones en el dicho fichero fstab varían un poco pero son entendible solo es que la representan de manera diferente aquí le dejo como seria la salida del fstab en un FreeBsd:

# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /tmp ufs rw 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0

En este caso vemos, Los sistema de fichero que utilizan Gnu/Linux | FreeBsd no son los mismos, y los nombre de los dispositivos son distinto explico esto:

en este caso es un solo disco duro /dev/ad0 viene siendo en Gnu/Linux /dev/hda así se representa el dispositivo, las particiones vendrían siendo de este modo s1a en FreeBsd vendría siendo la partición principal en Linux solo se identifica por el numero 1.

Fuente: http://pensador.awardspace.com/dates/disco-linux.html

El archivo /etc/passwd

El archivo /etc/passwd

El archivo /etc/passwd se utiliza para autenticar a un usuario en el momento de iniciar una sesión en un sistema HP-UX estándar. Dicho archivo contiene una entrada para cada cuenta del sistema HP-UX. Cada entrada consta de siete campos separados por el signo ortográfico de dos puntos; consulte la página de manual de passwd(4). Una entrada típica del archivo /etc/passwd presenta este aspecto:

robin:Z.yxGaSvxAXGg:102:99:Robin Hood,Rm 3,x9876,408-555-1234:/home/robin:/usr/bin/sh

Los campos contienen los siguientes datos (enumerados en orden de aparición) separados por dos puntos:

  1. El nombre de usuario (inicio de sesión), que consta de un máximo de ocho caracteres. (En el ejemplo: robin)

  2. El campo de contraseña cifrada. (Z.yxGaSvxAXGg)

  3. El número de identificación de usuario (uid), un número entero que varía entre 0 y MAXINT-1 (igual a 2.147.483.646 o 231 -2). (102)

  4. La identificación de grupo (gid), un número entero guardado en el archivo /etc/group que varía entre 0 y MAXINT-1. (99)

  5. El campo de comentario, que se utiliza para escribir información de identificación, como el nombre completo del usuario, la ubicación y los números de teléfono. Por motivos históricos, este campo también se llama gecos. (Robin Hood,Rm 3,x9876,408-555-1234)

  6. El directorio inicial, es decir, el directorio de inicio de sesión original del usuario. (/home/robin)

  7. El nombre de ruta del shell de inicio de sesión, que se ejecuta cuando el usuario inicia una sesión. (/usr/bin/sh)

El usuario puede cambiar la contraseña al llamar al comando passwd, el campo de comentario (el quinto campo) con el comando chfn y el nombre de ruta del programa de inicio de sesión (el séptimo campo) con el comando chsh. El administrador del sistema configura el resto de los campos. El número de identificación de usuario (uid) debe ser único.

Fuente: http://docs.hp.com/es/B2355-90957/ch08s03.html

Manejo de Procesos

Un proceso es un programa o servicio normalmente en estado de ejecución o que esta siendo utilizado por Ubuntu. Por ejemplo, si estas navegando con Firefox, tendrás un proceso en ejecución en el mismo momento en tu sistema.

Mostrando los procesos

Para ver los procesos y sus estados existen diversas aplicaciones.


Mediante interface gráfica: gnome-system-monitor

Fig.1 Monitor del sistema (pestaña Servicios)
Aumentar
Fig.1 Monitor del sistema (pestaña Servicios)

Es una utilidad de gnome que muestra los procesos y permite monitorizar el estado del sistema. Para ejecutar la aplicación hay que ir a Sistema -> Administración -> Monitor del sistema o basta con introducir en el terminal:

$ sudo gnome-system-monitor

En consola o Terminal


El comando top

Es el equivalente al Monitor del sistema en la línea de comandos. Muestra una lista de procesos que se pueden ordenar de diferentes formas.

$ sudo top

Permite realizar diferentes acciones sobre cada uno de ellos como matarlo o cambiar su prioridad. Para más información leer la página del manual de top.


El comando ps

El comando ps es el mejor modo de mostrar los procesos que se encuentran activos. Para ver todos los procesos activos con todos los detalles basta con abrir un terminal y teclear:

$ sudo ps -AF

Esto mostrará un listado con la siguiente información:

UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD

Otra forma de listarlos es mediante:

$ sudo ps -AL

Para más información, leer la página del manual.


Finalizar un proceso

Imagen:Nota advertencia.png Finalizar un proceso activo puede llevar a pérdidas de información y/o a la inestabilidad del sistema si no se conoce el proceso que se finaliza.

Utilizando el monitor del sistema.

Basta con ir a la pestaña de procesos, seleccionar el proceso a finalizar y presionar el botón: finalizar proceso.



En consola o Terminal utilizando el comando kill y killall.

Para finalizar un proceso mediante la consola, es preciso conocer el número de identificación del proceso (PID). Para conocer el número basta con listar los procesos.

Listados los procesos, buscar el proceso a finalizar y memorizar el número de la columna PID.

Una vez conocido el PID basta con ejecutar en un terminal:

$ sudo kill [PID]

Es conveniente comprobar que el proceso ha finalizado y ya no se encuentra en ejecución.

Puede suceder en ocasiones que algún proceso no finalice luego de haber ejecutado kill. En estos casos se puede intentar finalizarlos con el comando kill y una señal "mas fuerte" que fuerza a los procesos a terminar mas allá de su voluntad:

$ sudo kill -9 [PID]

Suele ocurrir que al listar los procesos activos el que se desea finalizar tiene distintas instancias abiertas, es decir, dispone de varias PID y para finalizarlo se necesitaría utilizar varias veces el comando kill. El comando killall se utiliza para finalizar todos los procesos que abre un comando. Como se puede suponer, al disponer de distintas PID no es ésta la que se le debe indicar al comando killall sino el nombre del proceso. Este nombre viene dado en el listado de procesos como CMD; entonces:

$ sudo killall [CMD]

Mediante el comando xkill.

El comando xkill es una utilidad para forzar el Servidor X a cerrar conexiones. Este comando se puede utilizar como el comando kill:

$ sudo xkill -id  [PID]

La ventaja de este comando es que se puede utilizar sin necesidad de PID, ya que si se introduce en el terminal:

$ xkill

El cursor se cambiará a una calavera y la aplicación matará (finalizará) el proceso que controle la ventana donde se haga click con la calavera.


Pausar un proceso

Para pausar un proceso, es preciso conocer el número de identificación del proceso (PID). Para conocer el número basta con listar los procesos.

Listados los procesos, buscar el proceso a pausar y memorizar el número de la columna PID.

Una vez conocido el PID basta con ejecutar en un terminal:

$ sudo kill -STOP [PID]

Para reanudarlo basta con teclear:

$ sudo kill -CONT [PID]
Imagen:Nota clasica.png Si el proceso a pausar es del usuario y no del sistema, no es necesario el empleo del comando sudo


]

El concepto "carga promedio del sistema" (Load Average)

La carga promedio del sistema es la media de trabajos en cola durante un tiempo determinado. En Linux estos tiempos son 1, 5 y 15 minutos. En otras palabras, la carga promedio del sistema para un minuto N es el número de procesos compitiendo por el uso de la CPU en un momento dado, promediada sobre los N minutos.

La carga promedio mínima de un sistema es de 0 y la máxima es ilimitada, aunque raramente excede de 20, e incluso más de 10 es poco usual. Sin embargo he administrado sistemas en los que algún proceso se ha ido demasiado, ¡llegando a una carga promedio de 80! Una carga promedio de 1 ó 2 es lo típico. Menor de 1 es lo ideal.

Para ver la carga promedio de nuestro sistema podemos usar el comando top:

$ top

Que muestra algo similar a ésto (al final de la primera línea se ven los tres números de la carga promedio):

top - 11:11:42 up  2:22,  5 users,  load average: 0.08, 0.36, 0.61
Tasks: 128 total, 1 running, 127 sleeping, 0 stopped, 0 zombie
Cpu(s): 15.2% us, 0.7% sy, 0.0% ni, 83.8% id, 0.0% wa, 0.3% hi, 0.0% si
Mem: 515744k total, 463016k used, 52728k free, 13012k buffers
Swap: 979956k total, 13292k used, 966664k free, 119344k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11434 perico 15 0 32248 13m 8800 S 13.9 2.7 0:12.16 gnome-terminal
7122 root 15 0 62564 48m 9516 S 1.3 9.6 11:13.49 Xorg
15542 perico 16 0 2132 1116 844 R 0.7 0.2 0:00.04 top
1 root 16 0 1564 532 460 S 0.0 0.1 0:01.50 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0
3 root 10 -5 0 0 0 S 0.0 0.0 0:00.20 events/0
4 root 10 -5 0 0 0 S 0.0 0.0 0:00.02 khelper

Fuente: http://www.guia-ubuntu.org/index.php?title=Procesos

Instalando Samba en Ubuntu / Debian para compartir archivos e impresoras en redes Windows

Samba es un programa Open Source que nos permite compartir archivos e impresoras desde una computadora Linux a PC con MS Windows como si fuera una mas de ella, lo cual es muy util ya que podemos tener un servidor de archivos y de impresión basado en Linux colocado en una red donde se conectan PC con Windows.

La página oficial de Samba la puedes encontrar aquí

En este tutorial veremos como instalar Samba en un PC con Ubuntu o Debian instalado.

Lo primero es instalar Samba (como siempre les recuerdo que para instalar cualquier cosa en Linux necesitan tener privilegios de administrador o ser root, en el caso de utilizar Ubuntu colocando sudo antes de los comandos permite adquirir privilegios de root), ejecutamos el siguiente comando:

apt-get install samba smbfs

El archivo de configuración de Samba puede ser encontrado en /etc/samba/smb.conf vamos a editar este archivo, primero realizamos una copia de respaldo:

cp -p /etc/samba/smb.conf /etc/samba/smb_18032007_copia.conf

Siempre es bueno realizar una copia de los archivos de configuración que modifiquemos en caso de que cometamos algun error podamos volver a la configuración inicial, además a mi me gusta agregarle la fecha en que realice la copia para tener un registro.

Luego procedemos a modificar el archivo:

En Debian:

nano /etc/samba/smb.conf

En Ubuntu:

sudo gedit /etc/samba/smb.conf

Nota: Si estas en KDE en cambio de GNOME cambia gedit por kate

En el archivo de configuración cambia donde dice workgroup = MSHOME (puede ser distinto en tu caso) a:

workgroup = MIGRUPO

Donde MIGRUPO es el nombre del grupo de trabajo de MS Windows o el nombre de dominio, de donde será parte el servidor Samba. Tienes que configurar el mismo grupo de trabajo en tus computadoras Windows, esto lo puedes hacer en Panel de control>Sistema>Nombre de Equipo>Cambiar Nombre.

Si quieres tambien puedes cambiar la linea donde dice server string esto es simplemente la descripción que verá tu grupo del servidor puedes colocar algo como:

server string = %h Servidor de archivos

%h lo que hace es imprimir el nombre de host de tu servidor.

Guarda los cambios y sigamos.

Como crear, editar o eliminar usuarios en Samba

Los usuarios que queremos que tengan acceso al servidor Samba deben estar creados como usuarios en nuestro servidor linux, podemos crear un grupo samba y agregar a ese grupo todos los usuarios que tendrán acceso al servidor samba:

Para agregar un usuario a linux podemos utilizar el comando:

adduser nombre_usuario

Nos pedira la clave que queremos utilizar para ese usuario y algunos datos que son opcionales, luego podemos cambiar sus privilegios.

Supongamos que tenemos un usuarios ya creado llamado jose y que lo queremos agregar a los usuarios de Samba, para esto ejecutamos el siguiente comando:

sudo smbpasswd -a jose

Nos aparecerá algo como:

smbpasswd -a jose
New SMB password:
Retype new SMB password:
Added user jose.

Colocamos la clave que queremos que tenga ese usuario para ingresar al servidor Samba, la clave puede ser distinta a la clave que tiene el usuario para ingresar a Linux.

Vamos a crear un nuevo archivo donde estarán todos los usuarios autorizados para conectarse al Servidor de Samba, para esto ejecutamos:

En Debian:

nano /etc/samba/smbusers

En Ubuntu:

sudo gedit /etc/samba/smbusers

En el nuevo archivo copiamos la siguiente línea:

nombre_enlinux = "Nombre en Windows"

Donde nombre_enlinux es el nombre del usuario que tenemos en linux en este caso jose y Nombre en Windows es el nombre del usuario de red en Windows. Tenemos que agregar una nueva línea por cada usuario que creemos para Samba.

Para editar un usuario ejecutamos:

smbpasswd -a nombre_usuario

Para borrar un usuario ejecutamos:

smbpasswd -x nombre_usuario

Ahora que ya tenemos a los usuarios creados procedamos a ver como se compaten archivos y directorios.

Compartiendo Archivos con Samba

Vamos a modificar el archivo de configuración de Samba:

En Debian:

nano /etc/samba/smb.conf

En Ubuntu:

sudo gedit /etc/samba/smb.conf

Busca la línea que dice:

;   security = user

Y la modificamos por:

security = user
username map = /etc/samba/smbusers

Con esto lo que estamos haciendo es diciendole a Samba que vamos a autenticar por usuario y donde está la lista de los usuarios permitidos que fue la que creamos anteriormente.

Para darle acceso a los usuario a sus respectivos directorios home o personales, hacemos lo siguiente:

Buscamos las línea donde dice

;[homes]
; comment = Home Directories;
;browseable = no
;valid users = %S
;writable = no

Y le quitamos el ; para descomentarlos, y en writable le cambiamos no por yes para que el usuario pueda escribir en el directorio.

Siempre que cambiemos la configuración del archivo smb.conf debemos ejecutar el siguiente comando:

testparm

lo que hace este parámetro es verificar que los parámetros del archivo smb.conf estén correctos, luego que nos diga que todo esta bien ejecutamos:

/etc/init.d/samba restart

para aplicar los cambios.

Ahora si quieremos compartir un directorio que llamaremos grupo hacemos lo siguiente, primero creamos la carpeta que queremos compartir si ya no la habíamos creado:

mkdir /home/grupo
chmod 777 /home/grupo

La puedes crear donde quieras. Ahora vamos a modificar el archivo de smb.conf, voy a suponer que ya modificaste la parte de security y agregaste /etc/samba/smbusers a este archivo y que ya sabes como abrirlo para editarlo de ahora en adelante. Agregamos la siguientes lineas al final del archivo:

[Grupo]
comment = Archivos Compartidos
path = /home/grupo
public = yes
writable = yes
create mask = 0700
directory mask = 0700
force user = nobody
force group = nogroup

Analicemos esta estructura, comment simplemente es un comentario de lo que es la carpeta puedes colocar lo que quieras, path por supuesto es donde esta la carpeta que queremos compartir, public es si quieres hacer esta carpeta disponible publicamente o no, para cambiarlo simplemente coloca no, writable permite definir si se puede escribir en la carpeta o no, create mask y directory mask es la mascara con la que se crearan los archivos (es decir que privilegios tendrán los archivos y directorios creados) si quieras que puedan hacer cualquier acción en la carpeta coloca 0777 en ambas, force group y force user es para forzar que solo un grupo específico o usuario se pueda conectar a esta carpeta.

Si además queremos que solo un grupo de usuarios pueda accesar a la carpeta agregamos esta línea después de writable:

valid users = nombre_usuario1 nombre_usuario2

Donde puedes agregar los usuarios que quieras que tengan acceso.

Luego de que termines de agregar las carpetas que quieras compartir Guarda el archivo y probamos el archivo smb.conf y reiniciamos el servidor de Samba:

testparm
/etc/init.d/samba restart

Compartiendo Impresoras

Voy a suponer que ya tienes una impresora conectada y funcionado en tu PC Linux.

Compartir impresoras en Samba es muy sencillo simplemente busca estas dos líneas en el archivo /etc/samba/smb.conf (Recuerda hacer una copia de respaldo) :

 ...
# printing = cups
# printcap name = cups
...

Y descomentalas:

...
printing = cups
printcap name = cups
...

Guarda el archivo cimprueba los parámetros de smb.conf y reinicia el servidor de Samba ejecutando:

testparm


/etc/init.d/samba restart

Y eso es todo, ya puedes ir a tu PC Windows y buscar en tu grupo de trabajo las carpetas compartidas de Linux en Samba y además agregar la impresora.

Espero que les haya servido este tutorial, más adelante publicaré un tutorial acerca de como configurar un servidor WINS con Samba.

El manual oficial de Samba lo pueden conseguir aquí.



Fuente: http://www.vensign.com/seguridad/instalando-samba-en-ubuntu-debian-para-compartir-archivos-e-impresoras-en-redes-windows/

Shell

Introducción a la shell

El intérprete de comandos es la interfaz entre el usuario y el sistema operativo. Por esta razón, se le da el nombre inglés "shell", que significa "caparazón".

La shell es un caparazón entre el OS y el usuario

Por lo tanto, la shell actúa como un intermediario entre el sistema operativo y el usuario gracias a líneas de comando que este último introduce. Su función es la de leer la línea de comandos, interpretar su significado, llevar a cabo el comando y después arrojar el resultado por medio de las salidas.

La shell es un archivo ejecutable que debe interpretar los comandos, transmitirlos al sistema y arrojar el resultado. Existen varios shells. La más común es sh (llamada "Bourne shell"), bash ("Bourne again shell"), csh ("C Shell"), Tcsh ("Tenex C shell"), ksh ("Korn shell") y zsh ("Zero shell"). Generalmente, sus nombres coinciden con el nombre del ejecutable.

Cada usuario tiene una shell predeterminada, la cual se activará cuando se abra un indicador del comando. La shell predeterminada se especifica en el archivo de configuración /etc/passwd en el último campo de la línea que corresponde al usuario. Es posible cambiar de shell durante una sesión. Para esto, sólo debe ejecutar el archivo ejecutable correspondiente, por ejemplo:

/bin/bash

Indicador del sistema

La shell se inicia al leer su configuración completa (en un archivo del directorio /etc/) y después al leer la configuración propia del usuario (en un archivo oculto cuyo nombre comienza con un punto y que se ubica en el directorio básico del usuario, es decir /home/user_name/.configuration_file). A continuación, aparece el siguiente indicador (prompt en inglés):

equipo:/directorio/actual$
De manera predeterminada, para la mayoría de las shells, el indicador consiste en el nombre del equipo, seguido de dos puntos (:), el directorio actual y después un carácter que indica el tipo de usuario conectado:
  • "$" especifica un usuario normal
  • "#" especifica el administrador, llamado "root"

El concepto de línea de comandos

Una línea de comandos es una cadena de caracteres formada por un comando que corresponde a un archivo ejecutable del sistema o, más bien, un comando de shell como así también argumentos opcionales (parámetros):

ls -al /home/jf/
En el comando anterior, ls es el nombre del comando, -al y home/jean-francois/ son argumentos. Los argumentos que comienzan con - se denominan opciones. Por lo general, para cada comando, hay una cierta cantidad de opciones que se pueden detallar al introducir uno de los siguientes comandos:
comando --help comando -? man comando

Entrada-salida estándar

Una vez que se ejecuta un comando, se crea un proceso. Este proceso abre tres flujos:

  • stdin, denominado entrada estándar, en cuyo caso el proceso lee los datos de entrada. De manera predeterminada, stdin se refiere al teclado. STDIN se identifica con el número 0.
  • stdout, denominado salida estándar, en cuyo caso el proceso escribe los datos de salida. De manera predeterminada, stdout se refiere a la pantalla. STDOUT se identifica con el número 1.
  • stderr, denominado error estándar, en cuyo caso el proceso escribe los mensajes del error. De manera predeterminada, stderr se refiere a la pantalla. STDERR se identifica con el número 2.

entrada-salida estándar: STDOUT, STDIN, STDERR

Por lo tanto, de manera predeterminada, cada vez que se ejecuta un programa, los datos se leen desde el teclado y el programa envía su salida y sus errores a la pantalla. Sin embargo, también es posible leer datos desde cualquier dispositivo de entrada, incluso desde un archivo, y enviar la salida a un dispositivo de visualización, un archivo, etc.

Redirecciones

Como cualquier sistema Unix, Linux posee mecanismos que permiten redirigir la entrada-salida estándar a archivos.

Por lo tanto, si se usa el carácter ">", se puede redirigir la salida estándar de un comando que se encuentra a la izquierda a un archivo que se encuentra a la derecha:

ls -al /home/jf/ > toto.txt echo "Toto" > /etc/miarchivodeconfiguración
El siguiente comando equivale a una copia de los archivos:
cat toto > toto2
El propósito de la redirección ">" es el de crear un archivo nuevo. En el caso de que un archivo ya exista con el mismo nombre, se lo debe eliminar. El siguiente comando simplemente crea un archivo vacío:
> archivo
El uso del carácter doble ">>" permite agregar la salida estándar al archivo, es decir, permite agregar la salida después del archivo sin eliminarlo.

De manera similar, el carácter "<" indica una redirección de la entrada estándar. El siguiente comando envía el contenido del archivo toto.txt con el comando cat, cuyo único propósito es mostrar el contenido en la salida estándar (el ejemplo no es útil, pero es instructivo):

cat <> 

Por último, el uso de la redirección "<<" permite la lectura, en la entrada estándar, hasta que se encuentre la cadena ubicada a la derecha. En el siguiente ejemplo, se lee la entrada estándar hasta que se encuentra la palabra STOP. Después, se muestra el resultado:

cat <<> 

Tuberías de comunicación

Las tuberías (en inglés "pipes") (literalmente “tuberías”) son mecanismos de comunicación específicos para todos los sistemas UNIX. Una tubería, simbolizada por una barra vertical (carácter "|"), permite asignar la salida estándar de un comando a la entrada estándar de otro, de la misma forma en que una tubería permite la comunicación entre la entrada estándar de un comando y la salida estándar de otro.

En el siguiente ejemplo, la salida estándar del comando ls -al se envía al programa sort, el cual debe extraer el resultado en orden alfabético.

ls -al | sort

Esto permite conectar una cierta cantidad de comandos a través de sucesivas tuberías. En el siguiente ejemplo, el comando muestra todos los archivos del directorio actual, selecciona las líneas que contienen la palabra "zip" (utilizando el comando grep) y cuenta la cantidad total de líneas:

ls -l | grep zip | wc -l

Fuente: http://es.kioskea.net/contents/linux/linshell.php3