-// Copyright (C) 2021 Simon Ruderich
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <http://www.gnu.org/licenses/>.
+// SPDX-License-Identifier: GPL-3.0-or-later
+// Copyright (C) 2021-2024 Simon Ruderich
package config
"io/fs"
"os"
"runtime"
- "syscall"
"testing"
"ruderich.org/simon/safcm"
+ ft "ruderich.org/simon/safcm/remote/sync/filetest"
"ruderich.org/simon/safcm/testutil"
)
-func chmod(name string, perm int) {
- err := os.Chmod(name, FullPermToFileMode(perm))
+func chmod(name string, mode fs.FileMode) {
+ err := os.Chmod(name, mode)
if err != nil {
panic(err)
}
if err != nil {
t.Fatal(err)
}
- defer os.Chdir(cwd)
+ defer os.Chdir(cwd) //nolint:errcheck
err = os.Chdir("../testdata/project")
if err != nil {
}
// Regular users cannot create sticky files
- skipInvalidSticky := runtime.GOOS == "freebsd"
+ skipInvalidSticky := os.Getuid() != 0 &&
+ (runtime.GOOS == "freebsd" || runtime.GOOS == "openbsd")
chmod("files-invalid-perm-dir/files", 0500)
defer chmod("files-invalid-perm-dir/files", 0700)
chmod("files-invalid-perm-dir/files/etc/", 0755)
chmod("files-invalid-perm-dir/files/etc/resolv.conf", 0644)
chmod("files-invalid-perm-dir-setgid/files", 0755)
- chmod("files-invalid-perm-dir-setgid/files/etc/", 02755)
+ chmod("files-invalid-perm-dir-setgid/files/etc/", 0755|fs.ModeSetgid)
chmod("files-invalid-perm-dir-setgid/files/etc/resolv.conf", 0644)
chmod("files-invalid-perm-file/files", 0755)
chmod("files-invalid-perm-file/files/etc/", 0755)
if !skipInvalidSticky {
chmod("files-invalid-perm-file-sticky/files", 0755)
chmod("files-invalid-perm-file-sticky/files/etc", 0755)
- chmod("files-invalid-perm-file-sticky/files/etc/resolv.conf", 01644)
+ chmod("files-invalid-perm-file-sticky/files/etc/resolv.conf",
+ 0644|fs.ModeSticky)
}
- err = syscall.Mkfifo("files-invalid-type/files/invalid", 0644)
- if err != nil {
- t.Fatal(err)
- }
+ ft.CreateFifo("files-invalid-type/files/invalid", 0644)
defer os.Remove("files-invalid-type/files/invalid")
const errMsg = `