Nein, nein, nein, nein ... ihr gebt ja einen Haufen Tips "umzu", wobei das Ziel unklar ist.
Also:
* Es gibt shares, die sind für Alle les-, schreibbar und sichtbar.
* Es gibt shares, die sind für Alle les, aber nur mit login schreibbar. Sichtbar für alle.
* Es gibt shares, die sind nur mit Login les- und schreibbar, aber sichtbar für alle.
* Es gibt shares, die sind nur mit Login les- und schreibbar und nicht sichtbar
Anm.: "sichtbar" bedeutet, das ich den Server abfragen kann, welche Shares er zur Verfügung stellt.
Sodale ... pro share kann man da so in der /etc/samba/smb.conf drehen:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
|
[einshare]
comment = das ist halt so ein share eben
path = /home/smb/einshare
force group = users
read only = No
create mask = 0775
directory mask = 0775
guest ok = yes
browseable = yes
read list = nobody, @unwanted
|
Da steht:
* [einshare] ... Name des Shares wie er zur Verfügung getsellt wird
* comment ... Nun ja ... selbsterklärend
* path ... wo befinden sich das Verzeichnis auf dem Filesystem des Servers
* force group ... User loggen sich ein und werden jedenfalls
dieser gruppe zugewiesen. Bedeutet: jedes File, welches der User anglegt, bekommt diese Gruppe. Auch müssen die Gruppen-Rechte im Dateisystem dazu passen.
* read only ... Nur lesen?
* create mask ... wenn eine Datei erzeugt wird, bekommt die diese Permissions
* directory mask ... wenn (Unter-)Verzeichnis angelegt wird, bekommt es diese Permissions
* guest ok ... darf sich ein Gast (ohne password) einloggen oder nicht
* browseable ... ist dieser shaer nach aussen sichtbar
* read list ... liste von user (oder gruppen mit fürhendem '@') die
trotz "read only = no" nur lesen dürfen.
Das geht NUR im modus "security = user" (oder domain, ads). NICHT bei security = share
Es gibt da natürlich noch ein Haufen config-vars mehr. Und viele sind redundant.
So kann nun eine /etc/samba/smb.conf so aussehen:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
[global]
workgroup = WORKGROUP
server string = DEMANDREAD
security = user
encrypt passwords = Yes
guest account = nobody
map to guest = Bad User
interfaces = lo, eth0, eth1
bind interfaces only = Yes
log level = 3
log file = /var/log/samba/samba.log
max log size = 1000
debug uid = Yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
domain master = No
dns proxy = No
ldap ssl = no
invalid users = root
create mask = 0774
force create mode = 0775
force directory mode = 0775
force directory security mode = 0775
case sensitive = No
hide special files = Yes
wide links = No
follow symlinks = No
unix password sync = No
unix extensions = No
|
Der Server heißt DEMANDREAD. Der Security-Modus ist auf "user". Damit kann ich genau festlegen, wer in welchem share schreiben/lesen darf.
Damit der guest bei "security = user" überhaupt funkt, muß er 1. auf einen existierenden User mappen und 2. von samba nicht sofort abgewürgt werden. Das erledigen die Zeilen
|
Quellcode
|
1
2
|
guest account = nobody
map to guest = Bad User
|
Im Normalfall mapped "map to guest" nämlich auf "None", was den User sofort rausschmeißt, es sei denn man verwendet "security = share".
Jetzt mal ein share auf dem alle zugreifen dürfen (guests und normal user). Außerdem ist der share sichtbar:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
|
[copy]
comment = public copy share
path = /home/smb/copy
force group = users
read only = No
create mask = 0775
directory mask = 0775
guest ok = yes
browseable = yes
|
Hier ein share, der nur eingeloggte User erlaubt:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
|
[docs]
comment = some docs
path = /home/smb/docs
force group = users
read only = No
create mask = 0775
directory mask = 0775
guest ok = no
browseable = yes
|
Ein share, welcher für eingeloggte user alles bietet, aber Guests dürfen NUR lesen (das geht nur bei "security = user"):
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
|
[readonly]
comment = readonly share for guests
path = /home/smb/readonly
force group = users
read only = No
create mask = 0775
directory mask = 0775
guest ok = yes
browseable = yes
read list = nobody
|
Der Trick dabei ist: guest mapped auf "nobody" und DER ist in der "read list" ...
Ein share der nicht sichtbar ist:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
|
[secrets]
comment = some secrets
path = /home/smb/secrets
force group = users
read only = No
create mask = 0775
directory mask = 0775
guest ok = no
browseable = no
|
Bevor man nun all dies adjustiert und danach weiterverzeifelt, muß man folgendes wissen: Samba speichert in /var/cache/samba die Security-relevanten Daten zu den Shares und Usern. Die SIDs und all das Zeugs. Daher ... für einen guten Neustart eines Samba-Systems ... als ordentlichen Rausputz ...
|
Quellcode
|
1
2
3
|
# /etc/init.d/samba stop
# rm -rdf /var/cache/samba
# /etc/init.d/samba start
|
Dabei sollte allerdings niemand gerade eingeloggt sein ... :rolleyes:
Check was geht mit
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
$ smbclient -N -L localhost
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.31]
Sharename Type Comment
--------- ---- -------
copy Disk public copy share
docs Disk some docs
readonly Disk readonly share for guests
IPC$ IPC IPC Service (DEMANDREAD)
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.31]
Server Comment
--------- -------
DEMANDRED DEMANDREAD
Workgroup Master
--------- -------
WORKGROUP DEMANDRED
|
Der "secrets"-Share wird erwartungsgemäß nicht aufgelistet.
Der User muß dem Samba noch bekannt gemacht werden:
|
Quellcode
|
1
2
|
# smbpasswd -a dyle
# smbpasswd -e dyle
|
Einen mount kann man nun so durchführen ... als user ...
|
Quellcode
|
1
|
$ sudo mount -t cifs //localhost/copy copy -o domain=WORKGROUP,user=dyle,uid=dyle,gid=users
|
Die Options hinten dran sind wichtig, weil:
* ohne domain=.... macht CIFS regelmäßig Ärger und läßt einem nicht einloggen
* user= ... (selbsterklärend, oder?)
* uid=... und gid=... mit diesen User/Group wird das System
im lokalen DateiSystem eingehängt. Würde das fehlen, so ist uid=0 und gid=0, da das Kommando als root (sudo) exekutiert wird. Je nach root-mask (meist 755 mit root:root) darf man nur auf die Dateien lesend zugreifen,
obwohl man im Samba alle Rechet hätte ... das Problem ist dabei nicht Samba, sondern die Rechte im eigenen Dateisystem ...
Alsguest-Account (THEORETISCH) so:
|
Quellcode
|
1
|
$ sudo mount -t cifs //localhost/copy copy -o domain=WORKGROUP,guest,uid=dyle,gid=users
|
ABER: gerade da ist das mount.cifs noch ULTRA-Buggy und schickt recht viel Müll zum Samba rauf, so das man leider so nicht ein System als guest mounten kann :evil:
Man kann aber bsp. im Konqueror in der Locationbar eingeben
|
Quellcode
|
1
|
smb://guest@localhost/
|
und sieht dann, das es so klappt und lesen/schreiben dort zuläßt, wo man darf/nicht darf.
Was dabei für den Threadersteller? Hm?
--- Sollte vielleicht ein HowTo daraus bauen, hm ... :huh: ---