odmowa zezwolenia sudo

3

Uruchomiłem ten kod:

sudo cat <<EOF | sudo sed -e "s,%,$,g" >/etc/init.d/dropbox
  echo "Hello World"
EOF

Ale mimo to dostaję „odmowę dostępu”, ponieważ musisz być rootem, aby dokonać zmian w katalogu /etc/init.d. I jakoś moje powyższe polecenie nie działa.

Czy istnieje sposób na rozwiązanie tego problemu?

8k_of_power
źródło

Odpowiedzi:

7

Przekierowanie do pliku jest obsługiwane przez bash. Dlatego nie dziedziczy uprawnień przyznanych przez sudo.

Użyj sudo teedo zapisu do pliku jako root.

Spróbuj tego:

cat | sed -e 's,%,$,g' | sudo tee /etc/init.d/dropbox << EOF
  echo "Hello World"
EOF

Zauważ, że $,wewnętrzne cudzysłowy mogą być interpretowane.

Benoit
źródło
Nadal daje mi „Odmowa zezwolenia”.
8k_of_power
Zredagowałem odpowiedź. użyj raczej sudo tee.
Benoit,
4

Możesz udzielić sobie uporczywych uprawnień
# sudo -s

następnie twoje polecenie (nie musisz już sudo) i wyjdź za pomocą
# exit

EDYCJA:
Zakładam, że pytasz o Ubuntu, ponieważ twoje pytanie jest oznaczone tym. W innych dystrybucjach, takich jak Suse, będziesz mógł używać
# su
zamiast# sudo -s

MOnsDaR
źródło
Lub zdobądź uparte prawa do gry za pomocą just su.
Chetan
1
@Chetan: To nie działa w Ubuntu. (Pytanie jest oznaczone jako Ubuntu, więc spodziewam się, że było w tym konsenserze)
MOnsDaR
przepraszam, zapomniałem wspomnieć, że jest to skrypt, więc nie mogę zrobić sudo, aby go uruchomić.
8k_of_power
Jeśli jest w skrypcie, możesz uruchomić skrypt z sudo, o ile mi wiadomo:# sudo ./myScript
MOnsDaR
Ale ponieważ jest to skrypt, nie mogę używać sudo -s wewnątrz skryptu, ponieważ linie po nim nie będą działać.
8k_of_power
0

Ta część: może sudo sed -e "s,%,$,g" >/etc/init.d/dropboxbyć postrzegana jako:

sudo somecommand --put the result of the sudo command into--> /etc/init.d/dropbox

W ten sam sposób:

ls somedirectory > filename
ls somedirectory --put the result of the ls command into--> filename

Oznacza to, że zapisywanie plików będzie wykonywane jako bieżący użytkownik, a nie jako root.

Możesz go rozwiązać, używając, teejak pokazuje Benoit w swojej odpowiedzi.

Emil Vikström
źródło
Dziękuję za opis problemu. Ale jak to rozwiązać?
8k_of_power