Re: Why "--fake" and "--no-canonicalize" started requiring root in 2.22?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Hm.. I am puzzled then. I clearly see that "mount --fake" works on
ubuntu precise with linux-util package version 2.20.1. I checked
ubuntu-specific changes http://packages.ubuntu.com/precise/util-linux
and I do not see anything related to the flags handling. But your
change be9adec40ffc8 is merged to project in v2.17....


The only diff between 2.20 vs 2.22 is expression for "restricted":

v2.20
                /* if we're really root and aren't running setuid */
                if (((uid_t)0 == ruid) && (ruid == euid)) {
                        restricted = 0;
                }

v2.22
cxt->restricted = (uid_t) 0 == ruid && ruid == euid ? 0 : 1;

My first though was that something wrong with operators precedence in
v2.22, but no - expressions evaluated the same way as in v2.20


I keep trying to understand the behavior change between Ubuntu
(v2.20.1) and Arch (v2.22)

On Sun, Feb 3, 2013 at 7:28 AM, Karel Zak <kzak@xxxxxxxxxx> wrote:
> On Sun, Feb 03, 2013 at 01:39:50AM -0800, Anatol Pomozov wrote:
>> I am trying to compile and use libfuse. Libfuse utilises 'mount' and
>> 'umount' tools. One of few things it uses are "--fake" and
>> "--no-canonicalize" command options run as regular user. It worked
>> fine with previous versions of util-linux (2.20 from Ubuntu Precise).
>> But in the latest version (2.22 from Arch) it fails to run as a
>> regular user:
>
> The original (now deprecated) mount code:
>
> # git blame --date=short -L 2572,+11 mount-deprecated/mount.c
>
> 3d1b35b6 mount/mount.c (Karel Zak 2009-09-30 2572)              if (restricted &&
> 3d1b35b6 mount/mount.c (Karel Zak 2009-09-30 2573)                  (types || options || readwrite || nomtab || mount_all ||
> be9adec4 mount/mount.c (Karel Zak 2009-12-17 2574)                   nocanonicalize || fake || mounttype ||
> be9adec4 mount/mount.c (Karel Zak 2009-12-17 2575)                   (argc + specseen) != 1)) {
> 3d1b35b6 mount/mount.c (Karel Zak 2009-09-30 2576)
> 3d1b35b6 mount/mount.c (Karel Zak 2009-09-30 2577)                      if (ruid == 0 && euid != 0)
> 3d1b35b6 mount/mount.c (Karel Zak 2009-09-30 2578)                              /* user is root, but setuid to non-root */
> 3d1b35b6 mount/mount.c (Karel Zak 2009-09-30 2579)                              die (EX_USAGE, _("mount: only root can do that "
> b7481d6f mount/mount.c (Karel Zak 2010-06-14 2580)                                      "(effective UID is %u)"), euid);
> 3d1b35b6 mount/mount.c (Karel Zak 2009-09-30 2581)
> 3d1b35b6 mount/mount.c (Karel Zak 2009-09-30 2582)                      die (EX_USAGE, _("mount: only root can do that"));
>
> for example:
>
> commit be9adec40ffc81b28cbb051d0aa1f46f596f7b81
> Author: Karel Zak <kzak@xxxxxxxxxx>
> Date:   Thu Dec 17 12:27:16 2009 +0100
>
>     mount: disable --no-canonicalize for non-root users
>
>     Signed-off-by: Karel Zak <kzak@xxxxxxxxxx>
>
>
>> $  mount --version
>> mount from util-linux 2.22.2 (libmount 2.22.0: debug)
>> $  mount --fake
>> mount: only root can use "--fake" option
>
> fake was always disable for non root users
>
>> $  mount --no-canonicalize
>> mount: only root can use "--no-canonicalize" option
>>
>> Should it be removed from the list of "restricted" options like it
>> happened with other options recently? This would restore the same
>> behavior that "mount" had before.
>
> I don't see a change...
>
>     Karel
>
> --
>  Karel Zak  <kzak@xxxxxxxxxx>
>  http://karelzak.blogspot.com
--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux