Download raw body.
[got-portable] landlock support, second try
Omar Polo <op@omarpolo.com> writes: > Bryan Steele <brynet@gmail.com> writes: > >> On Tue, Feb 08, 2022 at 12:00:05AM -0500, Bryan Steele wrote: >>> On Sun, Feb 06, 2022 at 04:59:05PM +0100, Omar Polo wrote: >>> > Thomas Adam <thomas@xteddy.org> writes: >>> > >>> > > On Sun, Feb 06, 2022 at 12:06:27PM +0100, Omar Polo wrote: >>> > >> here's a revised diff. it's equivalent in practice to the previous one, >>> > >> but hopefully less scary :) >>> > > >>> > > Thanks for this. I have no means of testing this though (the kernel version I >>> > > have here on Arch Linux doesn't seem to offer Landlock) but I have a few >>> > > comment in-line below. >>> > >>> > unfortunately it doesn't seem to be that much available yet. I can >>> > confirm that fedora has it, and I'm told nixos ship with landlock >>> > enabled too. >>> > >>> > I just tried on a devuan ceres (unstable) vm and they ship >>> > linux/landlock.h, but the actual kernel has landlock disabled! I've >>> > added a check for ENOSYS and ENOTSUP to handle this situation where >>> > landlock was found at compile time but it's not present at runtime. >>> >>> I'd agrue that in the ENOTSUP case it shouldn't fail silently and >>> should instead return an error, that way distributions attempting >>> to ship packages have a chance of catching it, rather than shipping >>> out binaries that don't actually provide any sort of protection. Please discard everything, I misunderstood. I thought you were talking about dropping the check completely, not the ENOTSUP case alone. I sort of agree then, leaving ENOSYS for older kernels but removing the ENOTSUP to make sure that distros build the package correctly. I'll do some testing on different distribution, but I agree on the idea, thanks! > in one hand, i wholeheartedly agree. any failure here should be treated > as fatal error and abort everything, as you noted with the pledge > example. > > on the other hand, we're talking about linux here >.> > > I've got a report from a user (on a different project) that a program I > wrote was failing for him because of landlock. The package was built in > an environment with landlock enabled but then ran on a previous linux > version and thus failing. These kind of monstrosities are probably not > so uncommon I guess. > > I don't want got to hard-fail at everything if the user boots with a > previous kernel version, that's the main reason. > > Furthermore, it's not that easy to disable a kernel feature, it requires > root access on the machine and probably a reboot too. > > Also, see the patch for gtar from the landlock author, they don't seem > to be too much concerned of it failing :D > > https://lists.gnu.org/archive/html/bug-tar/2021-04/msg00002.html > > what about keeping the status quo for a while still and then enforcing > it properly when more people are running >=5.13 ? > >>> At least in that case the distros adding --disable-landlock will be >>> easier spot as well. >> >> I guess that's not actually even a flag, but I guess they might >> try and override cv_header_linux_landlock_h=no during builds. >> >> Still if it's always going to get compiled on Linux, there should be >> some kind of indication it is actually doing something and isn't >> just a no-op. >> >> I know this has already been committed, but just had a chance to >> reply. > > An indicator wouldn't be bad, it's difficult to make it not extremely > verbose thought > > op@devuan:~/w/got-portable$ got st -S? > got-read-gotconfig: landlock disabled, continuing nevertheless > got-read-gitconfig: landlock disabled, continuing nevertheless > got-read-pack: landlock disabled, continuing nevertheless > got-read-gotconfig: landlock disabled, continuing nevertheless > got-read-gitconfig: landlock disabled, continuing nevertheless > got-read-pack: landlock disabled, continuing nevertheless > M compat/landlock.c > op@devuan:~/w/got-portable$ got di compat/ > got-read-gotconfig: landlock disabled, continuing nevertheless > got-read-gitconfig: landlock disabled, continuing nevertheless > got-read-pack: landlock disabled, continuing nevertheless > got-read-gotconfig: landlock disabled, continuing nevertheless > got-read-gitconfig: landlock disabled, continuing nevertheless > got-read-pack: landlock disabled, continuing nevertheless > diff 97799ccd4b67a81f97039305d4fdd66588da9962 /home/op/w/got-portable > blob - 47a5209dbfe20f149a142f16faaca86ca659120c > file + compat/landlock.c > --- compat/landlock.c > +++ compat/landlock.c > @@ -86,8 +86,10 @@ landlock_no_fs(void) > fd = landlock_create_ruleset(&rattr, sizeof(rattr), 0); > if (fd == -1) { > /* this kernel doesn't have landlock built in */ > - if (errno == ENOSYS || errno == ENOTSUP) > + if (errno == ENOSYS || errno == ENOTSUP) { > + warnx("landlock disabled, continuing nevertheless"); > return 0; > + } > return -1; > }
[got-portable] landlock support, second try