Comments (5)
Thanks @jviotti
To understand how sudo-prompt
works see: #18 (comment)
The Attempt() call is just the tip of the iceberg. That's there to try and run the command if a sudo session already exists [...] But otherwise, the user command is run by a bash subshell which is called by the applet after acquiring administrator privileges.
from sudo-prompt.
Hi @jorangreef ,
I inspected the applet zip after decoding it from index.js
. After some more experimentation, my Electron application works fine, inheriting env vars correctly when the sudo timestamp is invalidated (the dialog is shown), however it fails afterwards, unless I run sudo -k
.
Adding the -E
option in Attempt()
seems to solve the issue. As far as I can see Attempt()
runs the command I passed to sudo-prompt
to check if the process fails due to sudo
requiring a password, or continues without problems.
Looks like the applet is handling the env var situation correctly already, so making sure Attempt()
inherits the environment in case it succeeds is enough.
from sudo-prompt.
Thanks @jviotti, I saw that sudo's -E
option can fail if denied by the user's sudoers
policy:
sudo will return an error if the -E option is specified and the user does not have permission to preserve the environment.
I am not sure whether we will run into any -E
errors in the wild, but if we do, then we will need to add support for explicit options.env
in sudo-prompt
rather than relying on the applet and sudo
to preserve the user's environment.
For now though, we need to make a small change to the pull request (see there), and then it should be fine to land.
from sudo-prompt.
@jorangreef I see. What about making this an opt-in option? Like preserveEnvironment: true
?
from sudo-prompt.
I think it would be good to land the -E
argument in Attempt()
for now, but without making any promises in the documentation regarding preserving the environment.
Adding options tends to increase surface error for bugs, so if an option were to be added, I would rather add support for explicit options.env
. It is lower level than preserveEnvironment
(so preserving the environment could be built on top of that by the user) and also expected from the interface of child_process.exec()
.
from sudo-prompt.
Related Issues (20)
- 'Command failed' in Electron app HOT 1
- Not possible in Mac App Store, aka app-sandbox HOT 5
- macOS Catalina Operation not permitted HOT 1
- OS dialog prompt is not being prompted in Windows 10 HOT 1
- Operation not permitted in macOS with sudo-prompt
- Prompt shows but name and icon are not visible on macOS HOT 8
- "User did not grant permissions" if I click "Yes" too quickly on Windows? HOT 1
- `sudo-prompt` fails to detect `pkexec` or `kdesudo` in "strictly" confined snap
- Special characters handling on Linux
- Strange behaviour with Electron 9 on Win10 HOT 1
- in Eelectron app Rendering process, sudo run cp not work
- Hello, why option.name just support [a-z0-9 ] ?
- How to get elevated shell and run a command without sudo prefix HOT 1
- macOS: Application cannot be opened because the developer cannot be verified
- BigSur 11.1 issue: The authorization was denied since no user interaction was possible HOT 1
- Linux: option.env not used
- Unexpected behaviour with linux - electron.js HOT 1
- electron exe with root system privileges in linux, It's possible to do ?
- How to run multiple commands without requiring password every time HOT 6
- Any pkg similar to this, but without root/admin?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sudo-prompt.