}
// When installing packages, the installed package directory should
-// respect the group sticky bit and group name of the destination
+// respect the SetGID bit and group name of the destination
// directory.
// See https://golang.org/issue/18878.
-func TestRespectGroupSticky(t *testing.T) {
+func TestRespectSetgidDir(t *testing.T) {
if runtime.GOOS == "nacl" {
- t.Skip("can't set group sticky bit with chmod on nacl")
+ t.Skip("can't set SetGID bit with chmod on nacl")
}
var b Builder
return cmdBuf.WriteString(fmt.Sprint(a...))
}
- stickydir, err := ioutil.TempDir("", "GroupSticky")
+ setgiddir, err := ioutil.TempDir("", "SetGroupID")
if err != nil {
t.Fatal(err)
}
- defer os.RemoveAll(stickydir)
+ defer os.RemoveAll(setgiddir)
- testdir, err := ioutil.TempDir(stickydir, "testdir")
- if err != nil {
- t.Fatal(err)
+ if runtime.GOOS == "freebsd" {
+ err = os.Chown(setgiddir, os.Getuid(), os.Getgid())
+ if err != nil {
+ t.Fatal(err)
+ }
}
- // Change testdir's permissions to include group sticky bit.
- if err := os.Chmod(testdir, 0755|os.ModeSetgid); err != nil {
+ // Change setgiddir's permissions to include the SetGID bit.
+ if err := os.Chmod(setgiddir, 0755|os.ModeSetgid); err != nil {
t.Fatal(err)
}
defer os.Remove(pkgfile.Name())
defer pkgfile.Close()
- stickyFile := filepath.Join(testdir, "sticky")
- if err := b.moveOrCopyFile(nil, stickyFile, pkgfile.Name(), 0666, true); err != nil {
+ dirGIDFile := filepath.Join(setgiddir, "setgid")
+ if err := b.moveOrCopyFile(nil, dirGIDFile, pkgfile.Name(), 0666, true); err != nil {
t.Fatalf("moveOrCopyFile: %v", err)
}
got := strings.TrimSpace(cmdBuf.String())
- want := b.fmtcmd("", "cp %s %s", pkgfile.Name(), stickyFile)
+ want := b.fmtcmd("", "cp %s %s", pkgfile.Name(), dirGIDFile)
if got != want {
- t.Fatalf("moveOrCopyFile(%q, %q): want %q, got %q", stickyFile, pkgfile.Name(), want, got)
+ t.Fatalf("moveOrCopyFile(%q, %q): want %q, got %q", dirGIDFile, pkgfile.Name(), want, got)
}
}