2015-04-29 7 views
5

Utworzyłem użytkownika o nazwie samX z uprawnieniami roota (dodano "samX ALL = (ALL: ALL) ALL" w visudo).Jak mogę zastosować hasło do sudo w jednym poleceniu liniowym i wykonać polecenie su root?

Próbuję zastosować hasło do sudo, następnie su root i wykonać kolejno whoami w jednym poleceniu linii. Moje bieżące polecenie jest nieco następujące, ale narzeka na błąd: sudo: su root; whoami: nie znaleziono polecenia

echo 'CbEYKFKt' | sudo -S 'su root; whoami' 

W którym 'CbEYKFKt' jest hasłem użytkownika samX.

Czy mimo to można rozwiązać ten problem? Wielkie dzięki.

+0

Nie przekazałbym hasła przez stdin. Zamiast tego pozwoliłbym użytkownikowi na wykonanie niezbędnych poleceń za pośrednictwem sudo bez hasła. Możesz to skonfigurować w '/ etc/sudoers' – hek2mgl

Odpowiedz

2
echo 'CbEYKFKt' | sudo -S su -c whoami 

powinno działać - -c określa polecenie dla SU natomiast w przykładzie wydaje się być uruchomione polecenia „root; whoami "co nie istnieje - nie ma powłoki, która mogłaby to rozbić na dwa osobne polecenia.

+0

, co z tym poleceniem:' echo 'CbEYKFKt' | sudo -S su -c /etc/init.d/iptables -L -vn', narzeka ** su: nieprawidłowa opcja - 'L' **. – Judking

+0

Zauważyłem, że wycena rozwiąże to ładnie. Dzięki jeszcze raz! – Judking

+0

dzięki. zadziałało idealnie i rozwiązało mój problem – Nani

4

Należy naprawdę dodać linię do pliku sudoers takich jak

samX ALL=(ALL:ALL) NOPASSWD: /sbin/su 

zamiast zapisywać hasła w historii bash lub dowolny inny plik. Dzięki temu nie ma potrzeby wprowadzania hasła w ogóle.

Jeśli chcesz wykonać inne polecenie, dodaj to.

+0

Jak widzisz, moja wersja zawiera twoją wersję, więc nie muszę podawać hasła roota, potrzebne jest tylko hasło SamX. – Judking

+0

@Judking z tą linią, nie musisz nawet podawać hasła samX. – martin

+0

Dam to zastrzelić! Dzięki!! – Judking

0

Zamiast umieszczać wszystkie polecenia w jednej linii, można napisać kody normalnie i podzielić go na kilka linii:

#!/bin/bash 
echo "CbEYKFKt" | sudo -S echo && sudo -s <<EOF 
#put your code here 
#All codes will be executed as sudo 
EOF 

Uwaga: przechodzącą hasło jak to jest zły pomysł.

0

To powinno działać.

echo CbEYKFKt | sudo -S; whoami 
Powiązane problemy