mirror of
https://github.com/Luzifer/password.git
synced 2024-11-10 10:20:01 +00:00
49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
|
// Copyright 2014 Jonas mg
|
||
|
//
|
||
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
||
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||
|
|
||
|
package osutil
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"os"
|
||
|
"os/exec"
|
||
|
)
|
||
|
|
||
|
// Exec executes a command setting both standard input, output and error.
|
||
|
func Exec(cmd string, args ...string) error {
|
||
|
c := exec.Command(cmd, args...)
|
||
|
c.Stdin = os.Stdin
|
||
|
c.Stdout = os.Stdout
|
||
|
c.Stderr = os.Stderr
|
||
|
|
||
|
if err := c.Run(); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// ExecSudo executes a command under "sudo".
|
||
|
func ExecSudo(cmd string, args ...string) error {
|
||
|
return Exec("sudo", append([]string{cmd}, args...)...)
|
||
|
}
|
||
|
|
||
|
// Sudo executes command "sudo".
|
||
|
// If some command needs to use "sudo", then could be used this function at
|
||
|
// the beginning so there is not to wait until that it been requested later.
|
||
|
func Sudo() error {
|
||
|
return Exec("sudo", "/bin/true")
|
||
|
}
|
||
|
|
||
|
var ErrNoRoot = errors.New("MUST have administrator privileges")
|
||
|
|
||
|
// MustbeRoot returns an error message if the user is not root.
|
||
|
func MustbeRoot() error {
|
||
|
if os.Getuid() != 0 {
|
||
|
return ErrNoRoot
|
||
|
}
|
||
|
return nil
|
||
|
}
|