aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--README23
-rw-r--r--kernel/dir.c5
3 files changed, 19 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 01885b9..e64b898 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-07-26 Miklos Szeredi <miklos@szeredi.hu>
+
+ * Check permissions in setattr if 'default_permissions' flag is
+ set. Bug spotted by Damjan Lango
+
2004-07-24 Miklos Szeredi <miklos@szeredi.hu>
* 'large_read' mount option removed for 2.6 kernels, since the
diff --git a/README b/README
index 90d9c4a..f00e303 100644
--- a/README
+++ b/README
@@ -20,22 +20,22 @@ and checking out the 'fuse' module.
Installation
============
-See the file 'INSTALL'
+./configure
+make
+make install
-IMPORTANT NOTE: If you run a system with untrusted users, installing
-this program is not recommended, as it could be used to breach
-security (see the 'Security' section for explanation).
+Also see the file 'INSTALL'
How To Use
==========
FUSE is made up of three main parts:
- - A kernel filesystem module (kernel/fuse.o)
+ - A kernel filesystem module
- - A userspace library (lib/libfuse.a)
+ - A userspace library
- - A mount/unmount program (util/fusermount)
+ - A mount/unmount program
Here's how to create your very own virtual filesystem in five easy
@@ -45,20 +45,15 @@ steps (after installing FUSE):
2) Build the fusexmp program
- 3) run 'example/fusexmp /mnt/whatever -d'
+ 3) run 'example/fusexmp /mnt/fuse -d'
- 4) ls -al /mnt/whatever
+ 4) ls -al /mnt/fuse
5) Be glad
If it doesn't work out, please ask! Also see the file 'include/fuse.h' for
detailed documentation of the library interface.
-The fusermount program accepts a couple of additional options (see
-'fusermount -h'). You can add these options after a '--' like this:
-
- example/fusexmp /mnt/whatever -d -- -l
-
Security
========
diff --git a/kernel/dir.c b/kernel/dir.c
index 7a8567c..87dec6a 100644
--- a/kernel/dir.c
+++ b/kernel/dir.c
@@ -762,6 +762,11 @@ static int fuse_setattr(struct dentry *entry, struct iattr *attr)
int err;
int is_truncate = 0;
+ if (fc->flags & FUSE_DEFAULT_PERMISSIONS) {
+ err = inode_change_ok(inode, attr);
+ if (err)
+ return err;
+ }
if (attr->ia_valid & ATTR_SIZE) {
unsigned long limit;