Nowe posty

Autor Wątek: Jak rozpocząć skrypt, zaloguj na root > wykonaj polecenia  (Przeczytany 3474 razy)

Koeshi

  • Gość
Witam

Nie wiem czy temat odpowiednio skonstruowany ale już naświetlam o co  się rozchodzi.

Przeczytałem artykuł na stronie jaki linux, jak zrobić AP. Wszystko działa jak trzeba, jedyne co to po uruchomieniu komputera trzeba wykonać kilka poleceń, zrobiłem sobie więc skrypcik który sobie uruchamia co trzeba.

#!/bin/bash


sudo ifconfig wlan0 192.168.2.2 netmask 255.255.255.0

sudo iptables -t filter -P FORWARD DROP
sudo iptables -t filter -A FORWARD -s 192.168.2.0/255.255.255.0 -d 0/0 -j ACCEPT
sudo iptables -t filter -A FORWARD -s 0/0 -d 192.168.2.0/255.255.255.0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 0/0 -j MASQUERADE
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables-save

sudo /etc/init.d/dnsmasq restart

sudo hostapd -d /etc/hostapd/hostapd.conf
Wszystko działało do ostatniej aktualizacji systemu, problem jest z poleceniem:

sudo echo 1 > /proc/sys/net/ipv4/ip_forward

"Brak dostępu", muszę teraz otwierać specjalnie dla tej jednej linijki nowe okno terminala zalogować na root wykonać i zamknąć okienko. Nie jest to może jakaś katastrofa no ale fajnie było by gdyby wszystko samo zatrybiło bez zbędnych ingerencji :P

Wspomnę tylko ze próbowałem wstawić na początku skryptu su  ale po podaniu hasła nic się nie dzieje.

Będę wdzięczny za jakąś sugestie.

Pozdrawiam.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3070
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Jak rozpocząć skrypt, zaloguj na root > wykonaj polecenia
« Odpowiedź #1 dnia: 2012-01-26, 15:02:54 »
Pokazuję i objaśniam:

Polecenie SUDO kończy się na przekierowaniu. czyli ECHO robi się w SUDO (jak się domyślasz, niepotrzebnie), ale zapisujesz do pliku już jako zwykły użytkownik. Dlatego jest błąd.

Masz 2 drogi:
Albo wymuszasz całą linijkę w SUDO:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
albo robisz to "jak admin przykazał", czyli przez sysctl
sudo sysctl net.ipv4.ip_forward=1
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
Jak rozpocząć skrypt, zaloguj na root > wykonaj polecenia
« Odpowiedź #2 dnia: 2012-01-26, 15:07:58 »
Wywołaj cały skrypt przez sudo zamiast poszczególne komendy.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3070
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Jak rozpocząć skrypt, zaloguj na root > wykonaj polecenia
« Odpowiedź #3 dnia: 2012-01-26, 15:48:17 »
Czasem na początku skryptu daję takie coś:
#!/bin/bash

if [ $EUID -ne 0 ]
then
  sudo "$0" $*
  exit
fi

# ...
# ...
# Reszta skryptu
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Koeshi

  • Gość
Jak rozpocząć skrypt, zaloguj na root > wykonaj polecenia
« Odpowiedź #4 dnia: 2012-01-26, 16:17:44 »
Dzięki pkraszewski, skorzystałem z 2 sposobu i wszystko działa bez problemu.

@vanhelzing, jeśli wywołanie całego skryptu przez sudo polega na dodaniu początku jaki dał kolega pkraszewski to zkorzystałem z tej opcji :D i tak teraz wygląda mój pierwszy profesjonalnie napisany skrypt:

#!/bin/bash

if [ $EUID -ne 0 ]
then
  sudo "$0" $*
  exit
fi

ifconfig wlan0 192.168.2.2 netmask 255.255.255.0

iptables -t filter -P FORWARD DROP
iptables -t filter -A FORWARD -s 192.168.2.0/255.255.255.0 -d 0/0 -j ACCEPT
iptables -t filter -A FORWARD -s 0/0 -d 192.168.2.0/255.255.255.0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 0/0 -j MASQUERADE
sysctl net.ipv4.ip_forward=1
iptables-save

/etc/init.d/dnsmasq restart

hostapd -d /etc/hostapd/hostapd.conf
Dzięki bardzo i pozdrawiam !