Samba es una reimplementación de software libre del protocolo de red SMB , y fue desarrollado originalmente por Andrew Tridgell . Samba proporciona servicios de archivos e impresión para varios clientes de Microsoft Windows [5] y puede integrarse con un dominio de Microsoft Windows Server , ya sea como un controlador de dominio (DC) o como un miembro del dominio. A partir de la versión 4, admite Active Directory y dominios de Microsoft Windows NT .
Samba se ejecuta en la mayoría de los sistemas similares a Unix , como Linux , Solaris , AIX y las variantes BSD , incluido Apple macOS ( Mac OS X 10.2 y superior) y macOS Server . Samba también se ejecuta en varios otros sistemas operativos como OpenVMS e IBM i . Samba es estándar en casi todas las distribuciones de Linux y también se incluye comúnmente como un servicio básico del sistema en otros sistemas operativos basados en Unix. Samba se publica bajo los términos de la Licencia Pública General de GNU . El nombre Samba proviene de SMB ( Server Message Block ), el nombre del protocolo propietario utilizado por el sistema de archivos de red de Microsoft Windows.
Andrew Tridgell desarrolló la primera versión de Samba Unix en diciembre de 1991 y enero de 1992, como estudiante de doctorado en la Universidad Nacional Australiana , utilizando un sniffer de paquetes para realizar análisis de red del protocolo utilizado por el software de servidor DEC Pathworks . No tenía un nombre formal en el momento de los primeros lanzamientos, versiones 0.1, 0.5 y 1.0, todas de la primera mitad de enero de 1992; Tridgell simplemente se refirió a él como "un servidor de archivos Unix para Dos Pathworks". Entendió que había "de hecho implementado el protocolo netbios" en el momento de la versión 1.0 y que "este software podría usarse con otros clientes de PC". [ cita requerida ]
Con el foco puesto en la interoperabilidad con el LAN Manager de Microsoft , Tridgell lanzó "netbios para unix", Observer, versión 1.5 en diciembre de 1993. Esta versión fue la primera en incluir software cliente además de un servidor. Además, en ese momento se eligió la licencia GPL2. [ cita requerida ]
A mitad de la serie 1.5, el nombre se cambió a smbserver . Sin embargo, Tridgell recibió una notificación de marca registrada de la empresa "Syntax", que vendía un producto llamado TotalNet Advanced Server y era propietaria de la marca registrada "SMBserver". El nombre "Samba" se derivó de la ejecución del comando Unix grep a través del diccionario del sistema en busca de palabras que contuvieran las letras S, M y B, en ese orden (es decir, ). [6]grep -i '^s.*m.*b' /usr/share/dict/words
Las versiones 1.6, 1.7, 1.8 y 1.9 llegaron relativamente rápido, siendo la última lanzada en enero de 1995. Tridgell considera que la adopción de CVS en mayo de 1996 marcó el nacimiento del Samba Team, aunque había habido contribuciones de otras personas, especialmente Jeremy Allison , anteriormente. [7]
La versión 2.0.0, publicada en enero de 1999, fue una versión importante, compatible con la autenticación desde el controlador de dominio primario de Windows NT, compatibilidad con sistemas de archivos de 64 bits para archivos muy grandes y exposición de OPLOCKS a sistemas Unix. [ cita requerida ] La versión 2.2.0 se publicó en abril de 2001. [ cita requerida ]
Algunas versiones de Samba 3.6.3 y anteriores sufren serios problemas de seguridad que pueden permitir a usuarios anónimos obtener acceso root a un sistema desde una conexión anónima, a través de la explotación de un error en la llamada al procedimiento remoto de Samba . [30]
El 12 de abril de 2016 se reveló Badlock, [31] un error de seguridad crucial en Windows y Samba. Badlock para Samba está referenciado en CVE|2016-2118 (posibles ataques de intermediarios SAMR y LSA). [32]
El 24 de mayo de 2017, se anunció que se había encontrado una vulnerabilidad de ejecución remota de código en Samba llamada EternalRed o SambaCry , que afectaba a todas las versiones desde la 3.5.0. [33] A esta vulnerabilidad se le asignó el identificador CVE|2017-7494. [33] [34]
El 14 de septiembre de 2020 se publicó una prueba de concepto de explotación de la vulnerabilidad de netlogon denominada Zerologon (CVE|2020-1472), para la que existe un parche desde agosto. [35] A algunas agencias federales que utilizan el software se les ha ordenado que instalen el parche. [36]
Samba permite compartir archivos e impresoras entre equipos que ejecutan Microsoft Windows y equipos que ejecutan Unix. Es una implementación de docenas de servicios y una docena de protocolos, entre los que se incluyen:
A todos estos servicios y protocolos se los suele denominar incorrectamente simplemente NetBIOS o SMB. Los protocolos NBT (NetBIOS sobre TCP/IP) y WINS, y su protocolo subyacente SMB versión 1, están obsoletos en Windows. Desde Windows Vista, el protocolo WS-Discovery se ha incluido junto con SMB2 y sus sucesores, que los reemplazan. (WS-Discovery se implementa en plataformas tipo Unix mediante demonios de terceros que permiten descubrir recursos compartidos Samba cuando los protocolos obsoletos están deshabilitados).
Samba configura recursos compartidos de red para directorios Unix seleccionados (incluidos todos los subdirectorios que contienen). Estos aparecen para los usuarios de Microsoft Windows como carpetas normales de Windows accesibles a través de la red. Los usuarios de Unix pueden montar los recursos compartidos directamente como parte de su estructura de archivos utilizando el comando mount.cifs o, alternativamente, pueden utilizar una utilidad, smbclient (libsmb) instalada con Samba para leer los recursos compartidos con una interfaz similar a un programa FTP de línea de comandos estándar . Cada directorio puede tener diferentes privilegios de acceso superpuestos sobre las protecciones de archivos normales de Unix. Por ejemplo: los directorios de inicio tendrían acceso de lectura/escritura para todos los usuarios conocidos, lo que permitiría a cada uno acceder a sus propios archivos. Sin embargo, seguirían sin tener acceso a los archivos de otros a menos que ese permiso existiera normalmente. Tenga en cuenta que el recurso compartido netlogon, que normalmente se distribuye como un recurso compartido de solo lectura desde /etc/samba/netlogon
, es el directorio de inicio de sesión para los scripts de inicio de sesión de usuario.
Los servicios Samba se implementan como dos demonios :
La configuración de Samba se logra editando un solo archivo (normalmente instalado como /etc/smb.conf
o /etc/samba/smb.conf
). Samba también puede proporcionar scripts de inicio de sesión de usuario e implementación de políticas de grupo a través de poledit
.
Samba está incluido en la mayoría de las distribuciones Linux y se inicia durante el proceso de arranque. En Red Hat, por ejemplo, el /etc/rc.d/init.d/smb
script se ejecuta en el momento del arranque e inicia ambos daemons. Samba no está incluido en Solaris 8, pero hay una versión compatible con Solaris 8 disponible en el sitio web de Samba. ArcaOS, basado en OS/2, incluye Samba para reemplazar el antiguo software IBM LAN Server . [38]
Samba incluye una herramienta de administración web llamada Samba Web Administration Tool (SWAT). [39] [40] SWAT se eliminó a partir de la versión 4.1. [41]
Samba TNG (The Next Generation) se bifurcó a finales de 1999, tras desacuerdos entre los líderes del equipo Samba y Luke Leighton sobre las direcciones del proyecto Samba. No llegaron a un acuerdo sobre una ruta de transición de desarrollo que permitiera que la versión de investigación de Samba que estaba desarrollando (conocida en ese momento como Samba-NTDOM) se integrara lentamente en Samba. [42] El desarrollo ha sido mínimo, debido a la falta de desarrolladores. El equipo Samba TNG frecuentemente dirigía a los usuarios potenciales hacia Samba debido a su mejor soporte y desarrollo. [43]
Un objetivo clave del proyecto Samba TNG era reescribir todos los servicios de dominios NT como proyectos FreeDCE . [44] Esto se hizo difícil ya que los servicios se desarrollaron manualmente a través de ingeniería inversa de red, con referencia limitada o nula a la documentación DCE/RPC. [ cita requerida ]
Una diferencia clave con Samba estaba en la implementación del conjunto de protocolos de NT Domains y los servicios MSRPC . Samba pone todos los servicios de NT Domains a disposición desde un único lugar, mientras que Samba TNG separaba cada servicio en su propio programa. [ cita requerida ]
ReactOS comenzó a utilizar los servicios Samba TNG para su implementación SMB. Los desarrolladores de ambos proyectos estaban interesados en ver el diseño Samba TNG utilizado para ayudar a que ReactOS se comunicara con las redes de Windows. Trabajaron juntos para adaptar el código de red y el sistema de compilación. El enfoque multicapa y modular facilitó la migración de cada servicio a ReactOS. [45]