Index: sys/sys/capability.h =================================================================== --- sys/sys/capability.h (wersja 240879) +++ sys/sys/capability.h (kopia robocza) @@ -81,6 +81,7 @@ #define CAP_MKDIR 0x0000000000200000ULL #define CAP_RMDIR 0x0000000000400000ULL #define CAP_MKFIFO 0x0000000000800000ULL +#define CAP_MKNOD 0x0080000000000000ULL /* Lookups - used to constrain *at() calls. */ #define CAP_LOOKUP 0x0000000001000000ULL @@ -137,7 +138,7 @@ #define CAP_PDKILL 0x0040000000000000ULL /* The mask of all valid method rights. */ -#define CAP_MASK_VALID 0x007fffffffffffffULL +#define CAP_MASK_VALID 0x00ffffffffffffffULL #ifdef _KERNEL Index: sys/kern/vfs_syscalls.c =================================================================== --- sys/kern/vfs_syscalls.c (wersja 240930) +++ sys/kern/vfs_syscalls.c (kopia robocza) @@ -1334,7 +1334,7 @@ bwillwrite(); NDINIT_ATRIGHTS(&nd, CREATE, LOCKPARENT | SAVENAME | MPSAFE | AUDITVNODE1, pathseg, path, fd, - CAP_MKFIFO, td); + CAP_MKNOD, td); if ((error = namei(&nd)) != 0) return (error); vfslocked = NDHASGIANT(&nd); @@ -1458,8 +1458,9 @@ AUDIT_ARG_MODE(mode); restart: bwillwrite(); - NDINIT_AT(&nd, CREATE, LOCKPARENT | SAVENAME | MPSAFE | AUDITVNODE1, - pathseg, path, fd, td); + NDINIT_ATRIGHTS(&nd, CREATE, + LOCKPARENT | SAVENAME | MPSAFE | AUDITVNODE1, pathseg, path, fd, + CAP_MKFIFO, td); if ((error = namei(&nd)) != 0) return (error); vfslocked = NDHASGIANT(&nd);