lunes, 26 de mayo de 2008

Artículo: Samba: Además de un baile, una forma de usar el iPod/iPhone casi como un Pen


Una de las mayores faltas que ha tenido siempre la mayoría es el no poder hacer uso del dispositivo como Pendrive para poder facilmente introducir y sacar datos sin problema, ya sea una foto, un documento o demás. La solución evidentemente ha pasado por usar un cliente SFTP tanto para copiar datos como para sacarlos y por supuesto para modificar permisos.


Ahora un poco de historia, como viene siendo normal: (si no te interesa, siempre puedes saltartelo)

Muchas veces se ha criticado a Apple por no implementar esta función, y sin embargo creo siempre que es mejor educarse un poco antes de hacer conjeturas fáciles. Apple no se ha olvidado de nosotros y ha obviado la necesidad de esta función. El problema es que no ha sido posible integrarla por razones técnicas. El sistema de archivos usado por el dispositivo es HFS+, propietario de Apple, y como todas las cosas de Apple, o lo haces a su manera o nada. Un sistema de archivos podríamos definirlo de manera simple como el mecanismo que dicta como estan ordenados esos archivos, como se acceden, que jerarquia tienen, que sistemas de protección... como se gestionan en definitiva. Cada OS tiene su propio sistema de archivos, cada uno con sus pros y sus contras, pero que ahora eso no viene a cuento. En todo caso nombrar los sistemas de archivos de la actualidad y el pasado:

FAT16 - MSDOS, pero aun se encuentra mayoritariamente en todos los pendrives
FAT32 - Win95-98, y esposible y recomendable a veces usar este sistema de archivo para los pendrive
NTFS - XP, Vista.
ExFat - Vista SP1. MS quiere que sea el sistema de archivos futuro para los pendrive y demas memorias flash
HFS/+ - MAC OS
ext2/3 - Linux

Aunque evidentemente hay muchos más.

El caso es que nuestro dispositivo usa HFS, el cual es completamente incompatible con Windows e incluso problemas con linux. Incluso en el caso de poder conectarlo al PC, este nunca nos daría acceso a dichos datos. Se podría crear una capa intermedia de software... pero evidentemente estaríamos en las mismas, ya no sería un "pen". El iPod classic así como otros reproductores usan FAT o FAT32, con lo q el sistema tiene acceso sin problema a los datos. Pero el sistema de archivo HFS es un poco más peculiar, como todas las cosas de Apple. En este caso es comprensible, HFS es más similar a ext3 que a NTFS, desde los descriptores de seguridad como en general. Y dado que a fin de cuentas MAC OS es unix... Apple no podría usar NTFS ni FAT para nuestro dispositivo, sin cambiar el OS claro está. Lo que se traduce en una imposibilidad completa.

Por otro lado el detectar el PC como un pen sería tb una forma directa de realizar JB, lo cual otro punto más para afirmar que esta función jamás estará disponible.

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

Que es Samba?

Samba es una implementación abierta del protocolo SMB de Microsoft. SMB es el protocolo de MS que se encarga de conectar entre sí los PCs Windows para poder formar con ellos una red en la que poder compartir impresoras, archivos...

En entornos Unix que quieran convivir con Windows, necesitan de Samba para poder comunicarse con los otros equipos Windows.

Vamos a convertir realmente nuestro dispositivo en un Pen? no exactamente, aunque una vez configurado el dispositivo casi sí, y no solo eso, sino que podremos beneficiarnos de algunas características extras.

Para quien nunca haya tratado con redes domesticas en entornos windows, es muy facil. Tan solo yendo a "Redes" nos aparecerá nuestro grupo de trabajo y en él todas las estaciones conectadas. Cualquier equipo de esa red entonces puede si quiere compartir ciertos recursos, ya sean impresoras, carpetas, archivos... y otorgar si quiere o no los permisos pertinentes. Quizás queremos tener una carpeta compartida en la que se pueda escribir o eliminar desde cualquier PC conectado o tener acceso. Esto se traducirá para nosotros a poder meter o sacar cualquier cosa que deseemos del dispositivo con permisos de root, y todo ello desde el mismo explorador de windows como si de un Pen se tratase. La única diferencia es que en vez de conectarlo por USB se conectará por Wifi.

Igual que en un PC, se configurará Samba para dar acceso a unas carpetas u a otras, y adicionalmente especificar si se desea otorgar unos permisos u otros.

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

Visto esto tan solo queda comenzar.

En el repositorio de BigBoss tenemos un Samba reducido en funcionalidades pero para la gran mayoría lo preferirá así, por ser simple y no requerir configuraciones extras si no se desea. Vamos a Installer y lo instalamos.

Creo que por defecto no lo habilita, para ello podemos hacer uso de boospref (Creo q se llama) que permite habilitar o deshabilitar servicios. Si lo hacemos de ese modo será necesario tambien instalar la extensión de Samba para BossPref.

Para quien lo prefiera puede iniciarlo o detener el servicio Samba del dispositivo por SSH o terminal con el comando:

sh /usr/local/samba/smb.sh start

y para detenerlo

sh /usr/local/samba/smb.sh stop

Hasta aquí todo muy simple y sin complicaciones, pero lo normal es que queramos realizar algunso ajustes extras. No pongo imágenes de lo explicado porque creo que es lo más simple y básico que se despacha, no tenemso por ahroa complicación alguna.

Samba es altamente configurable, pero por ello mismo tambien puede ser un buen dolor de cabeza para quien no quiera complicaciones. Por eso la instalación de BigBoss es una muy buena implementación y configuración, de nuevo, para el usuario medio.

Samba quedará configurado por defecto de la siguiente forma:

Un usuario de acceso "root" con su contraseña "alpine" (estos credenciales son independientes a los de acceso por SSH)
El Cliente Samba será llamado (y será como se identifique para windows) como "iphone"
El grupo de trabajo al que se anclará será "WORKGROUP"
Por defecto se comparten las carpetas:

ROMs -> /var/root/Media/ROMs
PDF -> /var/root/Media/PDF
Ringtones -> /Library/Ringtones
Wallpapers -> /Library/Wallpaper
Fotos -> /var/root/Media/DCIM/100APPLE
Raiz -> /usr/local/samba/root
Aplicaciones -> /Applications | Para esta ultima carpeta, se le otorgan permisos 755


Todas las opciones se pueden por supuesto editar a mano. Este método si tiene la ventaja de que la configuración y la instalación se hace sobre nuestro propio dispositivo, y casi al 90% nos será posible acceder a él desde cualquier máquina Windows (o MAC) sin instalación de NADA , ni cable. Tan solo que tengan conexión wifi, puesto que el protocolo SMB está en todos los windows y MAC, con lo que nada más simple y cómodo para la gran mayoría. Tan solo confiurar Samba una vez y listo. Simplemente con la configuración por defecto podremos activar Samba y nos bastará con ir a "Mis sitios de red"en XP o "Red" en vista, y nos aparecerá nuestro dispositivo

Voy a poner un ejemplo de configuración personalizada en mi caso, que no quiere decir que sea la mejor. Al igual que he puesto la configuración por defecto que trae Samba, pondré la mía y por ende que archivo editar y como ponerlo.

En mi caso el nombre de usuario será root también. Para quien quiera crear un usuario nuevo es un poco "engorroso" ya q implica jugar con los identificadores de usuarios, puesto que si no no tendremos permisos de root. Daríamos de alta el usuario en el archivo "smbpasswd" que se encuentra en "/usr/local/samba/private", tal como haríamos en unix. Evidentemente el usuario dado de alta tendrá que tener el mismo uid que root para poder tener sus permisos y posiblemente implicaría también dar de alta el nuevo usuario en el archivo "master.passwd" de /private/etc que es donde se almacenan los credenciales del dispositivo. Como esto puede ser un poco feo, no pasa nada por dejar el mismo nombre de sesion

Por otro lado la contraseña. En este caso modificar la contraseña es mucho más simple, lo haremos por SSH con el comando:

"/usr/local/samba/smbpasswd"

Una vez tecleado y enter, nos pedirá la nueva contraseña.
Una vez modificado esto ya tendremos la seguridad necesaria para continuar.

Ahora modificaremos el archivo de configuración de samba para ajustarlo a nuestras necesidades. El archivo en cuestión será "smb.conf" que se encuentra en: /usr/local/samba/lib

En ese archivo estará todo, quitando tan solo contraseña y usuario que ya hemos explicado. Por defecto ese archivo es quien dicta la configuración por defecto (valga la redundancia). En mi caso la configuración será la siguiente:

[global]
workgroup = CASA
netbios name = Theliel
server string = "Theliel"
debug level = 0
interfaces = 192.168.0.4/24

Esa sería mi sección global. Mi grupo de trabajo no es por defecto el que pone MS Grupo_trabajo en su versión española o WORKGROUP en ingés. Así que modifico y pongo el mío.
"Netbios name" es el nombre por el cual Windows referenciará el dispositivo
"server string" es una pequeña descripción de todos los equipos con SMB
debug level 0 no es más que para evitar un exceso de logs
interface hace referencia a la interfaz wifi, ethernet... en el que se habilitará samba. Por defecto pone en0. en0 en teoría es la interfaz wifi, pero en las versiones de firmwares nuevas es posible que no nos sirva tan solo con poner en0. Así que para curarnos en salud ponemos la IP de nuestro dispositivo y la máscara. No voy a explicar mejor porqué la máscara es 24, pero es así. Escribir eso, es lo mismo que decir: IP: 192.1680.4 Máscara: 255.255.255.0m, y se abrevia: 192.168.0.4/24

Con esto tenemos solucionado el tema también de conexión e identificación, tan solo nos quedaría la parte donde especificamos que deseamos compartir:

[Documentos]
path = /var/mobile/Media/Documentos
valid users = root
read only = No

[Fotos]
path = /var/mobile/Media/DCIM/100APPLE
valid users = root
read only = No

[Root]
path = /usr/local/samba/root
valid users = root
read only = No

[Aplicaciones]
path = /Applications
valid users = root
read only = No
create mask = 0775

No creo que haga falta especificar linea a linea que es, puesto que es bastante implicito. Tan solo comentar que como esta versión salio para versiones anteriores a la 1.1.2, la ruta de las fotos es diferente, ahora está en mobile, no root como trae la configuración por defecto. Todas las carpetas tienen permisos de lectura y escritura, y la carpeta compartida Applications además tiene permisos 755, por si deseamos instalar manualmente cualquier app, con tan solo pegarla allí se establecerán los permisos en 755, más facil imposible. Para el resto de las carpetas los permisos serán los asignados normalmente, que si la memoria no me falla es 644

Una vez todos modificados según nuestras preferencías, tan solo tendremos que levantar el servicio como dijimos al comienzo y listo.

Ni que decir tiene que por seguridad cuando no estemos usando el servicio lo podemos deshabilitar:





Para acabar, decir que Samba no es tan solo un servidor, sino tambiíen un cliente. Esto quiere decir que de la misma forma que podemos acceder a los datos de nuestro dispositivo desde nuestra red local, tambien podríamos acceder desde nusetro dispositivo, ya sea desde terminal o SSH a los recursos de nuestra red, pero eso lo dejo para otro día ;)


Un saludo.

Edito: Creía que se encontraba en el repositorio de BigBoss, pero está en el de BigBoss beta:

http://sleepers.net/iphonerepobeta

O si se quiere obtener e instalar manualmente, aunq es un poco coñazo ya que hay que crear algunso enlaces simbolicos y no se instala en Applications... pero de todos modos dejo el paquete para quien quiera experimentar:

http://thebigboss.org/repofiles/bigboss/samba.zip

Y por último, aprovecho para subir la versión completa de Samba:

http://www.wickedpsyched.net/iphone/webfm_send/166

17 comentarios:

Anónimo dijo...

Theliel, muchas gracias por tan buen tutorial, de verdad que mejor explicado no puede estar! Solo una pregunta, no he encontrado Samba como aplicacion, solo la activacion en Boss Prefs, podrias indicarme como bajarla para subirla por ssh? ya hice refresh a sources y nada!! De antemano gracias!! Saludos

Theliel dijo...

Creo que está en el repositorio de BigBoss y no es algo nuevo, es bastante antiguo...

"Samba File Server"

Pero tienes razón, está en el repo de BigBoss beta, lo pongo en el post mejor, lo edito y lo pongo arriba.


Repo: http://sleepers.net/iphonerepobeta

Y descarga:
http://thebigboss.org/repofiles/bigboss/samba.zip

En este caso lo mejor sería usar el installer, sino, por instalación manual hay q modificar algunas cosas, crear un par de enlaces simbolicos y tal

Anónimo dijo...

Gracias por tan rapida respuesta theliel, te comento que ya pude encontrar la app en el installer y de hecho ya la instalé, solo una duda, la aplicacion aparece en el springboard? es que aca ya esta instalada y no me aparece un icono especifico, solo la opcion que ya habia instalado en boss prefs. Gracias y saludos!!

Theliel dijo...

no claro, no hay ningun icono. Como he dicho lo habilitas o lo deshabilitas con los controles de bosspreff o manualmente.

Theliel dijo...

Yo uso normalmente de todos modos mejor que bosspref netServices, no tengo q instalar nada más y tengo mcuhas posibilidades adicionales, pero eso es mis gustos

Anónimo dijo...

Perfecto entonces ahora si a probar samba, ya contaré que tal me va! Saludos y gracias por la atención!

migueluchi dijo...

IMPECABLE!!
Ahora... si quisieras usar el dispositivo para almacenar datos... habría que crear algun directorio... no? Donde sería adecuado crearlo para no afectar el uso del telefono y las aplicaciones instaladas o por instalar?

DESDE YA MUCHAS GRACIAS.
Y FELICITACIONES...
MUY BUEN BLOG...

Theliel dijo...

Hombre, normalmente se pueden crear las carpetas en la particion de datos

/private/var/ y si quierer ser ordenado en /private/var/mobile/media/documentos por ejemplo

Unknown dijo...

Mis panas, quisiera que me ayudaran con lo siguiente. Tengo un iPhone con 2.1. sigo tu tutorial exactamente como lo colocas y siempre que intento iniciar el servicio me sale los siguiente:

/usr/local/samba/smb.sh line 5: 233 Killed /usr/local/samba/smbd -D
/usr/local/samba/smb.sh line 5: 234 Killed /usr/local/samba/nmbd -D

Si pudieras ayudarme te lo agradeceria mucho.
Saludos

Theliel dijo...

Desde la versión 2.x cualquier aplicación que quiera ser ejecutada debe de ser firmada anteriormente por Apple. Gracias al JB se permite ejecutarlas sin estar firmadas por Apple, pero tienen que tener alguna firma.

Esto es una de las medidas que se tomaron. No quiere decir que tan solo con el firmado sea suficiente.

Para firmar una aplicación tendrás que teclear:

ldid -s [archivo], evidentemente tendrás que tener instalado previamente ldid

Anónimo dijo...

Gracias por la pronta respuesta, por favor me puedsdecircomo instalar el ldid, por cydia o el instaler?

Gracias brother.

Theliel dijo...

Cydia por supuesto.

Se instala al instalar... no recuerdo que paquete. Creo que era el paquete de desarrollador de Cydia. ocupaba un mucho. Yo lo que hice fue hace tiempo sacarlo de él, y simplemente lo paso desde mi PC.

Anónimo dijo...

Buenisimo , gracia bro

Puedes publicarlo para bajarlo, y asi lo paso desde mi maquina al iphone.

Grcias de nuevo men

Theliel dijo...

Hace tiempo que decidí no hacer ningun repo en Installer. Podría hacerlo en Cydia, pero el tema está congelado por imposibilidad mía de tener acceso rapido ahora mismo a u equipo con las herramientas adecuadas para terminar de hacerlo.

De todos modos si con firmarlo has tenido suficiente perfecto desde luego ;).

Anónimo dijo...

mi pana no encuentro como instalar el ldid, busco ese paquete de desarrollador cydia y no lo encuentro. help me please. disculpa tanta molestia

Anónimo dijo...

mi pana ya consegui el ldid, si me crea la firma. pero ahora me sale el mensaje siguiente:

dyld: Library not loaded: /usr/lib/libgcc_s_v6.1.dylib
Referenced from: /usr/local/samba/nmbd
Reason: image not found

se qeu es una libreria qeu falta, estuve navegando un rato pero no consigo para vajarlo y copiarlo manualmente.

Pienso que tambien es probable que tenga otras dependencias.

Dame letra mi pana y muchas gracias

Carlso A

Anónimo dijo...

Mi estoy estancado con lo de samba, no se donde puedo conseguir esas librerias que faltan para qeu corra el samba, por favor te agradezco mucho tu ayuda.

Muchas gracias!!!!

 
Creative Commons License
Esta obra está bajo una licencia de Creative Commons.