kernel 3.16 breaks POSIX extended ACLs over NFS
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Expired
|
Medium
|
Unassigned |
Bug Description
I have a development environment that uses Vagrant with NFS shares to a Trusty development VM from OS X laptops.
After the upgrade to the HWE kernel 3.16, installing Ruby gems into the NFS mount inside the VM failed because of install(1) failing with permission errors. Debugging revealed that it's trying to set POSIX extended ACLs using setxattr(); On 3.13 this operation failed with EOPNOTSUPP (the server does not support extended ACLs), but on 3.16 it fails with EPERM, even if the NFS mount is explicitly mounted with "noacl".
Debugging with ftrace and source diving suggests that kernel 3.16 refactored the POSIX extended ACL code so that before the call even hits the NFS layer, it passes through a generic permission-check layer. It appears that that layer is not aware of NFS UID remapping, and so fails the call regardless of what the server would have done.
A simple test case is `install -c -m 0755 <some file> <some path in an NFS mount>`, which will succeed on 3.13 and fail on 3.16.
The broken system is:
vagrant@
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.2 LTS
Release: 14.04
Codename: trusty
Linux packer-vmware-iso 3.16.0-34-generic #47~14.04.1-Ubuntu SMP Fri Apr 10 17:49:16 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
---
AlsaDevices:
total 0
crw-rw---- 1 root audio 116, 1 Dec 22 14:39 seq
crw-rw---- 1 root audio 116, 33 Dec 22 14:39 timer
AplayDevices: Error: [Errno 2] No such file or directory
ApportVersion: 2.14.1-0ubuntu3.19
Architecture: amd64
ArecordDevices: Error: [Errno 2] No such file or directory
AudioDevicesInUse: Error: command ['fuser', '-v', '/dev/snd/seq', '/dev/snd/timer'] failed with exit code 1:
CRDA: Error: [Errno 2] No such file or directory
DistroRelease: Ubuntu 14.04
HibernationDevice: RESUME=
InstallationDate: Installed on 2015-09-02 (111 days ago)
InstallationMedia: Ubuntu-Server 14.04.1 LTS "Trusty Tahr" - Release amd64 (20140722.3)
IwConfig: Error: [Errno 2] No such file or directory
Lsusb: Error: command ['lsusb'] failed with exit code 1: unable to initialize libusb: -99
MachineType: VMware, Inc. VMware Virtual Platform
Package: linux (not installed)
PciMultimedia:
ProcFB: 0 svgadrmfb
ProcKernelCmdLine: BOOT_IMAGE=
ProcVersionSign
RelatedPackageV
linux-
linux-
linux-firmware 1.127.15
RfKill: Error: [Errno 2] No such file or directory
Tags: trusty
Uname: Linux 3.16.0-57-generic x86_64
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: adm cdrom dip docker lpadmin plugdev sambashare sudo
_MarkForUpload: True
dmi.bios.date: 05/20/2014
dmi.bios.vendor: Phoenix Technologies LTD
dmi.bios.version: 6.00
dmi.board.name: 440BX Desktop Reference Platform
dmi.board.vendor: Intel Corporation
dmi.board.version: None
dmi.chassis.
dmi.chassis.type: 1
dmi.chassis.vendor: No Enclosure
dmi.chassis.
dmi.modalias: dmi:bvnPhoenixT
dmi.product.name: VMware Virtual Platform
dmi.product.
dmi.sys.vendor: VMware, Inc.
Changed in linux-lts-vivid (Ubuntu): | |
status: | New → Confirmed |
To be clear, I can easily workaround in my environment by not using the HWE kernel (there's no need for it inside a VM), but this is still a regression that may affect other people and presumably future Ubuntu releases.