domingo, 22 de enero de 2012

Permisos de archivos y Directorios


Introducción

¿Has visto esa combinación de r,w,x y - cuando listas un directorio?,
tienes cierta idea que son los permisos, pero ¿como se usan y como funcionan?.
En este manual sobre permisos de archivos y directorios de LinuxTotal entenderás totalmente su uso y la manera correcta de utilizarlos.

En Linux, todo archivo y directorio tiene tres niveles de permisos de acceso: los que se aplican al propietario del archivo, los que se aplican al grupo que tiene el archivo y los que se aplican a todos los usuarios del sistema.
Podemos ver los permisos cuando listamos un directorio con ls -l:

$> ls -l
-rwxrwxr--  1 sergio ventas    9090 sep  9 14:10 presentacion
-rw-rw-r--  1 sergio sergio 2825990 sep  7 16:36 reporte1
drwxr-xr-x  2 sergio sergio    4096 ago 27 11:41 videos

Veamos por partes el listado, tomando como ejemplo la primera línea.
La primera columna (-rwxrwxr--) es el tipo de archivo y sus permisos, la siguiente columna (1) es el número de enlaces al archivo, la tercera columna (sergio) representa al propietario del archivo, la cuarta columna (ventas) representa al grupo al que pertence al archivo y las siguientes son el tamaño, la fecha y hora de última modificación y por último el nombre delarchivo o directorio.

El primer caracter al extremo izquierdo, representa el tipo de archivo, los posibles valores para esta posición son los siguientes:

•    - un guión representa un archivo comun (de texto, html, mp3, jpg, etc.)
•    d representa un directorio
•    l link, es decir un enlace o acceso directo
•    b binario, un archivo generalmente ejecutable

Los siguientes 9 restantes, representan los permisos del archivo y deben verse en grupos de 3.
Los tres primeros representan los permisos para el propietario del archivo. Los tres siguientes son los permisos para el grupo del archivo y los tres últimos son los permisos para el resto del mundo o otros.
rwx       rwx     rwx
usuario   grupo   otros
En cuanto a las letras, su significado son los siguientes:
•    r read - lectura
•    w write - escritura (en archivos: permiso de modificar, en directorios: permiso de crear archivos en el dir.)
•    x execution - ejecución
Las nueve posiciones de permisos son en realidad un bit que o esta encendido (mostrado con su letra correspondiente) o esta apagado (mostrado con un guión -), asi que, por ejemplo, permisos como rwxrw-r--, indicaría que los permisos del propietario (rwx) puede leer, escribir y ejecutar el archivo, el grupo (o sea los usuarios que esten en mismo grupo del archivo) (rw-) podrá leer y escribir pero no ejecutar el archivo, y cualquier otro usuario del sistema (r--), solo podrá leer el archivo, ya que los otros dos bits de lectura y ejecucción no se encuentran encendidos o activados.

Permisos en formato numérico octal
La cambinación de valores de cada grupo de los usuarios forma un número octal, el bit x es 20 es decir 1, el bit w es 21 es decir 2, el bit r es 22 es decir 4, tenemos entonces:

•    r = 4
•    w = 2
•    x = 1

La combinación de bits encendidos o apagados en cada grupo da ocho posibles combinaciones de valores, es decir la suma de los bits encendidos:
- - -    = 0     no se tiene ningún permiso
- - x    = 1     solo permiso de ejecución
- w -    = 2     solo permiso de escritura
- w x    = 3     permisos de escritura y ejecución
r - -    = 4     solo permiso de lectura
r - x    = 5     permisos de lectura y ejecución
r w -    = 6     permisos de lectura y escritura
r w x    = 7     todos los permisos establecidos, lectura, escritura y ejecución
Cuando se combinan los permisos del usuario, grupo y otros, se obtienen un número de tres cifras que conforman los permisos del archivo o del directorio. Esto es más fácil visualizarlo con algunos ejemplos:

Permisos    Valor    Descripción
rw-------    600    El propietario tiene permisos de lectura y escritura.
rwx--x--x    711    El propietario lectura, escritura y ejecución, el grupo y otros solo ejecución.
rwxr-xr-x    755    El propietario lectura, escritura y ejecución, el grupo y otros pueden leer y ejecutar el archivo.
rwxrwxrwx    777    El archivo puede ser leido, escrito y ejecutado por quien sea.
r--------    400    Solo el propietario puede leer el archivo, pero ni el mismo puede modificarlo o ejecutarlo y por supuesto ni elgrupo ni otros pueden hacer nada en el.
rw-r-----    640    El usuario propietario puede leer y escribir, el grupo puede leer el archivo y otros no pueden hacer nada.

Estableciendo los permisos con el comando chmod
Habiendo entendido lo anterior, es ahora fácil cambiar los permisos de cualquier archivo o directorio, usando el comando chmod (change mode), cuya sintaxis es la siguiente:
chmod [opciones] permisos archivo[s], algunos ejemplos:

$> chmod 755 reporte1
$> chmod 511 respaldo.sh
$> chmod 700 julio*
$> chmod 644 *

Los ejemplos anterior establecen los permisos correspondientes que el usuario propietario desea establecer, el tercer ejemplo (chmod 700 julio*) cambiará los permisos a todos los archivos que empiezen con julio (julio01, julio02, julio_respaldo, etc.) debido al caracter '*' que es parte de las expresiones regulares que el shell acepta, e indica lo que sea.
El último ejemplo por lo tanto cambiará los permisos a los archivos dentro del directorio actual.

Una opción común cuando se desea cambiar todo un árbol de directorios, es decir, varios directorios anidados y sus archivos correspondientes, es usar la opción -R, de recursividad:
$> chmod -R 755 respaldos/*

Esto cambiará los permisos a 755 (rwxr-xr-x) del directorio respaldos y de todos los subdirectorios y archivos que estén contenidos dentro de este.

Estableciendo permisos en modo simbólico
Otra manera popular de establecer los permisos de un archivo o directorio es a través de identificadores del bit (r,w, o x) de los permisos, como ya se vió anteriormente, pero ahora identificando además lo siguiente:

•    al usuario con la letra u
•    al grupo con la letra g
•    a otros usuarios con la letra o
•    y cuando nos referimos a todos (usuario, grupo, otros) con la letra a (all, todos en inglés)
•    el signo + para establecer el permiso
•    el signo - para eliminar o quitar el permiso

La sintaxis es muy simple chmod augo[+|-]rwx[,...] archivo[s], asi por ejemplo, si queremos que otros tengan permiso de escritura sería chmod o+w archivo, todos los usuarios con permisos de ejecución chmod a+x archivo.

En este modo de establecer permisos, solo hay que tomar en cuenta que partiendo de los permisos ya establecidos se agregan o se quitan a los ya existentes.Veámoslo con ejemplos su manera de trabajar:

Actual    chmod    Resultado    Descripción
rw-------    a+x    rwx--x--x    Agregar a todos (all) permisos de escritura.
rwx--x--x    go-x    rwx------    Se eliminan permiso de ejecución para grupo y otros.
rwxr-xr-x    u-x,go-r    rw---x--x    Al usuario se le quita ejecución, al grupo y otros se le quita lectura.
rwxrwxrwx    u-x,go-rwx    rw-------    Al usuario se le elimina ejecución, al grupo y otros se eliminan todos los permisos.
r--------    a+r,u+w    rw-r--r--    A todos se les agrega lectura, al usuario se le agrega escritura.
rw-r-----    u-rw,g+w,o+x    ---rw---x    Al usuario se le eliminan lectura y escritura, al grupo se le agrega lectura y otros se le agrega ejecución.

Cambiando propietario y grupo

Volviendo a mostrar el listado al inicio de este artículo:

$> ls -l
-rwxrwxr--  1 sergio ventas    9090 sep  9 14:10 presentacion
-rw-rw-r--  1 sergio sergio 2825990 sep  7 16:36 reporte1
drwxr-xr-x  2 sergio sergio    4096 ago 27 11:41 videos

Vemos en la tercera y cuarta columna al usuario propietario del archivo y al grupo al que pertence, es posible cambiar estos valores a través de los comandos chown (change owner, cambiar propietario) y chgrp (change group, cambiar grupo). La sintaxis es muy sencilla: chown usuario archivo[s] y chgrp grupo archivo[s]. Además al igual que con chmod, también es posible utilizar la opción -R para recursividad.

#> ls -l presentacion
-rwxrwxr--  1 sergio ventas    9090 sep  9 14:10 presentacion
#> chown juan presentacion
#> ls -l presentacion
-rwxrwxr--  1  juan ventas    9090 sep  9 14:10 presentacion
#> chgrp gerentes presentacion
#> ls -l presentacion
-rwxrwxr--  1  juan gerentes  9090 sep  9 14:10 presentacion

Solo el usuario root puede cambiar usuarios y grupos a su voluntad sobre cualquier usuario, queda claro que habiendo ingresado al sistema como usuario normal, solo podrá hacer cambios de grupos, y eso solo a los que pertenezca.
Una manera rápida para el usuario root de cambiar usuario y grupo al mismo tiempo, es con el mismo comando chown de la siguiente manera:

#> chown juan.gerentes presentacion  (o en vez de punto, con : puntos)
#> chown juan:gerentes presentacion
Así, cambiará el usuario.grupo en una sola instrucción.

Bits SUID, SGID y de persitencia (sticky bit)
Aún hay otro tipo de permisos que hay que considerar. Se trata del bit de permisos SUID (Set User ID), el bit de permisos SGID (Set Group ID) y el bit de permisos de persistencia (sticky bit). Para entender los dos primeros el SUID y el SGID veamos los permisos para un comando de uso común a todos los usuarios, que es el comando passwd, que como se sabe sirve para cambiar la contraseña del usuario, y puede ser invocado por cualquier usuario para cambiar su propia contraseña, si vemos sus permisos observaremos un nuevo tipo de permiso:

#> ls -l /usr/bin/passwd
-r-s--x--x 1 root root 21944 feb 12  2006 /usr/bin/passwd
SUID

En vez de la 'x' en el grupo del usuario encontramos ahora una 's' (suid). passwd es un comando propiedad de root, pero sin embargo debe de poder ser ejecutado por otros usuarios, no solo por root. Es aqui donde interviene el bit SUID, donde al activarlo obliga al archivo ejecutable binario a ejecutarse como si lo hubiera lanzado el usuario propietario y no realmente quien lo lanzó o ejecutó. Es decir, es poder invocar un comando propiedad de otro usuario (generalmente de root) como si uno fuera el propietario.
SGID

El bit SGID funciona exactamente igual que el anterior solo que aplica al grupo del archivo. Es decir si el usuario pertenece al grupo 'ventas' y existe un binario llamado 'reporte' que su grupo es 'ventas' y tiene el bit SGID activado, entonces el usuario que pertenezca al grupo 'ventas' podrá ejecutarlo. También se muestra como una 's' en vez del bit 'x' en los permisos del grupo.
STICKY BIT (Bit de persistencia)

Este bit se aplica para directorios como en el caso de /tmp y se indica con una 't':
#> ls -ld /tmp
drwxrwxrwt 24 root root 4096 sep 25 18:14 /tmp

Puede apreciarse la 't' en vez de la 'x' en los permisos de otros. Lo que hace el bit de persistencia en directorios compartidos por varios usuarios, es que el sólo el propietario del archivo pueda eliminarlo del directorio. Es decir cualquier otro usuario va a poder leer el contenido de un archivo o ejecutarlo si fuera un binario, pero sólo el propietario original podrá eliminarlo o modificarlo. Si no se tuviera el sticky bit activado, entonces en estas carpetas públicas, cualquiera podría eliminar o modificar los archivos de cualquier otro usuario.
Estableciendo los permisos especiales
Para cambiar este tipo de bit se utiliza el mismo comando chmod pero agregando un número octal (1 al 7) extra al principio de los permisos, ejemplo:

#> ls -l /usr/prog
-r-x--x--x 24 root root 4096 sep 25 18:14 prog
#>chmod 4511 /usr/prog
#> ls -l /usr/prog
-r-s--x--x 24 root root 4096 sep 25 18:14 prog

Nótese que el valor extra es el '4' y los demás permisos se dejan como se quieran los permisos para el archivo. Es decir, los permisos originales en este ejemplo eran 511 (r-x--x--x), y al cambiarlos a 4511, se cambió el bit SUID reemplazando el bit 'x' del usuario por 's'.
Los posibles valores serían los siguientes:

- - - - - - - - -    = 0     Predeterminado, sin permisos especiales. No se requiere indicar.
- - - - - - - - t    = 1     Bit de persistencia, sticky bit
- - - - - s - - -    = 2     Bit sgid de grupo
- - - - - s - - t    = 3     Bit sgid y sticky
- - s - - - - - -    = 4     Bit suid
- - s - - - - - t    = 5     Bit suid y sticky
- - s - - s - - -    = 6     Bit suid y sgid
- - s - - s - - t    = 7     Bit suid, sgid y sticky

MUY IMPORTANTE: Algo sumamente delicado y que se tiene que tomar muy en cuenta es lo que decidas establecer con permisos de bit SUID y SGID, ya que recuerda que al establecerlos de esta manera, cualquier usuario podrá ejecutarlos como si fueran el propietario original de ese programa. Y esto puede tener consecuencias de seguridad severas en tu sistema. Siempre considera y reconsidera si conviene que un usuario normal ejecute aplicaciones propias de root a través del cambio de bits SUID o SGID.

Mejores alternativas pueden ser los comandos sudo y su, en este tip de LinuxTotal.com.mx encuentras una manera de identificar archivos y ejecutables con estos bits establecidos.

Permisos preestablecidos con umask
El comando umask establece la máscara de permisos de directorio y de archivos. Es decir los nuevos directorios y archivos que se crean obtienen el valor de los permisos a partir de los valores de umask.

$> umask
0002
(o en formato simbólico con la opción -S)
$> umask -S
u=rwx,g=rwx,o=rx

Lo anterior indica que un directorio y archivos ejecutables se crearán con los permisos 775 y los archivos comunes con los permisos 664. Esto se logra restando de 777 el valor de umask (777-002) y (666-002) respectivamente. El primer valor de umask corresponde para valores de Sticky bit, GUID o SUID, que por default es 0.

$> umask
0002
(Creamos un archivo y según la máscara debemos de tener 666-002=664 o rw-rw-r--)

$> touch archivo
$> ll archivo
-rw-rw-r-- 1 sergio sergio 0 sep 25 20:14 archivo

(Ahora creamos un directorio y según la máscara debemos de tener 777-002=775 o rwxrwxr-x)

$> mkdir dir
$> ls -ld dir

drwxrwxr-x 2 sergio sergio 4096 sep 25 20:20 dir
Para establecer el valor de la máscara, simplemente se usa el mismo comando umask seguido del valor de máscara que se desee:

$> umask 0022

Para dejarlo fijo en la sesión, entonces conviene agregarlo a .bash_profile o .bash_rc de nuestro directorio de inicio.

-----------------------------------------------------------------------------------------------------------------------

Copyright 2005-2012 Sergio González Durán
Se concede permiso para copiar, distribuir y/o modificar este documento siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation.
autor: sergio.gonzalez.duran@gmail.com

Problema ACPI con netbook toshiba.

Tenia un problema cuando instalé ubuntu 10.10 en una netbook toshiba nb200.
Cuando arrancaba ubuntu, se colgaba la carga y solo avanzaba si presionaba alguna tecla. Todo se resuelve modificando el grub.



GRUB CMDLINE ACPI PROBLEM


sudo gedit /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nohz=off"

or

I'd like to confirm that this bug exists in Ubuntu 11.04 with
Linux 2.6.38-9.43 on a Toshiba nb300.

As a workaround I set
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nolapic_timer clocksource=jiffies"
in /etc/default/grub and then run
sudo update-grub
sudo reboot

Note that the right option name is nolapic_timer, not nolapci_timer as
mentioned above.

Enable Bluetooth on the NB200 / NB205

Bluetooth works for me in Ubuntu 10.10 on the NB200 after a little tweaking.

enlace  enlace



1) I downloaded and installed the omnibook-source package from here

2)Edit the source code to fix a pesky error:
cd /usr/src/
sudo tar xjf omnibook.tar.bz2
cd modules/omnibook/
sudo nano init.c
hit ctrl-w and search for this:
proc_entry->owner = THIS_MODULE;
when you get to that line add two // in front of it and make sure it look like this:
// proc_entry->owner = THIS_MODULE;
ctrl-o ctrl-x to save the file

3) compile and install the fixed source code

sudo m-a build omnibook-source -O
sudo m-a install omnibook-source

4) test it out. You should see a bluetooth icon appear in your system tray.
sudo modprobe omnibook ectype=12
entering the hciconfig command in the terminal should return some info, something like this if it’s been detected:
$ hciconfig
hci0: Type: USB
BD Address: 00:22:58:F3:46:F9 ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:1035 acl:0 sco:0 events:41 errors:0
TX bytes:1370 acl:0 sco:0 commands:37 errors:0

5) Now make it run upon booting your netbook:
sudo nano /etc/modules
add this line and save the file
omnibook
sudo nano /etc/modprobe.d/omnibook.conf
add this line:
options omnibook ectype=12
save the file. Now when you reboot, the bluetooth icon should show that it is running.

6) after sleep or hibernate if it doesn’t reappear, you can reactivate it
by running in the terminal:
sudo rmmod -f omnibook && sudo modprobe omnibook ectype=12
You should see the bluetooth icon reappear. However you’ll want to make this automatic so create a file that restarts bluetooth, like this:

sudo nano /etc/pm/power.d/89bluetooth
and put this in:
#!/bin/bash
rmmod -f omnibook
modprobe omnibook ectype=12

Save the file and change the permissions so it can be run
sudo chmod +x /etc/pm/power.d/89bluetooth

Now after sleep and resume, you should see the bluetooth icon reload in the system tray.


Re: Setup Guide:- Toshiba Dynabook UX/ NB200 / NB205
________________________________________

Is there any way to disable and enable the wifi without having to go into the BIOS? it'd be helpful in saving battery life.
echo 0 > /proc/omnibook/bluetooth
echo 0 > /proc/omnibook/wifi

echo 1 > /proc/omnibook/bluetooth
echo 1 > /proc/omnibook/wifi

------------------------------------------------------------------------------------------------------------

Originally Posted by Leesa 
Bluetooth is working with omnibook module:

1.    Get sources from http://dl.getdropbox.com/u/362618/om...1217-1_all.deb
2.    Make sure Bluetooth is enabled in Windows
3.    sudo apt-get install module-assistant build-essential
4.    sudo m-a a-i omnibook-source
5.    Try it: sudo modprobe omnibook ectype=14
6.    Make it autoload:
•    sudo nano /etc/modules
•    Put "omnibook" at the latest line
•    sudo nano /etc/modprobe.d/omnibook.conf:

options omnibook ectype=14 userset=0 lcd=0 display=0 blank=0 battery=0 ac=0 bluetooth=1
Works fine for my NB200, even enabling/disabling bluetooth via /proc/omnibook/bluetooth
You should use ectype=12 instead of ectype=14.
That way you can enable or disable wifi without needing to boot Windows.
Unfortunately, the hotkeys don't work, so you have to manually echo either 1 or 0 to /proc/omnibook/wifi (or if you prefer, just disable it in the bios when you want to be sure it is disabled).



Generar lista de paquetes instalados y usarla para instalarlos



 Acá se guardan los paquetes descargados.

/var/cache/apt/archives/



Crear un directorio en donde guardaremos los paquetes, como ejemplo en este caso creo el directorio “repositorio” en mi home que es: /home/raseck

mkdir /home/usuario/repositorio

Ahora como root para debian, o anteponiendo sudo para *ubuntu, copiamos los paquetes que hemos descargado desde apt (los que queremos respaldar) a nuestro directorio que recien creamos ( repositorio )
cd /var/cache/apt/archives
cp *.deb /home/raseck/repositorio

Esto tomará un poco de tiempo, dependiendo de cuantos paquetes tengamos almacenados, ahora ingresamos al directorio en cuestión para ejecutar:

cd /home/raseck/repositorio
dpkg-scanpackages . /dev/null | gzip > Packages.gz

Y listo ahora nos queda guardar el directorio repositorio a un CD.

Ahora para utilizar nuestro cd repositorio en algún computador, debemos agregarlo a apt. ( como root, o anteponiendo sudo en caso de usar ubuntu)
apt-cdrom add

Nos pedirá un cd, ingresamos nuestro cd repositorio y ya podemos usar apt para instalar los programas desde el cd en cualquier computador que use debian ( o ubuntu según en que sistema lo hayamos hecho)

Levantar un Servidor Samba

Guia Ubuntu

Samba es un software que permite a tu ordenador con Ubuntu poder compartir archivos e impresoras con otras computadoras en una misma red local. Utiliza para ello un protocolo conocido como SMB/CIFS compatible con sistemas operativos UNIX o Linux , como Ubuntu, pero además con sistemas Windows (XP, NT, 98...), OS/2 o incluso DOS. También se puede conocer como LanManager o NetBIOS.
Si Ubuntu te ha detectado correctamente la red local, que es lo mas habitual, cuando selecciones una carpeta y hagas click en el botón derecho del ratón, si le das a Compartir carpeta, al seleccionar un protocolo se iniciará un proceso automático de descarga desde Internet e instalación de Samba. También se puede instalar de la forma habitual usando Añadir y quitar... o Synaptic


Instalación

Primero instalamos samba :
$ sudo apt-get install samba samba-client smbfs smbclient
esto debería instalar también varias otras dependencias.


Herramientas

Tenemos variadas herramientas las cuales podemos utilizar para facilitar la configuración del servidor:
  • system-config-samba : Editor gráfico de configuración.
  • gadmin-samba : Editor gráfico de configuración Avanzado.
  • swat (Samba Web Administration Tool) : Permite administrar samba a través del navegador web en http://localhost:901


Manuales

  • samba-doc : instala manuales en /usr/share/doc-base/ y /usr/share/doc/samba-doc/ como texto y html
  • samba-doc-pdf : instala manuales en /usr/share/doc-base/ y /usr/share/doc/samba-doc-pdf/ con formato pdf


Configuración

La configuración del servidor samba se realiza en el archivo /etc/samba/smb.conf el cual podemos modificar de la siguiente manera:
$ sudo nano /etc/samba/smb.conf


Para modificar el grupo de trabajo

Buscamos la línea que diga algo como :
workgroup = MSHOME
y reemplazamos MSHOME por el nombre de nuestro grupo de trabajo.


Para compartir una carpeta



Opción 1

Primero debemos crear una carpeta con permisos (por ejemplo) :
$ sudo mkdir /home/publico
$ sudo chmod 755 /home/publico
Luego abrimos la configuración y le agregamos, al final, algo como esto :
[publico]
 comment = Cosas publicas
 path = /home/publico
 public = yes
 writable = no
Las opciones son sugerentes, por ejemplo "public = yes" es para que se pueda acceder a la carpeta cualquier usuario, y "writable = no" es para que no se pueda escribir.


Opción 2

Para añadir los recursos con nautilus (navegador de archivos) debemos crear la siguiente carpeta con sus respectivos permisos:
$ sudo mkdir -p /usr/local/samba/lib/usershares
$ sudo chgrp sambashare /usr/local/samba/lib/usershares
$ sudo chmod 1770 /usr/local/samba/lib/usershares
Y luego agregas los siguientes parámetros a la configuración:
usershare path = /usr/local/samba/lib/usershares
usershare max shares = 10
Finalmente se pueden añadir carpetas en nautilus haciéndole click derecho, opción "opciones de compartición".


Opción 3

Nos dirigimos al menú de Ubuntu: Sistema, Administración y seleccionamos Carpetas compartidas. Pulsamos añadir (en la imagen yo ya tengo añadida una carpeta, pero tú deberías tenerla en blanco) y nos aparecerá una imagen como la inferior.

Aumentar
En ruta, buscamos la carpeta que queremos compartir, como nombre pondremos Compartidos (por ejemplo) y seleccionamos Permitir examinar la carpeta. Pulsamos sobre Configuracion general de archivos compartidos con Windows, en Dominio introducimos el nombre de red que posea la máquina Windows.


Compartir la Unidad de CD-ROM

Abrimos la configuración y le agregamos, al final, algo como esto :

[cdrom]
 comment = Cd Rom Compartido
 path = /media/cdrom0
 public = yes
 writable = no
 browseable = yes
(le agregamos un nuevo parámetro "browseable" esto sirve para ingresar a la maquina por medio de windows y linux de forma remota y ver la carpeta que esta compartida)


Compartir impresoras

Ver Compartir una impresora con Windows 2000/XP


Para probar la correcta sintaxis del archivo de configuración

Utilizamos la aplicación testparm, la cual verifica la configuración y despliega las carpetas compartidas en éste: (Instalar  $apt-get install samba-common-bin)
$ testparm


Quitar lineas de comentarios

Para eliminar las líneas que corresponden a comentarios:
$ su
# mv smb.conf smb.conf.orig
# testparm -s smb.conf.orig > smb.conf
Nota: el comando su nos logea como root, para lo cual debemos tener habilitado el usuario root con contraseña. Para ello ejecutas:
$ sudo passwd root


Parámetros de configuración



Globales

  • check password script : permite definir un script que verificará la complejidad de la contraseña definida, retornando 0 si es aprobada por el programa indicado
  • debug uid : permite registrar los uid, gid, euid y egid del usuario que solicita un recurso en el log del servidor
  • domain master : habilita a nmbd con un nombre NetBios específico que lo identifica como maestro de dominio del grupo de trabajo indicado
  • guest account : usuario utilizado para acceder a los recursos que tienen definido "guest ok"
  • include : incluye otro archivo de configuración complementario
  • debuglevel o log level : permite definir el nivel de detalle del log; incluso por módulo: all ,tdb ,printdrivers ,lanman ,smb ,rpc_parse ,rpc_srv ,rpc_cli ,passdb ,sam ,auth ,winbind ,vfs ,idmap ,quota ,acls ,locking ,msdfs ,dmapi ,registry
  • map to guest : le indica al servidor la acción a tomar cuando falla el inicio de sesión de un usuario. inútil en security = share o server
  • max log size : tamaño máximo del log
  • message command : le indica al servidor la acción al recibir un mensaje tipo WinPopup
  • netbios name : nombre netbios del servidor samba
  • null passwords : permite el acceso a usuarios con contraseñas vacías
  • panic action : comando a realizar al caerse smbd o nmbd
  • prefered master o preferred master : indica si samba es preferencialmente maestro en el grupo de trabajo
  • security : determina cómo los clientes responden el logeo (usuario y contraseña) según el "security mode bit" enviado en las negociaciones de protocolo.
    • share : clientes se registran al solicitar un recurso (permite ver la lista de recursos para visitas)
    • user : clientes se registran al solicitar la lista de recursos o solicitar un recurso
    • domain : idéntico al anterior, pero los datos de registro se consultan con controlador de dominio
    • server : idéntico al anterior, pero los datos de registro se consultan con servidor SMB
  • server string : texto desplegado como nombre completo del servidor


usershares

Parámetros de configuración aplicables a las carpetas compartidas a través de nautilus ("Opciones de compartición"):
  • usershare allow guests : las carpetas compartidas serán accedidas por los usuarios sin registrarse
  • usershare max shares : número máximo de carpetas compartidas por usuario
  • usershare owner only : permite compartir sólo las carpetas pertenecientes al usuario
  • usershare path : ruta donde se almacenan las carpetas compartidas por cada usuario (los permisos de la carpeta indicada controlan quienes pueden compartir a través de este medio)
  • usershare prefix allow list : lista separada por comas de las rutas absolutas permitidas para compartir (incluye directorios dentro de estas rutas)
  • usershare prefix deny list : lista separada por comas de las rutas absolutas no permitidas para compartir (incluye directorios dentro de estas rutas)


Recursos

  • administrative share : recurso administrativo. creado por defecto en sistemas MS. Por Ejemplo: C$ , D$ , IPC$.
  • admin users : lista de usuarios con total permiso sobre los recursos (no aplica si secury = share)
  • browsable o browseable : define si el recurso es apreciable en la lista de recursos del servidor
  • comment : permite definir un comentario aplicado al recurso, desplegable en los recursos de toda la red; a través de net view o de smbclient
  • create mode o create mask : permite restringir los permisos de los archivos/directorios creados en un recurso a través de una máscara de permisos
  • force create mode : permite aplicar permisos a los archivos/directorios creados en un recurso
  • directory mode o directory mask : similar a create mode o create mask, aplicado a directorios
  • force directory mode : similar a force create mode, aplicado a directorios
  • directory security mask : mascara de permisos aplicado a clientes Windows NT.
  • group o force group : grupo utilizado como gid del usuario conectado
  • user o force user : usuario utilizado como uid del usuario conectado
  • guest ok : permite acceder a un recurso sin identificarse
  • only guest o guest only : permite acceder sólo a usuarios sin identificación. requiere el parámetro "guest ok"
  • allow hosts o hosts allow : lista de equipos permitidos de acceder al recurso. puede aplicar como global
  • deny hosts o hosts deny : lista de equipos no permitidos de acceder al recurso. puede aplicar como global
  • invalid users : lista de usuarios no permitidos de acceder al recurso
  • only user : permite el acceso sólo a los usuarios en la lista user
  • directory o path : ruta del recurso indicado
  • read list : lista de usuarios que tienen acceso de sólo lectura
  • read only o writeable : no se permite crear ni modificar los archivos/directorios del recurso
  • user , users o username : usuarios con los cuales se probará la contraseña entregada
  • valid users : lista de usuarios permitidos de acceder al recurso
  • invalid users : lista de usuarios no permitidos de acceder al recurso
  • writable o writeable : permite escribir/modificar en el recurso indicado


de impresión

  • print ok o printable : clientes pueden enviar trabajos de impresión a la carpeta indicada
  • printer o printer name : nombre de la impresora a la cual serán enviados los trabajos


Permisos

Los usuarios que ingresan a un recurso público, el sistema le da como nombre de usuario nobody y como nombre de grupo nogroup, es así como podemos cambiar el nombre de usuario y nombre de grupo a nuestras carpetas, con el fin de que el sistema también sepa quien es el propietario de esa carpeta:
$ sudo chown nobody:nogroup /home/publico
$ sudo chmod 555 /home/publico
y si queremos que también pueda escribir sobre esta carpeta
$ sudo chmod 755 /home/public
y además debemos decirle a Samba que se lo permita (acuerdate que para que un permiso sea válido, tanto el sistema como Samba deben estar de acuerdo)


Administración



Cambiar contraseña de un dominio Windows

Para cambiar la contraseña de un usuario de dominio de Windows no es necesario ir a un PC Windows sino que se puede hacer desde el propio Ubuntu. Para hacerlo sólo hay que abir un terminal y ejecutar este comando:
$ smbpasswd -r WindowsDC -U nombreUsuario
Donde WindowsDC es en este caso la dirección del controlador de dominio de Windows y nombreUsuario el usuario en el dominio.
Al ejecutar el comando pedirá la antigua contraseña en primer lugar y posteriormente pedirá la nueva.
Una vez hecho esto ya podemos hacer login con la nueva contraseña.


Agregar usuario

Suele pasar que cuando entras desde windows a una carpeta compartida en ubuntu, te pide usuario, puede hacer lo siguiente:
$ sudo smbpasswd -a tu_usuario
si deseas le pones contraseña por motivos de seguridad, y si no necesitas la constraseña solo dale enter.


Cambiar contraseña usuario

Ahora que ya tenemos compartiendo la carpeta, nos queda crear un nombre de usuario y contraseña en el servidor Samba para que el ordenador con Windows pueda acceder a dicha carpeta, para ello abrimos una consola e introducimos:
$ sudo useradd -s /sbin/nologin usuario-windows
Donde usuario-windows es el usuario que va a acceder a la carpeta en Windows. Si /sbin/nologin no existe, probar con /usr/sbin/nologin.
Si no encuentras el fichero nologin, también puedes crear tu usuario normalmente y luego ejecutar la sentencia:
$ sudo passwd -d usuario-windows
A continuación introducimos
$ sudo smbpasswd -a usuario-windows
Y nos pedirá la contraseña que queramos asignar a dicho usuario.


Para reiniciar samba

Luego de efectuar algún cambio en el archivo /etc/samba/smb.conf debemos reiniciar samba, para ello :
$ sudo /etc/init.d/samba restart
Ojo en Ubuntu 10.04 LTS y 10.10 el comando anterior no va, debes utilizar este:
$ sudo restart smbd
Con todo lo anterior deberíamos ser capaces de entrar desde un equipo con windows o linux a la carpeta /home/public sin necesidad de tener nombre de usuario ni password:


Acceso a los recursos compartidos



Desde Windows

Colocamos en la barra de direcciones de alguna ventana:
\\192.168.3.1\publico


Desde Linux

Debemos instalar el paquete samba-client. Luego, abrimos una carpeta y colocamos en la barra de direcciones:
smb://192.168.3.1/publico/
o
smbclient //192.168.3.1/publico/
donde 192.168.3.1 es "la IP privada" del equipo linux que contiene a la carpeta /home/public