Skip to content

Commit

Permalink
Merge pull request #3708 from apostasie/fix-permission
Browse files Browse the repository at this point in the history
Fix permissions for resolv.conf and hosts
  • Loading branch information
AkihiroSuda authored Dec 2, 2024
2 parents 3c41efe + 442b01d commit 6e4afb4
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
17 changes: 17 additions & 0 deletions pkg/dnsutil/hostsstore/hostsstore.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,14 @@ func (x *hostsStore) Acquire(meta Meta) (err error) {
return errors.Join(store.ErrSystemFailure, err)
}

// os.WriteFile relies on syscall.Open. Unless there are ACLs, the effective mode of the file will be matched
// against the current process umask.
// See https://www.man7.org/linux/man-pages/man2/open.2.html for details.
// Since we must make sure that these files are world readable, explicitly chmod them here.
if err = os.Chmod(loc, 0o644); err != nil {
err = errors.Join(store.ErrSystemFailure, err)
}

var content []byte
content, err = json.Marshal(meta)
if err != nil {
Expand Down Expand Up @@ -176,6 +184,14 @@ func (x *hostsStore) AllocHostsFile(id string, content []byte) (location string,
err = errors.Join(store.ErrSystemFailure, err)
}

// os.WriteFile relies on syscall.Open. Unless there are ACLs, the effective mode of the file will be matched
// against the current process umask.
// See https://www.man7.org/linux/man-pages/man2/open.2.html for details.
// Since we must make sure that these files are world readable, explicitly chmod them here.
if err = os.Chmod(loc, 0o644); err != nil {
err = errors.Join(store.ErrSystemFailure, err)
}

return err
})
if err != nil {
Expand Down Expand Up @@ -333,6 +349,7 @@ func (x *hostsStore) updateAllHosts() (err error) {
if err != nil {
log.L.WithError(err).Errorf("failed to write hosts file for %q", entry)
}
_ = os.Chmod(loc, 0o644)
}
return nil
}
11 changes: 10 additions & 1 deletion pkg/resolvconf/resolvconf.go
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,16 @@ func Build(path string, dns, dnsSearch, dnsOptions []string) (*File, error) {
return nil, err
}

return &File{Content: content.Bytes(), Hash: hash}, os.WriteFile(path, content.Bytes(), 0644)
err = os.WriteFile(path, content.Bytes(), 0o644)
if err != nil {
return nil, err
}

// os.WriteFile relies on syscall.Open. Unless there are ACLs, the effective mode of the file will be matched
// against the current process umask.
// See https://www.man7.org/linux/man-pages/man2/open.2.html for details.
// Since we must make sure that these files are world readable, explicitly chmod them here.
return &File{Content: content.Bytes(), Hash: hash}, os.Chmod(path, 0o644)
}

func hashData(src io.Reader) (string, error) {
Expand Down

0 comments on commit 6e4afb4

Please sign in to comment.