Come eseguire un programma come root senza "sudo"?


10

Ho un certo programma binario su OS X che può essere eseguito solo come root.

Sono stanco di anteporre sudoogni volta che lo invoco e digitando la password e vorrei che funzionasse automaticamente come root quando lo invoco regolarmente, senza chiedere una password.

Il proprietario del programma è root e il suo gruppo è wheel.

Ho provato chmod ug+sa impostare userid e groupid dopo l'esecuzione su root / wheel, ma quando eseguo il programma senza sudo si lamenta comunque che può funzionare solo con sudo o come root.


Può essere eseguito in un determinato momento o quando si verifica un evento?
user151019

9
I vecchi guru di unix suggerivano che invocare manualmente un'operazione di sola radice su base regolare significa che stai sbagliando. È qualcosa che può essere automatizzato? O correre come demone? Maggiori dettagli potrebbero portare suggerimenti per soluzioni di diverso tipo.
dmckee --- ex gattino moderatore

Il programma è effettivamente di proprietà di root? Setuid / gid utilizzerà l'utente / il gruppo del file.
Daniel Beck

2
... dove "maggiori dettagli" include anche cose come se il binario di questo programma si trova su un volume montato su NFS e se si utilizza l' nosuidopzione mount ... oltre al motivo per cui è necessario eseguire regolarmente un programma come superutente.
JdeBP,

@dmckee molti utenti mac eseguono software server sulla propria stazione di lavoro ed è spesso configurato per richiedere root per cose che davvero non dovrebbero averne bisogno ... ma riconfigurare uno stack LAMP per funzionare senza root è una seccatura. D'altra parte, riavviare apache 20 volte al giorno e digitare sudo ogni volta è anche un dolore nel culo. Questa è una soluzione semplice
Abhi Beckert,

Risposte:


2

Sei sicuro che il programma che stai tentando di eseguire sia in realtà un binario e non uno script di shell. La maggior parte delle shell ignora gli script di suid perché sono molto, molto difficili da fare in sicurezza. Un modo semplice per verificare è usare il filecomando sul programma.


17

Una mezza soluzione al tuo problema:

nel file sudoers, aggiungere quanto segue:

username ALL= NOPASSWD: /path/to/command

Quindi dalla riga di comando, puoi digitare:

sudo command

e eseguirà il comando senza chiedere la password. Questo comando verrà eseguito come root.

Nota, dovrai sostituire il nome utente con il tuo nome utente effettivo.


Stupito di trovare la risposta migliore in fondo. Grazie!
CDR,

Cordiali saluti, per risolvere l'altra metà (non è necessario digitare il comando sudo) creare un alias di shell che includa sudo nel comando (come surm = sudo rm "$ @")
Walter

4

Se davvero non puoi invocarlo come demone per qualsiasi motivo (questa domanda sarebbe rilevante in quell'istanza) , questo metodo può essere hackerato insieme, ma è piuttosto sporco e per nulla sicuro.

L'idea è di lanciarlo con un AppleScript. Dovrai prima sapere come invocare il processo dalla riga di comando (che se stai già usando sudo, significa che devi essere tutto pronto). Avvierai quel processo usando il do shell scriptcomando e invece di usare sudo scriverai le tue credenziali in AppleScript:

do shell script "/path/to/your/executable/here" user name "me" password "mypassword" with administrator privileges

Ribadisco la parte su questo essere insicuro: QUESTO SIGNIFICA CHE I TUOI CREDITI AMMINISTRATORI SARANNO MEMORIZZATI IN TESTO COMUNE. Se possibile, dovresti trovare un modo per creare questo background come LaunchDaemon.


Un modo per "Runas" per il tuo mac :) Grazie
Vlueboy il

2

SU OSX supponiamo che il programma che hai sia individuare in / usr / local / bin / YourProgramName ... Per risolvere questo problema il seguente comando, Per modificare l'ID utente / ID gruppo per le gerarchie di file radicate nei file anziché solo i file stessi .

sudo chown -R $(whoami) /usr/local/bin/

... poi nel Terminale invoca il tuo programName, $ YourProgramName


Il mio problema era che i programmi installati erano installati senza le autorizzazioni appropriate, quindi l'ho eseguito sulle directory di quei programmi e ora funzionano bene senza sudo. Grazie!
Atwixtor,

0

Tu puoi fare

sudo tcsh

che ti metterà in una shell di root.


0

sembra che il programma stesso controlli se è in esecuzione con ID = 0


1
... che ovviamente sarà se si tratta di un superutente UID impostato (lasciando da parte le preoccupazioni espresse sopra). Quello che probabilmente stai cercando di dire è che il programma sta controllando per reale UID 0 e non solo efficace UID 0.
JdeBP

-1

Potresti sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE.

Tuttavia, sono totalmente d'accordo con il commento di dmckee.


In che modo questo potrebbe aiutare? ⁠
Scott,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.