Re: samba4 unter ZFS

From: Peter Ross <Peter.Ross(at)alumni.tu-berlin.de>
Date: Mon, 30 Sep 2013 10:43:49 +1000 (EST)

On Sat, 28 Sep 2013, Peter Ross wrote:

> On Fri, 27 Sep 2013, Oliver Fromme wrote:
>
>> Die Informationen stammen ursprünglich aus einem binären
>> sysctl:
>>
>> $ sysctl -b vfs.conflist | hd 8:37
>> 00000000 00 00 00 00 00 00 00 00 70 72 6f 63 66 73 00 00
>> |........procfs..|
>> 00000010 00 00 00 00 00 00 00 00 02 00 00 00 01 00 00 00
>> |................|
>> 00000020 00 00 48 00 00 00 00 00 00 00 00 00 00 00 00 00
>> |..H.............|
>> 00000030 00 00 00 00 00 00 00 00 6d 73 64 6f 73 66 73 00
>> |........msdosfs.|
>> [...]
>>
>> Die Library-Funktion getvfsbyname() ist nichts weiter als
>> ein Wrapper für diesen sysctl. Den sysctl kann jeder
>> unprivilegierte Benutzer lesen, auch in einem Jail.
>>
>> Bisher hat das noch niemanden gestört, aber wenn Du meinst,
>> dass das eine sensitive Information ist, kannst Du einen PR
>> aufmachen. Ich nehme an, dass es durchaus nicht unsinnig
>> wäre, dem sysctl einen Jail-Check zu verpassen, so dass in
>> einem Jail als refcount immer 0 geliefert wird. (Man müsste
>> in src/sys/kern/vfs_subr.c in den Funktionen vfsconf2x und
>> vfsconf2x32 einen prison_check() einbauen.) Wenn Du den PR
>> nicht aufmachst, mach ich ihn auf. :-)
>
> Wobei "0" waere mir auch nicht recht.. z.b. wuesste dann "Dein" Skript nicht,
> das da ZFS benutzt wird. Es sollte also mit dem Output des "df" ("1")
> antworten.
>
> Ich weiss nicht, wie sensitiv das ist. Es sagt mir lediglich: Da sind noch
> 163 andere Filesysteme, vielleicht lohnt es sich hier, mehr "rumzuhacken"..
>
> Jetzt muesste man rausfinden, woher das Jail-df seine Zeile kriegt..

Wenn ich df richtig aufdrösele, nutzt das die libc-Funktion getmntinfo,
und das wiederum geht auf kern_getfsstat in ./kern/vfs_syscalls.c zurück
und in der Funktion sehe ich ein if (prison_canseemount..)

Entschuldigung, diese Dinge sind nicht unbedingt die, wo ich mich zu
"definitiven Aussagen" befugt fühle.

aber wenn ich Dich richtig verstehe, sollten die Funktionen vfsconf2x und
vfsconf2x32 ebenfalls einen solchen Check bekommen?

Für mich sieht es so aus, als wenn schon mal jemand drüber nachgedacht hat
("besser wir verstecken die Mountinformationen vor den Jails"), dann aber
das in.. sysctl_vfs_conflist(?) vergessen hat?

Das müßte dann in dem Abschnitt

         TAILQ_FOREACH(vfsp, &vfsconf, vfc_list) {
                 bzero(&xvfsp, sizeof(xvfsp));
                 vfsconf2x(vfsp, &xvfsp);
                 error = SYSCTL_OUT(req, &xvfsp, sizeof xvfsp);
                 if (error)
                         break;
         }

äquivalent to dem in kern_getfsstat ein Test eingefügt werden.

Wobei: kern_getfsstat gibt detailierte Werte für die Mounts zurück,
sysctl_vfs_conflist lediglich eine Zusammenfassung. Vielleicht wurde es
als "unkritisch" angesehen und aus Performance-Gründen weggelassen?

Wobei, ich würde sagen, immer besser, wenn ein Jail gar nichts weiß, dann
kann keiner auf "dumme Gedanken" kommen.

Ich versuche immer noch, das samba-tool Python-Skript zu fixen, ist es
okay, Deine Zeilen dort (modifiziert, dem Zweck entsprechen, einzufügen?
Es gibt mir einen Teil der Idee, wie das zu machen ist.

Es grüßt
Peter

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 30 Sep 2013 - 02:44:29 CEST

search this site