tools: add fchownat syscall

and constant AT_EMPTY_PATH for chowning a directory/file opened via
openat(2), for example when walking/creating a directory tree without
following symlinks.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
Fabian Grünbichler 2019-07-24 13:37:14 +02:00 committed by Thomas Lamprecht
parent 6bd0783c11
commit 6cf6b40469
2 changed files with 8 additions and 0 deletions

View File

@ -14,6 +14,7 @@ BEGIN {
mkdirat => &SYS_mkdirat,
faccessat => &SYS_faccessat,
setresuid => &SYS_setresuid,
fchownat => &SYS_fchownat,
);
};

View File

@ -85,6 +85,8 @@ use constant {CLONE_NEWNS => 0x00020000,
use constant {O_PATH => 0x00200000,
O_TMPFILE => 0x00410000}; # This includes O_DIRECTORY
use constant {AT_EMPTY_PATH => 0x1000};
sub run_with_timeout {
my ($timeout, $code, @param) = @_;
@ -1556,6 +1558,11 @@ sub mkdirat($$$) {
return syscall(PVE::Syscall::mkdirat, $dirfd, $name, $mode) == 0;
}
sub fchownat($$$$$) {
my ($dirfd, $pathname, $owner, $group, $flags) = @_;
return syscall(PVE::Syscall::fchownat, $dirfd, $pathname, $owner, $group, $flags) == 0;
}
my $salt_starter = time();
sub encrypt_pw {