Samba es una reimplementación de software gratuito 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 controlador de dominio (DC) o como miembro de dominio. A partir de la versión 4, admite dominios Active Directory y Microsoft Windows NT .
Samba se ejecuta en la mayoría de los sistemas tipo 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 otros sistemas operativos como OpenVMS e IBM i . Samba es estándar en casi todas las distribuciones de Linux y comúnmente también se incluye 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 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 de Australia , utilizando un rastreador de paquetes para realizar análisis de red del protocolo utilizado por el software del servidor DEC Pathworks . No tenía un nombre formal en el momento de los primeros lanzamientos, versiones 0.1, 0.5 y 1.0, todos de la primera quincena de enero de 1992; Tridgell simplemente se refirió a él como "un servidor de archivos Unix para Dos Pathworks". Entendió que "de hecho había 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 necesaria ]
Centrándose en la interoperabilidad con LAN Manager de Microsoft , Tridgell lanzó "netbios for Unix", Observer, versión 1.5 en diciembre de 1993. Esta versión fue la primera en incluir software de cliente además de un servidor. Además, en este momento se eligió la GPL2 como licencia. [ cita necesaria ]
A mitad de la serie 1.5, el nombre se cambió a smbserver . Sin embargo, Tridgell recibió un aviso 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 obtuvo ejecutando el comando grep de Unix en el diccionario del sistema buscando 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 siguieron relativamente rápido, y esta última se lanzó en enero de 1995. Tridgell considera que la adopción de CVS en mayo de 1996 marca el nacimiento del equipo Samba, aunque hubo contribuciones de otras personas, especialmente Jeremy Allison , anteriormente. [7]
La versión 2.0.0 se publicó en enero de 1999 y la versión 2.2.0 en abril de 2001.
La versión 3.0.0, publicada el 23 de septiembre de 2003, fue una actualización importante. Samba obtuvo la capacidad de unirse a Active Directory como miembro, aunque no como controlador de dominio. [8] Las versiones puntuales posteriores a 3.0 han agregado nuevas características menores. Actualmente, la última versión de esta serie es la 3.0.37, publicada el 1 de octubre de 2009 y enviada de forma voluntaria. [9] La serie 3.0.x llegó oficialmente al final de su vida útil el 5 de agosto de 2009. [9]
La versión 3.1 se utilizó únicamente para el desarrollo.
Con la versión 3.2, el proyecto decidió pasar a lanzamientos basados en el tiempo. Cada seis meses aparecerán nuevas versiones importantes, como 3.3, 3.4, etc. Solo se agregarán nuevas funciones cuando se realice una versión importante; las versiones puntuales serán solo para corregir errores. [10] Además, 3.2 marcó un cambio de licencia de GPL2 a GPL3, con algunas partes publicadas bajo LGPL3. [4] El principal cambio técnico en la versión 3.2 fue generar automáticamente gran parte del código DCE/RPC que solía ser hecho a mano. La versión 3.2.0 se publicó el 1 de julio de 2008. [11] y su versión actual es 3.2.15 del 1 de octubre de 2009. La serie 3.2.x alcanzó oficialmente el final de su vida útil el 1 de marzo de 2010. [11]
Algunas versiones de Samba 3.6.3 e inferiores sufren graves problemas de seguridad que pueden permitir a usuarios anónimos obtener acceso root a un sistema desde una conexión anónima, mediante la explotación de un error en la llamada a 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 hombre en el medio de 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 exploit para la vulnerabilidad netlogon llamada Zerologon (CVE|2020-1472), para la cual existe un parche desde agosto. [35] Se ha ordenado a algunas agencias federales que utilizan el software que instalen el parche. [36]
Samba permite compartir archivos e impresiones entre computadoras que ejecutan Microsoft Windows y computadoras que ejecutan Unix. Es una implementación de decenas de servicios y una docena de protocolos, que incluyen:
Todos estos servicios y protocolos frecuentemente se denominan 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 se ha incluido el protocolo WS-Discovery 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 de Samba cuando los protocolos obsoletos están deshabilitados).
Samba configura recursos compartidos de red para directorios Unix elegidos (incluidos todos los subdirectorios contenidos). A los usuarios de Microsoft Windows les aparecen como carpetas normales de Windows a las que se puede acceder a través de la red. Los usuarios de Unix pueden montar los recursos compartidos directamente como parte de su estructura de archivos usando el comando mount.cifs o, alternativamente, pueden usar una utilidad, smbclient (libsmb) instalada con Samba para leer los recursos compartidos con una interfaz similar a una línea de comando FTP estándar. programa. Cada directorio puede tener diferentes privilegios de acceso superpuestos a las protecciones de archivos normales de Unix. Por ejemplo: los directorios de inicio tendrían acceso de lectura/escritura para todos los usuarios conocidos, permitiendo a cada uno acceder a sus propios archivos. Sin embargo, todavía no tendrían acceso a los archivos de otras personas a menos que ese permiso existiera normalmente. Tenga en cuenta que el recurso compartido de inicio de sesión, que normalmente se distribuye como 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 del usuario.
Los servicios de 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 de 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 demonios. Samba no está incluido en Solaris 8, pero hay disponible una versión compatible con Solaris 8 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, después de desacuerdos entre los líderes del equipo Samba y Luke Leighton sobre las direcciones del proyecto Samba. No lograron llegar a un acuerdo sobre un camino 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 de 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 fue reescribir todos los servicios de NT Domains como proyectos FreeDCE . [44] Esto se hizo difícil ya que los servicios se desarrollaron manualmente mediante ingeniería inversa de la red, con referencia limitada o nula a la documentación DCE/RPC. [ cita necesaria ]
Una diferencia clave con Samba fue la implementación del conjunto de protocolos NT Domains y servicios MSRPC . Samba hace que todos los servicios de NT Domains estén disponibles desde un solo lugar, mientras que Samba TNG separó cada servicio en su propio programa. [ cita necesaria ]
ReactOS comenzó a utilizar los servicios Samba TNG para su implementación en SMB. Los desarrolladores de ambos proyectos estaban interesados en ver el diseño de Samba TNG utilizado para ayudar a que ReactOS se comunique con las redes de Windows. Trabajaron juntos para adaptar el código de red y construir el sistema. El enfoque modular y de múltiples capas facilitó la migración de cada servicio a ReactOS. [45]