LX-SVS-INFO-samba-client
Updated sep/23/10 7:00
Samba is de linux naam voor windows file en printer sharing. SMB staat voor Server Message Block. Voor de uitspraak heeft Andrew Tridgell, de bedenker en developper van samba, daar in de jaren negentig klinkers aan toegevoegd.
Netbios, SMB en CIFS behoren alle tot dezelfde protocolfamilie.
wikipedia:
http://en.wikipedia.org/wiki/Samba_software
http://en.wikipedia.org/wiki/Server_Message_Block
http://en.wikipedia.org/wiki/Netbios
http://en.wikipedia.org/wiki/LAN_Manager
http://en.wikipedia.org/wiki/Andrew_Tridgellsmbclient is een softwarepakket dat ikzelf voornamelijk gebruik om samba te debuggen. Dat is dikwijls nodig zowel bij microsoft als linux servers. Vaak zijn er problemen met inloggen en/of met gebruikersrechten. smbclient is dan een eerste toevluchtsoord.
Met smbclient kan je ook snel kijken wat er op een server te vinden is, of iets down-/uploaden, zonder de share te mounten.
We beginnen met de installatie van smbclient.
# apt-get install smbclient
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
smbclient
0 upgraded, 1 newly installed, 0 to remove and 9 not upgraded.
Need to get 0B/6305kB of archives.
After this operation, 18.7MB of additional disk space will be used.
Selecting previously deselected package smbclient.
(Reading database ... 103845 files and directories currently installed.)
Unpacking smbclient (from .../smbclient_2%3a3.2.5-4lenny9_i386.deb) ...
Processing triggers for man-db ...
Setting up smbclient (2:3.2.5-4lenny9) ...
In dit voorbeeld is het ip adres van de server 172.16.31.2, er is een share intec en een user jan wil deze share gebruiken:
$ smbclient //172.16.31.2/intec -U jan
Enter jan's password: <ENTER>
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.2.5]
tree connect failed: NT_STATUS_ACCESS_DENIED
Inderdaad, de user jan bestaat niet op de server ..., smbclient schakelt over op anonymous en die toegang wordt geweigerd. We proberen opnieuw met user karl:
$ smbclient //172.16.31.2/brussel -U karl
Enter karl's password: <ENTER>
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.2.5]
tree connect failed: NT_STATUS_BAD_NETWORK_NAME
Er is geen share met de naam brussel ...
we proberen opnieuw:
$ smbclient //172.16.31.2/intec -U karl
Enter karl's password: sdf12345
Domain=[PC3102] OS=[Unix] Server=[Samba 3.2.5]
smb: \> ls
. D 0 Tue Jun 1 11:42:57 2010
.. D 0 Tue Jun 1 11:42:43 2010
ytfile 0 Tue Jun 1 11:42:57 2010
45091 blocks of size 131072. 15209 blocks available
smb: \> ?
? allinfo altname archive blocksize
cancel case_sensitive cd chmod chown
close del dir du echo
exit get getfacl hardlink help
history iosize lcd link lock
lowercase ls l mask md
mget mkdir more mput newer
open posix posix_encrypt posix_open posix_mkdir
posix_rmdir posix_unlink print prompt put
pwd q queue quit rd
recurse reget rename reput rm
rmdir showacls setmode stat symlink
tar tarmode translate unlock volume
vuid wdel logon listconnect showconnect
.. !
smb: \> quit
Nu we met succes een share hebben getest, kunnen we deze mounten op onze client.
We gebruiken cifs (common internet filesystem) Maak eventueel eerst mountpoint met mkdir:
# mkdir /intec
# mount -t cifs //172.16.31.2/intec /intec
mount: wrong fs type, bad option, bad superblock on //cassandra/images,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.<type> helper program)
In some cases useful info is found in syslog - try
dmesg | tail or so
We verwijderen eerst de oorspronkelijke mount:
# umount /intec
Daarna voegen we wat extra opties toe:
# mount -t cifs -o user=karl,pass=sdf12345,uid=1000,gid=1000,rw //172.16.31.2/intec /intec
user |
de useraccount om in te loggen |
pass |
het paswoord om in te loggen |
uid |
de lokale uid (zie /etc/passwd) die eigenaar wordt van de mount |
gid |
de lokale gid van de eigenaar van de mount |
rw |
mount read-write |
In de file /etc/fstab kunnen we de mount permanent maken:
//172.16.31.2/intec /intec cifs user=karl,pass=sdf123245,uid=1000,gid=1000 0 0
Je kan de credentials plaatsen in een aparte en hidden file /root/.creds
Die file geef je lees/schrijf rechten geven voor alleen root (rw-------).
In fstab krijgen we dan:
//172.16.31.2/intec /intec cifs credentials=/root/.creds,uid=1000,gid=1000,rw 0 0
en de inhoud van /root/.creds wordt dan
username=karl
password=sdf12345
Volgens de literatuur heeft het geen zin een cifs paswoord te versleutelen, aangezien het toch ongecrypteerd wordt verstuurd over het netwerk, en zo kan worden gesnift.