Desde o OS X 10.7(*) que tenho tido alguns problemas na partilha de ficheiros entre o meu MacBook e os PCs com o Windows da empresa (a única excepção é o PC com o Ubuntu Linux - parece que foram feitos um para o outro ;), sobretudo no acesso às pastas partilhadas via conta "guest". Recorrendo ao Google, tenho arranjado algumas soluções provisórias/imediatas, nomeadamente através de pequenos "tweaks" no registry (ver exemplo
aqui).
Farto de procurar por "remendos", resolvi instalar a versão open source do Samba 3 e, até agora, parece que todos os problemas de compatibilidade foram resolvidos :) Os PCs com o Windows já encontram e acedem de imediato à minha pasta "pública", incluindo via conta "guest". Também o acesso às impressoras partilhadas parece ser agora mais rápido.
Para quem quiser experimentar, aqui ficam os passos que eu dei:
1.- Confirmar que a opção "File Sharing" está desactivada (System Preferences, Sharing).
2.- Desactivar o serviço
com.apple.netbiosd (Apple's SMB server)
~$ sudo mv /System/Library/LaunchDaemons/com.apple.netbiosd.plist com.apple.netbiosd.bak
3.- Reiniciar.
4.- Instalar o Samba 3 no OS X via
MacPorts
~$ sudo port install samba3
5.- Copiar
smb.sample para
smb.conf
~$ sudo cp /opt/local/etc/samba3/smb.conf.sample /opt/local/etc/samba3/smb.conf
6.- Editar/configurar
smb.conf (configuração de modo a permitir o acesso "guest")
~$ sudo nano /opt/local/etc/samba3/smb.conf
#======================= Global Settings =====================================
[global]
workgroup = WORKGROUP
server string = Samba Server on (%L)
netbios name = gandalf
security = user
Map to guest = Bad User
...
#============================ Share Definitions ==============================
...
[share]
comment = MacBook
path = /Users/Shared/share
browseable = yes
guest ok = yes
create mask = 644
directory mask = 755
read only = no
7.- Iniciar samba3
~$ sudo /opt/local/sbin/smbd -D && sudo /opt/local/sbin/nmbd -D
There.
(*) Apple replaces Samba for Windows networking services (because of GPLv3).
Inicar/parar serviço via
launchctl:
~$ sudo launchctl start|stop org.samba.nmbd
~$ sudo launchctl start|stop org.samba.smbd
Ficheiros (serviço):
1.- Criar ficheiro
org.samba.nmbd.plist:
~$ sudo nano /Library/LaunchDaemons/org.samba.nmbd.plist
2.- Copy/paste:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.samba.nmbd</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/opt/local/sbin/nmbd</string>
<string>-F</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceDescription</key>
<string>netbios</string>
</dict>
</plist>
3.- Criar ficheiro
org.samba.smbd.plist:
~$ sudo nano /Library/LaunchDaemons/org.samba.smbd.plist
4.- Copy/paste:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.samba.smbd</string>
<key>OnDemand</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/opt/local/sbin/smbd</string>
<string>-Fs</string>
<string>/opt/local/etc/samba3/smb.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceDescription</key>
<string>samba</string>
</dict>
</plist>
5.- Reiniciar.
Ficheiro applescript (por ex., para correr em contas "standard"):
display dialog "Samba3 disabler.
Version 1.1.1
Support for Lion/Mountain Lion." buttons {"Enable", "Disable", "Cancel"} with icon stop
set userChoice to button returned of result
if userChoice = "Enable" then
do shell script "launchctl load -w /Library/LaunchDaemons/org.samba.nmbd.plist" with administrator privileges
do shell script "launchctl load -w /Library/LaunchDaemons/org.samba.smbd.plist" with administrator privileges
do shell script "launchctl start org.samba.nmbd" with administrator privileges
do shell script "launchctl start org.samba.smbd" with administrator privileges
else if userChoice = "Disable" then
do shell script "launchctl stop org.samba.nmbd" with administrator privileges
do shell script "launchctl stop org.samba.smbd" with administrator privileges
do shell script "launchctl unload -w /Library/LaunchDaemons/org.samba.nmbd.plist" with administrator privileges
do shell script "launchctl unload -w /Library/LaunchDaemons/org.samba.smbd.plist" with administrator privileges
else if userChoise = "Cancel" then
return
end if
# edit 27/05/2013