stn21
Anmeldungsdatum: 25. Oktober 2007
Beiträge: 217
|
Moin, kann mir jemand sagen was hier los ist? In einem Ordner auf dem Server, der mit Samba freigegeben ist, sind symbolische Links.
Diese zeigen auf Dateien und Ordner auf einem anderen Dateisystem auf dem Server. Letztere Ordner sind nicht freigegeben und können nur über den symbolischen Link erreicht werden.
( zb: ln -s /home/user/meinedatei /samba-freigabe/link-to-meinedatei ) Wenn man nun mit Windows auf die Freigabe zugreift kann man die verlinkte Datei ( hier /home/user/meinedatei ) öffnen, bearbeiten etc, je nach Rechten natürlich. Die Datei erscheint so, als ob sie im freigegebenen Ordner wäre. Anders gesagt: alles ist wie man es erwartet. Dummerweise geht das aber nicht, wenn man von einem Ubuntu-Client darauf zugreift: PC # mount -t cifs //<server>/<freigabe> mnt/ -o username=werauchimmer,password="geheim"
PC # cat mnt/link-to-meinedatei
cat: mnt/link-to-meinedatei: No such file or directory
PC # dir -ld mnt/link-to-meinedatei
lrwxrwxrwx 1 user users 13 2010-02-28 14:07 mnt/link-to-xx -> /home/user/meinedatei TIA, stn
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 7992
|
Dummerweise geht das aber nicht, wenn man von einem Ubuntu-Client darauf zugreift
Soll auch gar nicht gehen, wenn die Ziele der Softlinks außerhalb des freigegebenen Bereichs liegen. Dafür sorgen die cifs-UNIX-Extensions. Die UNIX-Extensions lassen sich aber mit der Mount-Option nounix abschalten. Dann müsste sich Ubuntu gleich verhalten wie Windows (allerdings auch die Rechte-Verwaltung auf dem Server nicht erkennen). Gruß - Max-Ulrich
|
stn21
(Themenstarter)
Anmeldungsdatum: 25. Oktober 2007
Beiträge: 217
|
Max-Ulrich Farber schrieb: ... Die UNIX-Extensions lassen sich aber mit der Mount-Option nounix abschalten. Dann müsste sich Ubuntu gleich verhalten wie Windows (allerdings auch die Rechte-Verwaltung auf dem Server nicht erkennen).
Hallo Max-Ulrich, danke für den Tipp. Leider geht das auch nicht, ist eher noch unverständlicher. Immerhin, es tut sich was. Die Fehlermeldung ist eine andere ("... Not a directory") und "dir -l" zeigt nicht mehr die Datei als Link an (es fehlt das → /home/user/meinedatei). PC # mount -t cifs //<server>/<freigabe> mnt/ -o nounix,username=werauchimmer,password="geheim"
PC # cat mnt/link-to-meinedatei
cat: mnt/link-to-meinedatei: Not a directory
PC # dir -l mnt/link-to-meinedatei
-rwxrwSrwx 1 root root 6 2010-02-28 15:46 mnt/link-to-meinedatei
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 7992
|
Das ist schon ein bisschen komisch. Zunächst: Warum nimmst Du als Mountpunkt den ganzen Systemordner /mnt und nicht, wie üblich, einen neuen Ordner innerhalb /mnt oder /media? Dann: Arbeitest Du grundsätzlich als "Root" mit einem eigenen Root-Account? In Ubuntu ist das jedenfalls nicht der übliche Weg.
PC # dir -l mnt/link-to-meinedatei
-rwxrwSrwx 1 root root 6 2010-02-28 15:46 mnt/link-to-meinedatei
Ich verstehe nicht, warum da das SUID-Bit bzw. SGID-Bit gesetzt ist. - Was ist das denn für ein Server, und was für eine Samba-Version läuft dort? Was für ein Dateisystem hat die freigegebene Partition? Eventuell müsste man auch auf dem Server die UNIX-Extensions deaktivieren (Zeile unix extensions = no im Teil [global] der smb.conf). Doch AFAIK reicht nounix auf dem Client. Gruß - Max-Ulrich
|
stn21
(Themenstarter)
Anmeldungsdatum: 25. Oktober 2007
Beiträge: 217
|
Max-Ulrich Farber schrieb: Das ist schon ein bisschen komisch. Zunächst: Warum nimmst Du als Mountpunkt den ganzen Systemordner /mnt und nicht, wie üblich, einen neuen Ordner innerhalb /mnt oder /media?
Es handelt sich um ist "./mnt", nicht "/mnt". Ich habe versucht, die Darstellung fürs Forum maximal zu vereinfachen. Dann: Arbeitest Du grundsätzlich als "Root" mit einem eigenen Root-Account? In Ubuntu ist das jedenfalls nicht der übliche Weg.
Siehe oben, maximale Vereinfachung der Darstellung. Zu Diskussion über Linux-Sicherheit würde ich anregen, einen neuen Thread aufzumachen.
PC # dir -l mnt/link-to-meinedatei
-rwxrwSrwx 1 root root 6 2010-02-28 15:46 mnt/link-to-meinedatei
Ich verstehe nicht, warum da das SUID-Bit bzw. SGID-Bit gesetzt ist.
Die Bits verschwinden, wenn man die Option nounix weglässt - Was ist das denn für ein Server, und was für eine Samba-Version läuft dort? Was für ein Dateisystem hat die freigegebene Partition?
Server: Bis vor kurzem Ubuntu 9.04, jetzt SuSe 11.2. Die Situation ist auf beiden Systemen exakt die selbe.
Dateisystem: ext3 Brauchst Du weitere Angaben? Eventuell müsste man auch auf dem Server die UNIX-Extensions deaktivieren (Zeile unix extensions = no im Teil [global] der smb.conf). Doch AFAIK reicht nounix auf dem Client.
OK, teste ich ... Gruß, stn
|
stn21
(Themenstarter)
Anmeldungsdatum: 25. Oktober 2007
Beiträge: 217
|
Max-Ulrich Farber schrieb:
Eventuell müsste man auch auf dem Server die UNIX-Extensions deaktivieren (Zeile unix extensions = no im Teil [global] der smb.conf).
Diese Maßnahme ist gleichwertig mit der Mount-Option "nounix".
Sowohl die Nicht-Anzeige des Links als auch die zusätzlichen Bits sind da # MIT "unix extensions = no" in smb.conf, dann restart samba, dann erst Mount:
PC ~ # mount -t cifs //server/freigabe mnt/ -o username=...,password=""
PC ~ # dir mnt/link-to-meinedatei -l
-rwxrwSrwx 1 root root 6 2010-02-28 15:46 mnt/link-to-meinedatei
# OHNE "unix extensions = no" in smb.conf, dann restart samba, dann erst Mount:
PC ~ # umount mnt
PC ~ # mount -t cifs //server/freigabe mnt/ -o username=...,password=""
PC ~ # dir mnt/link-to-meinedatei -l
lrwxrwxrwx 1 root root 21 2010-02-28 15:46 mnt/link-to-meinedatei -> /home/user/meinedatei
Zugriff auf /home/user/meinedatei ist nach wie vor nur mit dem Windows-Client möglich 😕
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 7992
|
Zu Diskussion über Linux-Sicherheit würde ich anregen, einen neuen Thread aufzumachen.
Es ging mir dabei weniger um die Sicherheit als um die Zugriffsrechte. Ich habe nochmal nachgelesen. Es sollte wirklich so gehen, wie ich gesagt habe: UNIX-Extensions deaktivieren, und dem Link wird auf dem Server gefolgt. Wie von einem Windows-Client aus. Was mich irritiert ist das SUID- bzw. SGID-Bit bei dem Link. Klar dass das nicht da ist mit den UNIX-Extensions, denn da bleibt der Link auf dem Client und läuft dort ins Leere. Irgendwas ist komisch auf dem Server, oder die Samba-Versionen verstehen einander nicht richtig. Ich nehme aber nicht an, dass mit Deinem SuSe 11.2. noch ein Samba 2 läuft (?). In der Datei smb.conf kann man ja auf dem Server auch einstellen, was mit Links geschehen soll (Parameter follow symlinks = yes/no ): follow symlinks (S)
This parameter allows the Samba administrator to stop smbd(8) from following symbolic links in a particular share.
Setting this parameter to no prevents any file or directory that is a symbolic link from being followed (the user will get an error)
Doch zumindest in Ubuntu ist yes Standard. Könntest Du bitte 'mal den Eintrag in smb.conf für die Freigabe, in der sich der Link befindet, posten? Oder noch besser, die ganze smb.conf. Vielleicht ist da was auffällig. Gruß - Max-Ulrich
|
stn21
(Themenstarter)
Anmeldungsdatum: 25. Oktober 2007
Beiträge: 217
|
Max-Ulrich Farber schrieb:
Was mich irritiert ist das SUID- bzw. SGID-Bit bei dem Link. Klar dass das nicht da ist mit den UNIX-Extensions, denn da bleibt der Link auf dem Client und läuft dort ins Leere. Irgendwas ist komisch auf dem Server, oder die Samba-Versionen verstehen einander nicht richtig. Ich nehme aber nicht an, dass mit Deinem SuSe 11.2. noch ein Samba 2 läuft (?).
Nö. server:/home/user # smbd --version
Version 3.4.2-1.1.3.1-2229-SUSE-SL11.2
In der Datei smb.conf kann man ja auf dem Server auch einstellen, was mit Links geschehen soll (Parameter follow symlinks = yes/no ):
follow symlinks (S)
Doch zumindest in Ubuntu ist yes Standard.
Es ist. Sowohl bei SuSE als auch Ubuntu. Für "follow symlinks" und "wide links". Wenn man nur eins von beiden auf "No" stellt geht auch der Windows-Client nicht mehr. Beide ausdrücklich auf "yes" stellen (bei den Shares) ändert nichts. Könntest Du bitte 'mal den Eintrag in smb.conf für die Freigabe, in der sich der Link befindet, posten? Oder noch besser, die ganze smb.conf. Vielleicht ist da was auffällig.
# smb.conf is the main Samba configuration file. You find a full commented
# version at /usr/share/doc/packages/samba/examples/smb.conf.SUSE if the
# samba-doc package is installed.
# Date: 2009-10-27
[global]
workgroup = WORKGROUP
passdb backend = tdbsam
printing = cups
printcap name = cups
printcap cache time = 750
cups options = raw
map to guest = Bad User
include = /etc/samba/dhcp.conf
logon path = \\%L\profiles\.msprofile
logon home = \\%L\%U\.9xprofile
logon drive = P:
usershare allow guests = Yes
add machine script = /usr/sbin/useradd -c Machine -d /var/lib/nobody -s /bin/false %m$
domain logons = Yes
domain master = Yes
local master = Yes
netbios name = server
os level = 65
preferred master = Yes
security = user
usershare max shares = 100
wins support = No
unix extensions = yes
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[profiles]
comment = Network Profiles Service
path = %H
read only = No
store dos attributes = Yes
create mask = 0600
directory mask = 0700
[users]
comment = All users
path = /home
read only = No
inherit acls = Yes
veto files = /aquota.user/groups/shares/
[groups]
comment = All groups
path = /home/groups
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @ntadmin root
force group = ntadmin
create mask = 0664
directory mask = 0775
[freigabe]
inherit acls = Yes
path = /media/freigabe
read only = No
guest ok = Yes
# follow symlinks = Yes
# wide links = Yes
[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
write list = root
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 7992
|
An der smb.conf fällt mir nichts auf. Ich weiß also nicht, warum den Softlinks bei deaktivierten UNIX-Extensions nicht korrekt gefolgt wird. Wird den Links denn gefolgt, wenn Du auf dem Linux-Client statt über cifs über gvfs (z.B. Nautilus mit smb://<Server>/<Freigabe> ) zugreifst? Du kannst jetzt auch mal mit folgenden Mount-Optionen etwas planlos herumprobieren; kaputtmachen kannst Du damit nichts: nodfs,noserverino,directio . Allzu viel verspreche ich mir davon allerdings nicht. Falls es je gehen sollte, berichte bitte wieder darüber. Gruß - Max-Ulrich EDIT: Wenn alle Stricke reißen, gibt es statt der Softlinks noch die Alternative mit mount --bind . Ist aber etwas umständlich, wenn es sich um viele Links handelt. Doch es müsste eigentlich auch anders gehen! Eben kommt mir noch ein Gedanke: Du hast inherit acls = yes gesetzt, d.h. es gibt wahrscheinlich ACLs für die Freigabe und den Softlink. Könnte dadurch irgendwie eine Fehlinterpretation bewirkt werden?
|
stn21
(Themenstarter)
Anmeldungsdatum: 25. Oktober 2007
Beiträge: 217
|
Max-Ulrich Farber schrieb: Wird den Links denn gefolgt, wenn Du auf dem Linux-Client statt über cifs über gvfs (z.B. Nautilus mit smb://<Server>/<Freigabe> ) zugreifst?
Ja, das geht. Super. Allerdings verwende ich die Dateien häufig via Kommandozeile, zb Scripte. Kann man gvfs-mounts irgendwie per Kommandozeile oder in fstab oder so anlegen und sie als Ordner einhängen, so wie mit mount? Mit dem Programm gvfs-mount komme ich nicht klar, keine manpage und --help ist nicht hilfreich.
|
stn21
(Themenstarter)
Anmeldungsdatum: 25. Oktober 2007
Beiträge: 217
|
Nur zur Sicherheit habe ich auf einem anderen PC ein frisches Ubuntu 9.10 installiert. Dort habe ich lediglich noch smbfs installiert und natürlich samba und dann per GUI einen Ordner freigegeben. Sonst habe ich NICHTS verändert, weder an smb.conf noch sonstwo im System. Dann habe ich im freigegebenen Ordner symlinks angelegt und versucht, von verschiedenen Clients (ubuntu und suse) darauf zuzugreifen. Ebenso habe ich von dem "Neuen" aus versucht, auf die bereits diskutierten Freigaben zuzugreifen. In allen Fällen war das Ergebnis wie oben beschrieben. Was ich damit sagen will: es liegt nicht an irgendwelchen Änderungen, die ich gemacht habe.
Ubuntu "jungfräulich" verhält sich genau so. Gibt es jemand, bei dem der Zugriff auf symlinks vom Ubuntu-Client auf Samba-Server tatsächlich funktioniert? Eben kommt mir noch ein Gedanke: Du hast inherit acls = yes gesetzt, d.h. es gibt wahrscheinlich ACLs für die Freigabe und den Softlink. Könnte dadurch irgendwie eine Fehlinterpretation bewirkt werden?
Ich glaube nicht. Auf dem o.g. Neuen Ubuntu habe ich keine derartige Einstellung vorgenommen.
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 7992
|
Ich habe es jetzt selbst auch probiert. Genau das gleiche Ergebnis: Auch mit deaktivierten UNIX-Extensions wird den Symlinks, die aus einer Freigabe hinausweisen, nicht gefolgt. Bei mir ging es auch mit gvfs (Nautilus) nicht. Ich weiß nicht, ob es unter den 1001 Optionen der smb.conf noch irgendeine Einstellung gibt, die das ändern könnte. Ich kenne jedenfalls keine. Dann bleibt also nur der Umweg über mount --bind . Der klappt, das weiß ich. Näheres dazu steht hier. Gruß - Max-Ulrich EDIT: Vielleicht kann der Unterschied bei gvfs daran liegen, dass einmal relative und einmal absolute Softlinks verwendet wurden? Ich habe nicht weiter geforscht.
|
stn21
(Themenstarter)
Anmeldungsdatum: 25. Oktober 2007
Beiträge: 217
|
Ich fass es nicht. Jetzt gehts. Keine Ahnung, was vorher los war 👿 @Max-Ulrich: danke für die Tipps. Es waren die unix-extensions. Zusammenfassung, nur wegen der Eindeutigkeit: Ein cifs/smb-Client unter Linux folgt symbolischen Links auf dem Server nur, wenn folgende Einstellungen auf dem Server in /etc/samba/smb.conf gemacht werden: [global]
follow symlinks = yes
# follow symlinks kann man weglassen, das ist i.d.R die Defaulteinstellung. Mit "no" gehts aber nicht
wide links = yes
# wide links kann man weglassen, das ist i.d.R die Defaulteinstellung. Mit "no" gehts aber nicht
unix extensions = no
Die gleichen Einstellungen müssten auch in den Abschnitten der einzelnen Freigaben statt im Abschnitt [global] funktionieren. Hinweis: Die Mount-Option 'nounix' ersetzt nicht die Einstellungen in smb.conf. Zumindest nicht bei mir. Ich probiers aber morgen noch mal 🤣
|
Max-Ulrich_Farber
Anmeldungsdatum: 23. Januar 2007
Beiträge: 7992
|
Hinweis: Die Mount-Option 'nounix' ersetzt nicht die Einstellungen in smb.conf.
Obwohl ständig benutzt, ist AFAIK die Mount-Option nounix noch experimentell und nicht dokumentiert. Ich habe in Erinnerung, dass es da auch noch irgend was gab mit absoluten Softlinks (Ziel-Angabe beginnt mit Slash, also im Root-Verzeichnis), und relativen Softlinks (Ziel-Angabe ohne Slash am Anfang, auch in der Art ../<Ordner>/<Datei> ). Aber ich weiß es nicht mehr genau. Doch auf jeden Fall freut es mich, dass es jetzt geht. Gruß - Max-Ulrich
|
stn21
(Themenstarter)
Anmeldungsdatum: 25. Oktober 2007
Beiträge: 217
|
stn21 schrieb: Zusammenfassung, nur wegen der Eindeutigkeit: Ein cifs/smb-Client unter Linux folgt symbolischen Links auf dem Server nur, wenn folgende Einstellungen auf dem Server in /etc/samba/smb.conf gemacht werden: [global]
follow symlinks = yes
# follow symlinks kann man weglassen, das ist i.d.R die Defaulteinstellung. Mit "no" gehts aber nicht
wide links = yes
# wide links kann man weglassen, das ist i.d.R die Defaulteinstellung. Mit "no" gehts aber nicht
unix extensions = no
Habe es noch mal ausprobiert. Die genannten drei Einstellungen funktionieren zuverlässig und müssen auf jeden Fall im Abschnitt [global] stehen. Es geht nicht, wenn man sie in den Abschnitt einer einzelnen Freigabe schreibt. (getestet mit Ubuntu 10.04 als Samba-Server und Fedora 13 als CIFS-client)
|