sudo i script utan att ange lösen

Tråden skapades och har fått 24 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2005-02-19 18:47

Ett sätt att köra 'sudo' i script utan att "vara på plats" och ange lösen är detta:

#!/bin/sh
sudo -S < echo LÖSENORDET

du kan ju också speca i sudo-confen vad som ska få köras som root utan att behöva ange lösenord

  • Medlem
  • International user
  • 2005-02-19 19:13
Ursprungligen av Johan S:

du kan ju också speca i sudo-confen vad som ska få köras som root utan att behöva ange lösenord

Visa hur man gör!

  • Medlem
  • International user
  • 2005-02-19 21:29

Förtydligande om hur man skriver komandot:

#!/bin/sh

# Exempel
# Letar i '/.Trashes', där normalt ingen har access, efter en fil som heter 'MammaMu'
# Utan 'sudo' får man: find: /.Trashes: Permission denied

echo LÖSENORD | sudo -S find/.Trashes -name MammaMu

  • Medlem
  • Borås
  • 2005-02-19 21:38

Saxat ur en burk med OpenBSD, men det är ju samma tjabbel så..

--CUT--
# Uncomment to allow people in group wheel to run all commands
%wheel ALL=(ALL) ALL

# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
--CUT--

  • Medlem
  • International user
  • 2005-02-19 21:49

Ehhh... kan du ta det i detalj

johans ALL = NOPASSWD:/usr/local/bin/ethereal

Låter användaren johans exekvera kommandot ovan utan lösenord.
edit: raden är hämtad ur /etc/sudoers

  • Medlem
  • International user
  • 2005-02-19 22:41
Ursprungligen av Johan S:

johans ALL = NOPASSWD:/usr/local/bin/ethereal

Låter användaren johans exekvera kommandot ovan utan lösenord.
edit: raden är hämtad ur /etc/sudoers

Jag föredrar nog ändå att pipa password till sudo, eftersom jag ofta kör ett script på typ 50 datorer samtidigt, utan att behöva ändra ENVIRONMENT.

Kan hända.. tänkte bara att de kan va dumt att ha rootpass i klartext i en fil

  • Medlem
  • International user
  • 2005-02-19 23:05
Ursprungligen av Johan S:

Kan hända.. tänkte bara att de kan va dumt att ha rootpass i klartext i en fil

Man kör naturligtvis med script arguments:

172:~ admin$ ./scriptet.sh LÖSENORD 

....

#!/bin/sh

echo $1 | sudo -S ...


  • Medlem
  • Varberg
  • 2005-03-10 17:38
Ursprungligen av Wire:

Man kör naturligtvis med script arguments:

Om vi låter det här scriptet motsvara ett backupscript eller liknande:

#!/bin/sh

echo $1 | sudo -l

while true; do done

while-slingan får motsvara allt jobb som ska göras i scriptet.

Jag kör scriptet med:

./foobar losenord

Om jag nu kör en enkel 'ps ax | grep foobar' får jag nu upp följande:

23525 p3  I+      0:00.01 /bin/sh ./foobar losenord

Om du tycker det här är säkert har jag inget mer att säga.

Att ha lösenordet i klartext i ett script tycker jag inte heller är särskilt snyggt. Då skapar jag hellre en specifik användare, som får köra ett specifikt kommando utan lösenord genom sudo. Men nu börjar vi närma oss paranoid-SM här. Allt handlar ju om avvägningar.

Senast redigerat 2005-03-10 18:13
  • Medlem
  • Göteborg
  • 2005-03-10 18:09

Alternativt kan man sätta set-user på scriptet, iaf om det är ett tcsh-script så kommer det köras som ägaren av filen (bash verkar annorlunda).

men då måste du likväl skriva in lösen när scriptet körs, eller?

  • Medlem
  • Borås
  • 2005-02-19 23:59

Håller med, verkar dumt att ha lösen sparat eller skrivet vid kommandot.. Vad är problemet med att redigera /etc/sudoers så att den tillåter precis det du behöver?

  • Medlem
  • Varberg
  • 2005-02-21 22:00

Problemet med Wire's sätt är att det alltid går att få tag på lösenordet genom en enkel ps-listning på datorn i fråga. Säkrast är att tillåta root-rättigheter med sudo utan lösenord, men kanske bara för just det scriptet.

  • Medlem
  • International user
  • 2005-02-21 23:19
Ursprungligen av johanf:

Problemet med Wire's sätt är att det alltid går att få tag på lösenordet genom en enkel ps-listning på datorn i fråga. Säkrast är att tillåta root-rättigheter med sudo utan lösenord, men kanske bara för just det scriptet.

Hur skulle sådan lösning se ut? Vilka rader lägger man till i '/etc/sudoers'?

  • Medlem
  • International user
  • 2005-03-10 15:29
Ursprungligen av johanf:

Problemet med Wire's sätt är att det alltid går att få tag på lösenordet genom en enkel ps-listning på datorn i fråga. Säkrast är att tillåta root-rättigheter med sudo utan lösenord, men kanske bara för just det scriptet.

Här har du fel. Det går inte att se lösenordet genom "en enkel ps-listning". Och hur säkert är det att "tillåta root-rättigheter med sudo utan lösenord". Sanslöst osäkert.

Ursprungligen av Wire:

Här har du fel. Det går inte att se lösenordet genom "en enkel ps-listning". Och hur säkert är det att "tillåta root-rättigheter med sudo utan lösenord". Sanslöst osäkert.

Det går ju att specifiera precis vilka program som ska få exekveras, av precis vilken användare, som johanf beskrev.

  • Medlem
  • International user
  • 2005-03-10 17:12
Ursprungligen av Simon S:

Det går ju att specifiera precis vilka program som ska få exekveras, av precis vilken användare, som johanf beskrev.

Ja, men det är ju en helt annan sak.

Ursprungligen av Wire:

Ja, men det är ju en helt annan sak.

Är det? Vad är det som är osäkert jämfört med din lösning?

  • Medlem
  • Stockholm
  • 2005-03-11 11:04

Är detta något som ska köras manuellt? Annars kan du ju t ex låta cron köra det som root istället. Annars tycker jag du ska lägga till ett entry i din sudoers-fil, inte ha ditt su-password liggande i klartext på burken.

/Kalle

  • Medlem
  • Varberg
  • 2005-02-22 01:02
<användarnamn>    ALL=NOPASSWD: /path/till/scriptet

Helt otestat, möjligt att det funkar, YMMV.

  • Medlem
  • Svedala
  • 2005-03-10 20:50

Varför inte...

#!/bin/sh

read -s PASSWD

echo $PASSWD | sudo
  • Medlem
  • Varberg
  • 2005-03-10 21:08
Ursprungligen av nillon:

Varför inte...

#!/bin/sh

read -s PASSWD

echo $PASSWD | sudo

Då är det bättre att låta sudo fråga själv efter lösenordet..

  • Medlem
  • Svedala
  • 2005-03-10 21:56
Ursprungligen av johanf:

Då är det bättre att låta sudo fråga själv efter lösenordet..

Nja, inte om du ska trigga det på många maskiner.
Tex:

#!/bin/sh

read -s PASSWD

ssh maskin1 'echo $PASSWD | sudo whatever'
ssh maskin2 'echo $PASSWD | sudo whatever'
1
Bevaka tråden