]> pere.pagekite.me Git - homepage.git/blob - blog/Broken_umask_handling_with_sshfs.html
Generated.
[homepage.git] / blog / Broken_umask_handling_with_sshfs.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: Broken umask handling with sshfs</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/vim.css" />
9 </head>
10 <body>
11 <div class="title">
12 <h1>
13 <a href="http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
14
15 </h1>
16
17 </div>
18
19
20 <div class="entry">
21 <div class="title">Broken umask handling with sshfs</div>
22 <div class="date">26th August 2010</div>
23 <div class="body"><p>My file system sematics program
24 <a href="http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html">presented
25 a few days ago</a> is very useful to verify that a file system can
26 work as a unix home directory,and today I had to extend it a bit. I'm
27 looking into alternatives for home directory access here at the
28 University of Oslo, and one of the options is sshfs. My friend
29 Finn-Arne mentioned a while back that they had used sshfs with Debian
30 Edu, but stopped because of problems. I asked today what the problems
31 where, and he mentioned that sshfs failed to handle umask properly.
32 Trying to detect the problem I wrote this addition to my fs testing
33 script:</p>
34
35 <pre>
36 mode_t touch_get_mode(const char *name, mode_t mode) {
37 mode_t retval = 0;
38 int fd = open(name, O_RDWR|O_CREAT|O_LARGEFILE, mode);
39 if (-1 != fd) {
40 unlink(name);
41 struct stat statbuf;
42 if (-1 != fstat(fd, &statbuf)) {
43 retval = statbuf.st_mode & 0x1ff;
44 }
45 close(fd);
46 }
47 return retval;
48 }
49
50 /* Try to detect problem discovered using sshfs */
51 int test_umask(void) {
52 printf("info: testing umask effect on file creation\n");
53
54 mode_t orig_umask = umask(000);
55 mode_t newmode;
56 if (0666 != (newmode = touch_get_mode("foobar", 0666))) {
57 printf(" error: Wrong file mode %o when creating using mode 666 and umask 000\n",
58 newmode);
59 }
60 umask(007);
61 if (0660 != (newmode = touch_get_mode("foobar", 0666))) {
62 printf(" error: Wrong file mode %o when creating using mode 666 and umask 007\n",
63 newmode);
64 }
65
66 umask (orig_umask);
67 return 0;
68 }
69
70 int main(int argc, char **argv) {
71 [...]
72 test_umask();
73 return 0;
74 }
75 </pre>
76
77 <p>Sure enough. On NFS to a netapp, I get this result:</p>
78
79 <pre>
80 Testing POSIX/Unix sematics on file system
81 info: testing symlink creation
82 info: testing subdirectory creation
83 info: testing fcntl locking
84 Read-locking 1 byte from 1073741824
85 Read-locking 510 byte from 1073741826
86 Unlocking 1 byte from 1073741824
87 Write-locking 1 byte from 1073741824
88 Write-locking 510 byte from 1073741826
89 Unlocking 2 byte from 1073741824
90 info: testing umask effect on file creation
91 </pre>
92
93 <p>When mounting the same directory using sshfs, I get this
94 result:</p>
95
96 <pre>
97 Testing POSIX/Unix sematics on file system
98 info: testing symlink creation
99 info: testing subdirectory creation
100 info: testing fcntl locking
101 Read-locking 1 byte from 1073741824
102 Read-locking 510 byte from 1073741826
103 Unlocking 1 byte from 1073741824
104 Write-locking 1 byte from 1073741824
105 Write-locking 510 byte from 1073741826
106 Unlocking 2 byte from 1073741824
107 info: testing umask effect on file creation
108 error: Wrong file mode 644 when creating using mode 666 and umask 000
109 error: Wrong file mode 640 when creating using mode 666 and umask 007
110 </pre>
111
112 <p>So, I can conclude that sshfs is better than smb to a Netapp or a
113 Windows server, but not good enough to be used as a home
114 directory.</p>
115
116 <p>Update 2010-08-26: Reported the issue in
117 <a href="http://bugs.debian.org/594498">BTS report #594498</a></p>
118
119 <p>Update 2010-08-27: Michael Gebetsroither report that he found the
120 script so useful that he created a GIT repository and stored it in
121 <a href="http://github.com/gebi/fs-test">http://github.com/gebi/fs-test</a>.</p>
122 </div>
123
124 <div class="tags">Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>.</div>
125
126
127 </div>
128
129
130
131
132 <div id="sidebar">
133
134
135
136 <h2>Archive</h2>
137 <ul>
138
139 <li>2013
140 <ul>
141
142 <li><a href="http://people.skolelinux.org/pere/blog/archive/2013/01/">January (3)</a></li>
143
144 </ul></li>
145
146 <li>2012
147 <ul>
148
149 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
150
151 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
152
153 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
154
155 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
156
157 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
158
159 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
160
161 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
162
163 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
164
165 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
166
167 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
168
169 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
170
171 <li><a href="http://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
172
173 </ul></li>
174
175 <li>2011
176 <ul>
177
178 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
179
180 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
181
182 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
183
184 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
185
186 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
187
188 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
189
190 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
191
192 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
193
194 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
195
196 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
197
198 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
199
200 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
201
202 </ul></li>
203
204 <li>2010
205 <ul>
206
207 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
208
209 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
210
211 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
212
213 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
214
215 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
216
217 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
218
219 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
220
221 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
222
223 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
224
225 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
226
227 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
228
229 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
230
231 </ul></li>
232
233 <li>2009
234 <ul>
235
236 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
237
238 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
239
240 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
241
242 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
243
244 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
245
246 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
247
248 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
249
250 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
251
252 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
253
254 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
255
256 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
257
258 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
259
260 </ul></li>
261
262 <li>2008
263 <ul>
264
265 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
266
267 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
268
269 </ul></li>
270
271 </ul>
272
273
274
275 <h2>Tags</h2>
276 <ul>
277
278 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
279
280 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
281
282 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
283
284 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
285
286 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (5)</a></li>
287
288 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (12)</a></li>
289
290 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
291
292 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (61)</a></li>
293
294 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (118)</a></li>
295
296 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (9)</a></li>
297
298 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook">docbook (7)</a></li>
299
300 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
301
302 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (167)</a></li>
303
304 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (21)</a></li>
305
306 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
307
308 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (10)</a></li>
309
310 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (9)</a></li>
311
312 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (32)</a></li>
313
314 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (17)</a></li>
315
316 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (8)</a></li>
317
318 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (6)</a></li>
319
320 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
321
322 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (25)</a></li>
323
324 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (219)</a></li>
325
326 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (148)</a></li>
327
328 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (6)</a></li>
329
330 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
331
332 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (41)</a></li>
333
334 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (61)</a></li>
335
336 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid">raid (1)</a></li>
337
338 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
339
340 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (2)</a></li>
341
342 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (5)</a></li>
343
344 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
345
346 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter">ruter (4)</a></li>
347
348 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
349
350 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (28)</a></li>
351
352 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
353
354 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (4)</a></li>
355
356 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (39)</a></li>
357
358 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (3)</a></li>
359
360 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (5)</a></li>
361
362 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (12)</a></li>
363
364 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (1)</a></li>
365
366 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (7)</a></li>
367
368 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (35)</a></li>
369
370 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
371
372 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (26)</a></li>
373
374 </ul>
375
376
377 </div>
378 <p style="text-align: right">
379 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.4</a>
380 </p>
381
382 </body>
383 </html>