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">
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" />
13 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
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
36 mode_t touch_get_mode(const char *name, mode_t mode) {
38 int fd = open(name, O_RDWR|O_CREAT|O_LARGEFILE, mode);
42 if (-
1 != fstat(fd, &statbuf)) {
43 retval = statbuf.st_mode &
0x1ff;
50 /* Try to detect problem discovered using sshfs */
51 int test_umask(void) {
52 printf("info: testing umask effect on file creation\n");
54 mode_t orig_umask = umask(
000);
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",
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",
70 int main(int argc, char **argv) {
77 <p>Sure enough. On NFS to a netapp, I get this result:
</p>
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
93 <p>When mounting the same directory using sshfs, I get this
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
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
116 <p>Update
2010-
08-
26: Reported the issue in
117 <a href=
"http://bugs.debian.org/594498">BTS report #
594498</a></p>
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>
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>
142 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/01/">January (
16)
</a></li>
144 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/02/">February (
6)
</a></li>
146 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/03/">March (
6)
</a></li>
148 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/04/">April (
7)
</a></li>
150 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/05/">May (
3)
</a></li>
152 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/06/">June (
2)
</a></li>
154 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/07/">July (
7)
</a></li>
156 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/08/">August (
6)
</a></li>
158 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/09/">September (
3)
</a></li>
165 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li>
167 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li>
169 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li>
171 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li>
173 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li>
175 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li>
177 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li>
179 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li>
181 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li>
183 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li>
185 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/11/">November (
13)
</a></li>
187 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/12/">December (
12)
</a></li>
194 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li>
196 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li>
198 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li>
200 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li>
202 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li>
204 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li>
206 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li>
208 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li>
210 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li>
212 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li>
214 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li>
216 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li>
223 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li>
225 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li>
236 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
13)
</a></li>
238 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li>
240 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li>
242 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (
2)
</a></li>
244 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
12)
</a></li>
246 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bsa">bsa (
2)
</a></li>
248 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian (
53)
</a></li>
250 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
63)
</a></li>
252 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/digistan">digistan (
7)
</a></li>
254 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/english">english (
95)
</a></li>
256 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
12)
</a></li>
258 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
12)
</a></li>
260 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/intervju">intervju (
10)
</a></li>
262 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart (
15)
</a></li>
264 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap (
8)
</a></li>
266 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lenker">lenker (
4)
</a></li>
268 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li>
270 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
13)
</a></li>
272 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk (
137)
</a></li>
274 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug (
119)
</a></li>
276 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/open311">open311 (
2)
</a></li>
278 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
22)
</a></li>
280 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern (
45)
</a></li>
282 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reprap">reprap (
11)
</a></li>
284 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rfid">rfid (
2)
</a></li>
286 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot (
4)
</a></li>
288 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li>
290 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
23)
</a></li>
292 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
3)
</a></li>
294 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard (
24)
</a></li>
296 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
1)
</a></li>
298 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (
2)
</a></li>
300 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (
9)
</a></li>
302 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/valg">valg (
6)
</a></li>
304 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/video">video (
20)
</a></li>
306 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
1)
</a></li>
308 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/web">web (
16)
</a></li>
314 <p style=
"text-align: right">
315 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.4
</a>