diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2014-05-19 16:46:33 +0200 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2014-05-22 07:55:04 +0200 |
commit | 353fe33eb2481a14dc324c7c2e52b2032df86465 (patch) | |
tree | 637c01a13fcd4700dc6cf31ccbfd66accb214cf9 /trans | |
parent | e30e04d4f5cef2af6400847b5e102b5877372f27 (diff) |
trans/fakeroot: override fshelp_isowner
As of recently, fakeroot would fail to create symlinks:
% fakeroot-hurd ln -s foo a
ln: failed to create symbolic link ‘a’: Operation not permitted
Fix this by overriding fshelp_isowner.
Various netfs functions will call fshelp_isowner to check whether USER
is allowed to do some operation. As fakeroot is not running within
the fakeauth'ed environment, USER contains the real user.
I have no explanation why this ever worked.
* trans/fakeroot.c (fshelp_isowner): New function.
Diffstat (limited to 'trans')
-rw-r--r-- | trans/fakeroot.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/trans/fakeroot.c b/trans/fakeroot.c index c4b95de1..4175b552 100644 --- a/trans/fakeroot.c +++ b/trans/fakeroot.c @@ -479,6 +479,16 @@ netfs_validate_stat (struct node *np, struct iouser *cred) return 0; } +/* Various netfs functions will call fshelp_isowner to check whether + USER is allowed to do some operation. As fakeroot is not running + within the fakeauth'ed environment, USER contains the real + user. Hence, we override this check. */ +error_t +fshelp_isowner (struct stat *st, struct iouser *user) +{ + return 0; +} + error_t netfs_attempt_chown (struct iouser *cred, struct node *np, uid_t uid, uid_t gid) |