Dominik Vogel
2021-Nov-15 15:43 UTC
[Samba] Possible Bug in vfs_fruit with encoding=native
Anyone got an Idea?> Am 03.11.2021 um 16:27 schrieb Dominik Vogel <windoze345 at googlemail.com>: > > Hello, > > I have problems with setting custom folder-icons from a Mac on a samba share. > My system is macOS 10.15.7 the server is Debian 11 with Samba 4.13.5 (Default Package in Debian). > I also tried 4.15.1 from "apt.van-belle.nl? but the results were worse (More details below). > All the tests were done with a fresh Debian-VM. > > With Samba 4.13.5 it works when I set ?fruit:encoding = private?. > In the log-file It looks to me that ?ad_convert_delete_adfile? gets the non-converted filename > and then fails since the file was created with the converted name. > > I replaced the Carriage-Return character in the snippets with <CR> to make it clearer. > "Datei oder Verzeichnis nicht gefunden? is ?File or Directory not Found? in English. > ---------------------------------------- > Log snippet from 4.13.5 ?fruit:encoding = native? > > You can see the name correctly converted in the first lines but the deletion uses the original one and fails. > > > [2021/11/03 14:46:21.190135, 10, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1389(check_reduced_name) > check_reduced_name realpath [._Icon?] -> [/srv/share1/a/._Icon<CR>] > [2021/11/03 14:46:21.190149, 5, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1495(check_reduced_name) > check_reduced_name: ._Icon? reduced to /srv/share1/a/._Icon<CR> > [2021/11/03 14:46:21.190165, 10, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/modules/vfs_streams_xattr.c:387(streams_xattr_openat) > streams_xattr_open called for ._Icon<CR> with flags 0x20802 > [2021/11/03 14:46:21.190186, 4, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:939(vfs_ChDir) > vfs_ChDir to /srv/share1 > [2021/11/03 14:46:21.190217, 5, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1001(vfs_ChDir) > vfs_ChDir: vfs_ChDir got /srv/share1 > [2021/11/03 14:46:21.190237, 2] ../../source3/smbd/open.c:1518(open_file) > dv opened file a/._Icon? read=Yes write=Yes (numopen=1) > [2021/11/03 14:46:21.190296, 10, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/modules/vfs_streams_xattr.c:1011(streams_xattr_pread) > streams_xattr_pread: offset=0, size=82 > [2021/11/03 14:46:21.190326, 0] ../../source3/lib/adouble.c:1374(ad_convert_delete_adfile) > ad_convert_delete_adfile: Unlinking [a/._Icon?] failed: Datei oder Verzeichnis nicht gefunden > [2021/11/03 14:46:21.190534, 10, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/modules/vfs_streams_xattr.c:522(streams_xattr_close) > streams_xattr_close: streams_xattr_close called [a/._Icon?] fd [50] > [2021/11/03 14:46:21.190559, 2] ../../source3/smbd/close.c:824(close_normal_file) > dv closed file a/._Icon? (numopen=0) NT_STATUS_OK > [2021/11/03 14:46:21.190574, 0] ../../source3/modules/vfs_fruit.c:3992(fruit_create_file) > fruit_create_file: ad_convert() failed > > ---------------------------------------- > Log snippet from 4.13.5 ?fruit:encoding = private? > > Since the special characters aren?t converted with this setting, the deletion with the original name succeeds. > The Icon is correctly shown in the macOS Finder. > > > [2021/11/03 14:46:23.416321, 10, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1389(check_reduced_name) > check_reduced_name realpath [._Icon?] -> [/srv/share2/a/._Icon?] > [2021/11/03 14:46:23.416335, 5, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1495(check_reduced_name) > check_reduced_name: ._Icon? reduced to /srv/share2/a/._Icon? > [2021/11/03 14:46:23.416351, 10, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/modules/vfs_streams_xattr.c:387(streams_xattr_openat) > streams_xattr_open called for ._Icon? with flags 0x20802 > [2021/11/03 14:46:23.416372, 4, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:939(vfs_ChDir) > vfs_ChDir to /srv/share2 > [2021/11/03 14:46:23.416401, 5, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1001(vfs_ChDir) > vfs_ChDir: vfs_ChDir got /srv/share2 > [2021/11/03 14:46:23.416421, 2] ../../source3/smbd/open.c:1518(open_file) > dv opened file a/._Icon? read=Yes write=Yes (numopen=1) > [2021/11/03 14:46:23.416471, 10, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/modules/vfs_streams_xattr.c:1011(streams_xattr_pread) > streams_xattr_pread: offset=0, size=82 > [2021/11/03 14:46:23.416533, 1] ../../source3/lib/adouble.c:1380(ad_convert_delete_adfile) > ad_convert_delete_adfile: Unlinked [a/._Icon?] after conversion > [2021/11/03 14:46:23.416602, 10, pid=1039, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/modules/vfs_streams_xattr.c:522(streams_xattr_close) > streams_xattr_close: streams_xattr_close called [a/._Icon?] fd [50] > [2021/11/03 14:46:23.416671, 2] ../../source3/smbd/close.c:824(close_normal_file) > dv closed file a/._Icon? (numopen=0) NT_STATUS_OK > > ---------------------------------------- > Log snippet from 4.15.1 ?fruit:encoding = native? > > I have basically the same error only the path / filenames aren?t shown in the ?check_reduced_name? lines > > > [2021/11/03 15:25:12.022604, 10, pid=5813, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1323(check_reduced_name) > check_reduced_name: check_reduced_name [.] [/srv/share1] > [2021/11/03 15:25:12.022679, 10, pid=5813, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1387(check_reduced_name) > check_reduced_name realpath [.] -> [/srv/share1] > [2021/11/03 15:25:12.022701, 5, pid=5813, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1493(check_reduced_name) > check_reduced_name: . reduced to /srv/share1 > [2021/11/03 15:25:12.022720, 10, pid=5813, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/modules/vfs_streams_xattr.c:333(streams_xattr_openat) > streams_xattr_open called for . with flags 0x30000 > [2021/11/03 15:25:12.022754, 10, pid=5813, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/modules/vfs_streams_xattr.c:463(streams_xattr_close) > streams_xattr_close: streams_xattr_close called [/srv/share1] fd [52] > [2021/11/03 15:25:12.022799, 5, pid=5813, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1000(vfs_ChDir) > vfs_ChDir: vfs_ChDir got /srv/share1 > [2021/11/03 15:25:12.022831, 0] ../../source3/lib/adouble.c:1411(ad_convert_delete_adfile) > ad_convert_delete_adfile: Unlinking [a/._Icon?] failed: Datei oder Verzeichnis nicht gefunden > [2021/11/03 15:25:12.023111, 10, pid=5813, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/modules/vfs_streams_xattr.c:463(streams_xattr_close) > streams_xattr_close: streams_xattr_close called [a] fd [49] > [2021/11/03 15:25:12.023165, 10, pid=5813, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/modules/vfs_streams_xattr.c:463(streams_xattr_close) > streams_xattr_close: streams_xattr_close called [a/._Icon?] fd [48] > [2021/11/03 15:25:12.023200, 0] ../../source3/modules/vfs_fruit.c:4171(fruit_create_file) > fruit_create_file: ad_convert() failed > > ---------------------------------------- > Log snippet from 4.15.1 ?fruit:encoding = private? > > Here the deletion succeeds (same as 4.13.5) but the icon still doesn?t show up in the macOS Finder. > If I look on the server directly I see the "._Icon?? file but it is only 82 bytes long (should be about 980kB with my test-icon). > So there seems to be an additional regression in the ea / adouble handling somewhere between 4.13.5 and 4.15.1. > If I set an icon with 4.13.5 and only switch to 4.15.1 the icon still shows up correctly in the Finder. > I can delete the icon successfully but can?t set a new one. So it?s only the writing which doesn?t work the reading seems fine. > > > [2021/11/03 16:04:38.200513, 10, pid=6879, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1323(check_reduced_name) > check_reduced_name: check_reduced_name [.] [/srv/share2] > [2021/11/03 16:04:38.200530, 10, pid=6879, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1387(check_reduced_name) > check_reduced_name realpath [.] -> [/srv/share2] > [2021/11/03 16:04:38.200545, 5, pid=6879, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1493(check_reduced_name) > check_reduced_name: . reduced to /srv/share2 > [2021/11/03 16:04:38.200560, 10, pid=6879, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/modules/vfs_streams_xattr.c:333(streams_xattr_openat) > streams_xattr_open called for . with flags 0x30000 > [2021/11/03 16:04:38.200588, 10, pid=6879, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/modules/vfs_streams_xattr.c:463(streams_xattr_close) > streams_xattr_close: streams_xattr_close called [/srv/share2] fd [54] > [2021/11/03 16:04:38.200608, 5, pid=6879, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/smbd/vfs.c:1000(vfs_ChDir) > vfs_ChDir: vfs_ChDir got /srv/share2 > [2021/11/03 16:04:38.200642, 1] ../../source3/lib/adouble.c:1418(ad_convert_delete_adfile) > ad_convert_delete_adfile: Unlinked [a/._Icon?] after conversion > [2021/11/03 16:04:38.200657, 10, pid=6879, effective(1000, 1000), real(1000, 0), class=vfs] ../../source3/modules/vfs_streams_xattr.c:463(streams_xattr_close) > streams_xattr_close: streams_xattr_close called [a] fd [52] > > ---------------------------------------- > My smb.conf > > [global] > ea support = yes > fruit:aapl = yes > fruit:delete_empty_adfiles = yes > fruit:encoding = native > fruit:locking = none > fruit:metadata = netatalk > fruit:model = RackMac > fruit:resource = file > fruit:veto_appledouble = no > fruit:wipe_intentionally_left_blank_rfork = yes > guest account = guestusr > log file = /var/log/samba/log.%m > log level = 2 vfs:99 > map to guest = Bad User > max log size = 1000 > mdns name = mdns > multicast dns register = yes > nt acl support = no > obey pam restrictions = yes > pam password change = yes > panic action = /usr/share/samba/panic-action %d > passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . > passwd program = /usr/bin/passwd %u > printcap name = cups > printing = cups > server signing = auto > streams_xattr:prefix = user. > streams_xattr:store_stream_type = no > time server = yes > unix extensions = no > unix password sync = yes > username map = /etc/samba/smbusers > vfs objects = catia fruit streams_xattr > > [Share1] > create mask = 0771 > directory mask = 02770 > force create mode = 0660 > force directory mode = 02770 > path = /srv/share1 > writeable = yes > fruit:encoding = native > > [Share2] > create mask = 0771 > directory mask = 02770 > force create mode = 0660 > force directory mode = 02770 > path = /srv/share2 > writeable = yes > fruit:encoding = private > > ---------------------------------------- > > If you need additional information, let me know. > > Regards, > Dominik Vogel >
On 11/15/21 16:43, Dominik Vogel via samba wrote:> Anyone got an Idea?you could try attached patch. -slow -- Ralph Boehme, Samba Team https://samba.org/ SerNet Samba Team Lead https://sernet.de/en/team-samba -------------- next part -------------- A non-text attachment was scrubbed... Name: abouble.patch Type: text/x-patch Size: 838 bytes Desc: not available URL: <http://lists.samba.org/pipermail/samba/attachments/20211115/02f743ad/abouble.bin> -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_signature Type: application/pgp-signature Size: 840 bytes Desc: OpenPGP digital signature URL: <http://lists.samba.org/pipermail/samba/attachments/20211115/02f743ad/OpenPGP_signature.sig>