susmb - www.codemadness.org - www.codemadness.org saait content files
HTML git clone git://git.codemadness.org/www.codemadness.org
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
susmb (7354B)
---
1 1<- Back / codemadness.org 70
2 i codemadness.org 70
3 i codemadness.org 70
4 i# susmb: unprivileged mounting of SMB/CIFS shares via FUSE codemadness.org 70
5 i codemadness.org 70
6 iLast modification on 2026-03-06 codemadness.org 70
7 i codemadness.org 70
8 iusmb is a program to mount SMB shares from userland via FUSE. codemadness.org 70
9 iUnder-the-hood it uses Samba and exposes the network share as a regular local filesystem. codemadness.org 70
10 iPrograms can just access the filesystem and for example do not need to add code for SMB support or link against Samba. codemadness.org 70
11 iIt is more convenient than scripting around smbclient in some cases. codemadness.org 70
12 hsmbclient(1): »https://www.samba.org/samba/docs/current/man-html/smbclient.1.html« URL:https://www.samba.org/samba/docs/current/man-html/smbclient.1.html codemadness.org 70
13 i codemadness.org 70
14 isusmb is a fork of usmb from 2013-02-04. codemadness.org 70
15 hhttp://repo.or.cz/w/usmb.git/snapshot/aa94e132c12faf1a00f547ea4a96b5728612dea6.tar.gz URL:http://repo.or.cz/w/usmb.git/snapshot/aa94e132c12faf1a00f547ea4a96b5728612dea6.tar.gz codemadness.org 70
16 i(git commit aa94e132c12faf1a00f547ea4a96b5728612dea6) codemadness.org 70
17 i codemadness.org 70
18 iusmb has been unmaintained since 2013. Sometimes programs are finished and so codemadness.org 70
19 ibeing unmaintained is not so bad. I think the general idea of the code was good codemadness.org 70
20 iand it is still a useful program for some systems, probably mostly BSD systems. codemadness.org 70
21 iLinux has a SMB/CIFS driver anyway. codemadness.org 70
22 i codemadness.org 70
23 iThe two main reasons I forked usmb were performance issues with it on OpenBSD codemadness.org 70
24 i(because of hardcoded options and assumptions for FUSE for Linux) and issues by codemadness.org 70
25 iusing it in non-interactive mode. codemadness.org 70
26 i codemadness.org 70
27 i codemadness.org 70
28 i## Clone codemadness.org 70
29 i codemadness.org 70
30 i git clone git://git.codemadness.org/susmb codemadness.org 70
31 i codemadness.org 70
32 i codemadness.org 70
33 i## Browse codemadness.org 70
34 i codemadness.org 70
35 iYou can browse the source-code at: codemadness.org 70
36 i codemadness.org 70
37 h* https://git.codemadness.org/susmb/ URL:https://git.codemadness.org/susmb/ codemadness.org 70
38 1* gopher://codemadness.org/1/git/susmb /git/susmb codemadness.org 70
39 i codemadness.org 70
40 i codemadness.org 70
41 i## Download releases codemadness.org 70
42 i codemadness.org 70
43 iReleases are available at: codemadness.org 70
44 i codemadness.org 70
45 h* https://codemadness.org/releases/susmb/ URL:https://codemadness.org/releases/susmb/ codemadness.org 70
46 1* gopher://codemadness.org/1/releases/susmb /releases/susmb codemadness.org 70
47 i codemadness.org 70
48 i codemadness.org 70
49 i## Build and install codemadness.org 70
50 i codemadness.org 70
51 i $ make codemadness.org 70
52 i # make install codemadness.org 70
53 i codemadness.org 70
54 i codemadness.org 70
55 i## Dependencies codemadness.org 70
56 i codemadness.org 70
57 i* C compiler. codemadness.org 70
58 i* libc + BSD extensions (libbsd on Linux). codemadness.org 70
59 i* FUSE 2.6 or later (and probably version <3). codemadness.org 70
60 i* Samba / libsmbclient 4.20+. codemadness.org 70
61 i codemadness.org 70
62 i codemadness.org 70
63 i## Usage example codemadness.org 70
64 i codemadness.org 70
65 i susmb \ codemadness.org 70
66 i -u hiltjo \ codemadness.org 70
67 i -f \ codemadness.org 70
68 i -o 'uid=1000,gid=1000,allow_other' \ codemadness.org 70
69 i "smb://domain\someuser@192.168.1.1/Storage" \ codemadness.org 70
70 i /mnt/share codemadness.org 70
71 i codemadness.org 70
72 i codemadness.org 70
73 i## Changes codemadness.org 70
74 i codemadness.org 70
75 isusmb has the patches applied from OpenBSD ports 7.6: codemadness.org 70
76 hhttps://cvsweb.openbsd.org/ports/sysutils/usmb/patches URL:https://cvsweb.openbsd.org/ports/sysutils/usmb/patches codemadness.org 70
77 i codemadness.org 70
78 iBelow is a summary of the most important changes: codemadness.org 70
79 i codemadness.org 70
80 i codemadness.org 70
81 i## Performance codemadness.org 70
82 i codemadness.org 70
83 i* Set struct stat st.st_blksiz to a higher number for more efficient buffering codemadness.org 70
84 i for programs using the standard FILE* stdio interfaces. Huge improvement for codemadness.org 70
85 i reads and writes. codemadness.org 70
86 i On OpenBSD the default block size for FUSE is 512 bytes. codemadness.org 70
87 i This crippled network performance. codemadness.org 70
88 i On OpenBSD there is no FUSE caching layer (at time of writing 2025-09-07), so codemadness.org 70
89 i each read call had more overhead. codemadness.org 70
90 i* Remove the hardcoded FUSE mount option max_read=N. codemadness.org 70
91 i This crippled network performance. codemadness.org 70
92 i codemadness.org 70
93 i codemadness.org 70
94 i## Security codemadness.org 70
95 i codemadness.org 70
96 i* Many code simplifications and deletions (reducing attack surface and makes it codemadness.org 70
97 i easier to review). codemadness.org 70
98 i* Use unveil(2) syscall to lock down much of the filesystem except the codemadness.org 70
99 i mountpoint and required FUSE devices. codemadness.org 70
100 i* Optional privilege dropping support: on OpenBSD FUSE would need to run as root: codemadness.org 70
101 i (sysctl kern.usermount was removed around July 2016, around codemadness.org 70
102 i commit 65c8a8a0394483b41de8f02c862e65fb529cf538). codemadness.org 70
103 i After mounting the filesystem and acquiring access to the FUSE driver codemadness.org 70
104 i privileges are dropped. This is not perfect, but at least now the Samba smbclient codemadness.org 70
105 i code runs as a user again. codemadness.org 70
106 i* Reading the password from the terminal in a secure way using readpassphrase(3). codemadness.org 70
107 i codemadness.org 70
108 i codemadness.org 70
109 i## Cleanups codemadness.org 70
110 i codemadness.org 70
111 i* Merge everything into one C file for easier code review. codemadness.org 70
112 i* Remove Samba < 3.3 compatibility layer and code. This is hard to test codemadness.org 70
113 i nowadays anyway. codemadness.org 70
114 i* Use getopt for option parsing: remove dependencies on glib which was used for codemadness.org 70
115 i option parsing only. codemadness.org 70
116 i* Remove long option support. codemadness.org 70
117 i* Remove libxml2 dependency and configuration via XML. Configuration is now codemadness.org 70
118 i done via a simpler syntax as a URI from the command-line. This was also codemadness.org 70
119 i listed in the man page under the BUGS section as a wanted feature. codemadness.org 70
120 i* Remove autoconf and Debian-specific packaging files. Use a simple Makefile. codemadness.org 70
121 i* Man page rewritten from roff to mandoc. codemadness.org 70
122 i codemadness.org 70
123 i codemadness.org 70
124 i## OpenBSD port added as sysutils/susmb codemadness.org 70
125 i codemadness.org 70
126 iAn OpenBSD port was added to sysutils/susmb (thanks to Pascal Stumpf!). codemadness.org 70
127 i codemadness.org 70
128 hMailinglist thread: »https://marc.info/?l=openbsd-ports&m=177169411929407&w=2« URL:https://marc.info/?l=openbsd-ports&m=177169411929407&w=2 codemadness.org 70
129 .