


Is it possible to run sudo commands in go without running the program itself as sudo
php Editor Banana is here to answer a question about the Go language: Is it possible to run the sudo command in Go without running the program itself as sudo? In the Go language, by using the Command function in the os/exec package, we can execute system commands, including sudo commands, in the program. However, it should be noted that if you want to execute sudo commands in a Go program, the program itself must have sudo permissions. Otherwise, the program will not be able to successfully execute the sudo command. Therefore, if you wish to execute sudo commands in a Go program, it is very important to ensure that the program itself has sudo permissions.
Problem content
This program runs multiple commands that require sudo permissions (such as sudo dnf update). Since the program should be installed using the go install
command, it cannot be run as sudo without a user completing the configuration (as far as I know).
The program does not display output to the user to keep the output clean. To show that a process is running, it uses spinners from the spinner library.
Can I do these things?
- Get sudo permissions from within the program
- Make the program runable via sudo, even if it was installed using
go install
- Show the output of sudo commands (including password requests) without being overwritten by the spinner
Here is a simplified version of what I want the code to do:
package main import ( "fmt" "os" "os/exec" "time" "github.com/briandowns/spinner" ) func main() { // Spinner to show that it's running s := spinner.New(spinner.CharSets[14], time.Millisecond*100) s.Start() // Somehow execute this with sudo _, err := exec.Command(os.Getenv("SHELL"), "-c", "dnf update -y").Output() // Stop the spinner and handle any error if err != nil { fmt.Printf("Err: %s", err) os.Exit(1) } s.Stop() // Finish fmt.Println("Success") }
Solution
_, err := exec.Command(os.Getenv("SHELL"), "-c", "sudo dnf update -y"). Output()
In this example, add sudo
before the command you want to run as sudo and after running the program, you will be asked for the password for sudo, If you apply this to the example code, You won't see the password request message because rotating the graphic will overwrite it, but if you try this without rotating the graphic you can see it. Even if you don't see the message, if you enter the correct password and press Enter, your command will work like this sudo. This way you don't need to run the application as sudo. I've run similar commands using it and they work.
The above is the detailed content of Is it possible to run sudo commands in go without running the program itself as sudo. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The problem of using RedisStream to implement message queues in Go language is using Go language and Redis...

What should I do if the custom structure labels in GoLand are not displayed? When using GoLand for Go language development, many developers will encounter custom structure tags...

The library used for floating-point number operation in Go language introduces how to ensure the accuracy is...

Queue threading problem in Go crawler Colly explores the problem of using the Colly crawler library in Go language, developers often encounter problems with threads and request queues. �...

The difference between string printing in Go language: The difference in the effect of using Println and string() functions is in Go...

Two ways to define structures in Go language: the difference between var and type keywords. When defining structures, Go language often sees two different ways of writing: First...

Which libraries in Go are developed by large companies or well-known open source projects? When programming in Go, developers often encounter some common needs, ...

Resource management in Go programming: Mysql and Redis connect and release in learning how to correctly manage resources, especially with databases and caches...
