[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: Re: test -w on r/o filesystems
From: Christian Franke <Christian.Franke () t-online ! de>
Date: 2024-04-29 17:51:15
Message-ID: b2e8cde8-76e4-d597-942e-9d43029d537c () t-online ! de
[Download RAW message or body]
Rasmus Villemoes wrote:
> It seems that busybox' "test" returns the wrong result when applied to a
> R/O filesystem.
>
> ### Permissions "allow" write for root
> # ls -ld /
> drwxr-xr-x 15 root root 221 Apr 5 2011 /
The rw-permission bits do not matter if the effective user id is root.
Root has always rw-access (and x-access if any x-bit is set) if the
filesystem is not R/O.
> ### But the rootfs is (and can only be) mounted ro
> # mount | grep ' / '
> /dev/mmcblk0p5 on / type squashfs (ro,noatime,errors=continue)
> ### With coreutils test
> # test -w / && echo Writable || echo Not writable
> Not writable
> ### With busybox test
> # busybox test -w / && echo Writable || echo Not writable
> Writable
The 'test' implementation of gnu coreutils uses euidaccess() from
gnulib. This usually calls a kernel function faccessat(), eaccess() or
similar and only falls back to the traditional check (euid is root or
the relevant w-bit is set) if none of these are available. The busybox
implementation of euidaccess() only uses a simplified variant of the
latter method. This cannot detect R/O mounts but the kernel functions
possibly do.
https://github.com/coreutils/gnulib/blob/master/lib/euidaccess.c
BTW, the behavior of the builtin 'test' commands of various shells may
also differ if the filesystem is R/O.
--
Regards,
Christian
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic