mirror of
https://github.com/containers/podman.git
synced 2025-10-18 11:42:55 +08:00
Fix podman machine set --rootful
for applehv
Fixes a bug where a user would be unable to change a rootless machine to rootful. Also makes sure that the podman/docker socket service is updated if the UID or Rootful status of the host user has been updated. [NO NEW TESTS NEEDED] Fixes: #21195 Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
This commit is contained in:
@ -405,6 +405,15 @@ func (m *MacMachine) writeConfig() error {
|
|||||||
return os.WriteFile(m.ConfigPath.Path, b, 0644)
|
return os.WriteFile(m.ConfigPath.Path, b, 0644)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *MacMachine) setRootful(rootful bool) error {
|
||||||
|
if err := machine.SetRootful(rootful, m.Name, m.Name+"-root"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
m.HostUser.Modified = true
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (m *MacMachine) Set(name string, opts machine.SetOptions) ([]error, error) {
|
func (m *MacMachine) Set(name string, opts machine.SetOptions) ([]error, error) {
|
||||||
var setErrors []error
|
var setErrors []error
|
||||||
|
|
||||||
@ -438,6 +447,14 @@ func (m *MacMachine) Set(name string, opts machine.SetOptions) ([]error, error)
|
|||||||
setErrors = append(setErrors, errors.New("changing USBs not supported for applehv machines"))
|
setErrors = append(setErrors, errors.New("changing USBs not supported for applehv machines"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if opts.Rootful != nil && m.Rootful != *opts.Rootful {
|
||||||
|
if err := m.setRootful(*opts.Rootful); err != nil {
|
||||||
|
setErrors = append(setErrors, fmt.Errorf("failed to set rootful option: %w", err))
|
||||||
|
} else {
|
||||||
|
m.Rootful = *opts.Rootful
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Write the machine config to the filesystem
|
// Write the machine config to the filesystem
|
||||||
err = m.writeConfig()
|
err = m.writeConfig()
|
||||||
setErrors = append(setErrors, err)
|
setErrors = append(setErrors, err)
|
||||||
@ -697,6 +714,17 @@ func (m *MacMachine) Start(name string, opts machine.StartOptions) error {
|
|||||||
m.isIncompatible(),
|
m.isIncompatible(),
|
||||||
m.Rootful,
|
m.Rootful,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// update the podman/docker socket service if the host user has been modified at all (UID or Rootful)
|
||||||
|
if m.HostUser.Modified {
|
||||||
|
if machine.UpdatePodmanDockerSockService(m, name, m.UID, m.Rootful) == nil {
|
||||||
|
// Reset modification state if there are no errors, otherwise ignore errors
|
||||||
|
// which are already logged
|
||||||
|
m.HostUser.Modified = false
|
||||||
|
_ = m.writeConfig()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user