Vraag Sudo uitvoeren zonder wachtwoord?


Geïnspireerd door dit vraag....

Ik ben de enige persoon die mijn systeem gebruikt met 12.04.
Elke keer als ik een sudo opdracht; het systeem vraagt ​​om het gebruikerswachtwoord (wat goed is op zijn eigen manier).
Maar ik zat te denken; zonder de wortel account; hoe kan ik de sudo-opdrachten uitvoeren die niet om een ​​gebruikerswachtwoord vragen om te verifiëren.

Opmerking: ik wil sudo commando uitvoeren zonder authenticatie via wachtwoord; alleen wanneer ze via terminal worden uitgevoerd.
Ik wil deze extra beveiligingslaag niet zo lang uit andere functies verwijderen met behulp van 'Ubuntu-softwarecentrum' of een bash-script uitvoeren door het bestand something.sh naar de terminal te slepen.


220
2018-06-06 12:30


oorsprong


dus je wilt alleen om het wachtwoord gevraagd worden in de terminal en voor andere dingen niet, of de andere kant op ?! in beide opzichten denk ik dat het een hoge beveiligingsinbreuk is - Dr_Bunsen
Ik wil dat dat systeem niet alleen om een ​​wachtwoord vraagt ​​wanneer het in de terminal is ... voor enig ander doel moet het systeem om een ​​wachtwoord vragen. Deze vereiste is slechts tijdelijk en moet worden gebruikt tijdens het configureren van n het installeren van nieuwe servers .. tijdens verse serverinstallaties duurt het urenlang configureren met sudo-commando's .. het uitschrijven van het wachtwoord om de 15 minuten. is hoofdpijn. Ik wil het root-account niet gebruiken. - Z9iT
U moet de discussie lezen in: askubuntu.com/questions/135428/... - david6
Je kunt de time-out zeker verlengen. Ook als u regelmatig nieuwe serverconfiguraties uitvoert, moet u nadenken over het automatiseren van het proces. Je wordt niet betaald om te typen, je wordt betaald om problemen op te lossen en om gedaan te worden. - MauganRa
Verwant: Hoe een sudo-commando uitvoeren zonder wachtwoord? - Eliah Kagan


antwoorden:


sudo -i is de manier om te gaan als u niet om de 10 minuten een wachtwoord wilt typen terwijl u wijzigingen aanbrengt in uw systeem (of andere systemen) en u geen systeembestanden wilt wijzigen.

Het zal u naar uw root overschakelen met uw sudo gebruikerswachtwoord, wanneer u de console sluit of typt exit je bent terug bij je normale gebruiker.


63
2018-06-06 13:36



Zal dit kloppen, dat ik slechts één keer een wachtwoord invoer ... en tot de tijd dat ik niet vertrek; weer 5 uur of 15 .... het systeem vraagt ​​niet om authenticatie per wachtwoord wanneer een sudo-opdracht wordt uitgegeven. - Z9iT
@ Z9iT totdat je typt exit of totdat u het terminalemulatorvenster sluit. - Bruno Pereira
Bedankt .. Geaccepteerd dit antwoord omdat het servers het doel van het uitgeven van sudo-opdrachten zonder wachtwoordauthenticatie voor n-uren tot het moment dat we niet zullen afsluiten .. Het niet wijzigen van systeembestanden is een plus. - Z9iT
Dit geeft niet echt antwoord op de vraag, omdat je nog steeds het wachtwoord moet invoeren om op dat moment root te worden. - Adam F
Niet als u een virtuele machine in een beveiligde omgeving gebruikt en u gewoon wilt dat het ding onmiddellijk iets doet en u niet met wachtwoorden wilt werken. Dit antwoord geeft geen antwoord op de vraag, terwijl het aantoonbaar nuttige informatie is. Ik ben het met Adam F eens - Jonathan Komar


De aanpak om uw probleem op te lossen is om uw gebruiker in sudoers-bestand te plaatsen, zoals u kunt zien.

Open terminalvenster en typ:

sudo visudo

Typ onderaan het bestand het volgende:

$USER ALL=(ALL) NOPASSWD: ALL

Waar $USER is uw gebruikersnaam in uw systeem. Bewaar en sluit het sudoers-bestand (als je je standaard terminal-editor niet hebt gewijzigd (je weet wanneer je dit hebt), druk je op ctl + x om af te sluiten nano (maar houd er rekening mee dat de onderstaande schermafbeelding wordt weergegeven vim) en u wordt gevraagd dit op te slaan).

sudoers file]

Hierna kunt u in het terminalvenster typen sudo <Whatever you want>, zonder dat u om het wachtwoord wordt gevraagd.

Dit geldt alleen voor sudo opdracht in terminalvenster. Wanneer u bijvoorbeeld een pakket in het softwarecentrum probeert te installeren, wordt u gevraagd om uw wachtwoord in te voegen, zoals u kunt zien in de volgende schermafbeelding.

gui password prompt

Ik denk dat dit is wat je wilt.


438
2018-06-06 13:20



Het wordt aanbevolen om te gebruiken sudo visudo in plaats van het rechtstreeks te bewerken. Ook het wijzigen van de toestemmingen van de sudoers kan zichzelf buitensluiten. Tijdens het bewerken met vim, gebruik :wq! om te schrijven naar alleen-lezen bestanden en de editor te sluiten. Op die manier zijn toestemmingen 644 niet noodzakelijk. - Lekensteyn
Dit is een serieus beveiligingsrisico. Iedereen die een account met sudo-rechten overneemt, kan het volledige systeem overnemen en verdere toegang tot deze computer blokkeren, wat ernstig wordt afgeraden. - Bruno Pereira
@ wil93 je mist het punt: een script dat vraagt sudo install crapware zal in dit geval geen wachtwoord vragen en kan alles wat je hebt verknoeien, en je hoeft niet fysiek naast een computer te zijn om scripts te verspreiden de laatste keer dat ik controleerde ... Dit is slechts een voorbeeld. - Bruno Pereira
@BrunoPereira Als u van plan bent om niet-vertrouwde scripts uit te voeren, dan dat is het beveiligingsrisico (zelfs als sudo om een ​​wachtwoord vraagt, zou een kwaadwillend script altijd kunnen doen rm -rf ~heel wat dingen verprutsen). Over het algemeen zou ik geen «ernstig veiligheidsrisico» noemen door de eenvoudige verwijdering van de wachtwoordprompt van sudo. - wil93
Ben het eens met @ wil93. Wanneer u een niet-vertrouwd script gebruikt, is het invoeren van het wachtwoord niet meer dan een kans om het proces te annuleren, terwijl ik betwijfel of het voor de meeste mensen nutteloos is. Het punt is dat je weet waar het script vandaan komt en wat het doet. - Chad


Root sudo time-outs zijn de gemakkelijkste en veiligste manier om dit te doen. Ik zal alle voorbeelden presenteren, maar wees gewaarschuwd dat het erg riskant is, hoe je dit ook doet, hoewel deze manier veel veiliger is:

sudo visudo

Dit opent een editor en verwijst deze naar het sudoers-bestand - Ubuntu staat standaard op nano, andere systemen gebruiken Vi. U bent nu een super gebruiker die een van de belangrijkste bestanden op uw systeem bewerkt. Geen stress!

(Vi specifieke instructies genoteerd met (Vi!). Negeer deze als u nano gebruikt.)

Gebruik de pijltjestoetsen om naar het einde van de Defaults lijn.

(Vi!) druk op de A (hoofdletter "a") toets om te verplaatsen aan het einde van de huidige regel en ga naar de bewerkingsmodus (voeg toe na het laatste teken op de regel).

Typ nu:

,timestamp_timeout=X

waarbij X de vervaltijd van de time-out is in minuten. Als u 0 opgeeft, wordt u altijd om het wachtwoord gevraagd. Als u een negatieve waarde opgeeft, verloopt de time-out nooit. Bijv. Defaults env_reset,timestamp_timeout=5.

(Vi!) druk op Escape om terug te keren naar de commandomodus. Als u tevreden bent met uw bewerking, typt u :w  invoeren om het bestand te schrijven en :q  invoeren om vi te verlaten. Als je een fout hebt gemaakt, is de eenvoudigste manier om opnieuw te beginnen vanaf het begin, om af te sluiten zonder op te slaan (hit Ontsnappen om de opdrachtmodus in te voeren) en typ vervolgens: q! invoeren.

Raken Ctrl+X, dan Y, dan invoeren om uw bestand op te slaan en Nano af te sluiten.

Misschien wil je de handleidingen sudoers en vi lezen voor meer informatie.

man sudoers
man vi

Reset time-outwaarde met behulp van:

sudo -k

Deze instructies zijn om de prompt voor een wachtwoord te verwijderen bij het gebruik van de opdracht sudo. De sudo-opdracht zal echter nog steeds voor root-toegang moeten worden gebruikt.

Bewerk het sudoers-bestand

Open een Terminal-venster. Typ in sudo visudo. Voeg de volgende regel toe aan het EINDE van het bestand (als het niet aan het einde is, kan het teniet worden gedaan door latere vermeldingen):

<username> ALL=NOPASSWD: ALL

Vervangen <username> met je gebruikersnaam (zonder de <>). Dit veronderstelt dat Ubuntu een groep heeft gemaakt met dezelfde naam als uw gebruikersnaam, wat typisch is. U kunt afwisselend de groepsgebruikers of een andere groep waarin u zich bevindt gebruiken. Zorg ervoor dat u zich in die groep bevindt. Dit kan worden gecontroleerd door naar Systeem -> Beheer -> Gebruikers en groepen te gaan.

Voorbeeld:

michael ALL=NOPASSWD: ALL

Typ ^ X (Ctrl+X) verlaten. Dit zou moeten vragen om een ​​optie om het bestand op te slaan, typ in Y om op te slaan.

Uitloggen en vervolgens weer aanmelden. Nu kunt u nu de opdracht sudo uitvoeren zonder dat u om een ​​wachtwoord wordt gevraagd.

Het root-account

Het root-account inschakelen

Het inschakelen van het root-account is zelden noodzakelijk. Bijna alles wat u als beheerder van een Ubuntu-systeem moet doen, kan via sudo of gksudo worden gedaan. Als u echt een permanente rootaanmelding nodig hebt, is het beste alternatief om een ​​root login-shell te simuleren met behulp van de volgende opdracht:

sudo -i

Echter, als u moet schakel root-aanmeldingen in, u kunt het als volgt doen:

sudo passwd root

Uw root-account opnieuw uitschakelen

Als u om wat voor reden dan ook uw root-account hebt ingeschakeld en dit opnieuw wilt uitschakelen, gebruikt u de volgende opdracht in de terminal:

sudo passwd -dl root

Systeembrede groep sudo

root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Uitloggen en weer terug.

Reset sudo time-out

U kunt ervoor zorgen dat sudo de volgende keer om een ​​wachtwoord vraagt ​​door het volgende uit te voeren:

sudo -k

30
2017-10-30 01:15



Ik heb dit gepost voordat ik het heb toegevoegd, want een systeembrede manier om dit te doen en anderen kunnen hier lezen: - user209328
Dit was een laat antwoord, maar is het meest uitgebreid in termen van de opties die het u geeft. - jenming


De voorkeursmanier om individuele (of groeps-) rechten toe te kennen zou zijn om bestanden toe te voegen /etc/sudoers.d

Dit scheidt lokale wijzigingen van het standaardbeleid en spaart tijd voor het geval de distributie sudoers bestand verandert.

Bijvoorbeeld:

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/username

Zal heel duidelijk maken welke gebruikers toestemming krijgen.

Op dezelfde manier kan één bestand worden gebruikt om meerdere richtlijnen te beheren:

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/local

Alsjeblieft zie /etc/sudoers.d/README  voor meer informatie.


10
2018-02-01 15:54



de echo-opdracht is mislukt, ook al ben ik root. maar ik heb het bestand toegevoegd en direct bewerkt en dit werkte op de nieuwste ubuntu (terwijl het toevoegen van de gebruiker aan de sudoers dat niet deed!) - scape
De juiste manier is om het te doen tee opdracht. - woto


Leuke one-liner om sudo-prompts voor de huidige gebruiker te verwijderen

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'

5
2018-06-27 17:50



Ik denk dat je gewoon zou kunnen doen: echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo, enkel en alleen visudo behoefte aan sudo immers (en zelfs env zal niet nodig zijn in de standaardconfiguratie, IIRC). - muru
er kan hier zoveel misgaan (uiteraard alle gebruikersfouten) dat het, naar mijn bescheiden mening, de voorkeur heeft om het sudoer-bestand rechtstreeks te bewerken (sudo visudo), tijdens het testen van het resultaat (met de editor nog steeds open), voor die nieuwe gebruikers die in de verleiding kunnen komen om dit "one-liner" te proberen. - michael
Bedankt voor de feedback! Ik probeerde gewoon snel scripts te maken, of het verwijderen van de prompt sudo-wachtwoord in mijn vluchtige test-VM's. Voel je vrij om verbeteringen aan te bevelen :) - Eric Landry


Natuurlijk wordt wat u wilt doen niet aanbevolen. Na een tijdje, hoewel het binnenkomt sudo wordt zo automatisch dat het nut ervan afneemt.

Een andere benadering is om je sudoers-bestand achter te laten zoals het is en, terwijl je iets gecompliceerds doet met je vele honderden servers, het in te voeren sudo bash. Dat geeft je een shell die als root zal worden geauthenticeerd totdat je het afsluit.


4
2018-06-06 13:27



sudo -s of sudo -i zijn waarschijnlijk beide betere ideeën dan sudo bash, omdat ze ervoor zorgen dat het milieu gezond is en zo. - Darael
"gezond en dingen" is over het algemeen niet in het rijk van "betere ideeën", zou iemand een technische verklaring kunnen geven waarom sudo -s of sudo -i beter is dan sudo bash? (Bewerken: hier is een relevante vraag askubuntu.com/questions/376199/... ) - Nuzzolilo
een aantal sudo commando's (vooral denken aan sudo pip ...) vereisen sudo -H (set HOME) om de opdracht correct uit te voeren. In andere gevallen, sudo -E (bewaar env) kan vereist zijn. hardlopen sudo bash waarschijnlijk zal werken in de meeste gevallen, maar niet in alle, en wanneer dat niet het geval is, zal het niet duidelijk zijn waarom. - michael
sudo su is de traditionele manier om van rol te veranderen en een sys-admin aan te vangen. - user1656671


Van Super gebruiker komt een goed antwoord:

Gebruik de schakeloptie -S die het wachtwoord van STDIN leest:

echo <password> | sudo -S <command>

Vervangen <password> met je wachtwoord.


1
2018-05-17 00:12