Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Tworzenie kont ftp z poziomu php
krocio
post 3.02.2012, 11:14:54
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.01.2012

Ostrzeżenie: (10%)
X----


Witam serdecznie jestem posiadaczem linuxa Ubuntu i mam pewien problem.

Gdy tworzę komendą która tworzyć użytkownika z poziomu php linux nie odpowiada i nie dodaje konta

  1. ssh2_exec($connection, "adduser nazwa_uzytkownika -p haslo");
  2.  


I nie tworzy konta
Proszę o pomoc.

Może teraz będzie wam ławiej pomóc.

Posiadam skrypt php który ma dodawać uusera:

  1. <form method="post">
  2. <p>Login:<br />
  3. <input name="username" type="text" id="login"><br />
  4. </p>
  5. <p>Full Name:<br />
  6. </p>
  7. <p>Password:<br />
  8. <input name="password" type="password" id="pwd"><br />
  9. </p>
  10. <p>
  11. <input type="submit" name="Submit" value="Create">
  12. </p>
  13. </form>
  14. </body>
  15. </html>
  16.  
  17. <?php
  18. if (isset($_POST['Submit'])) {
  19.  
  20. $login=$_POST['username'];
  21. $passwd_crypt=crypt($_POST['password']);
  22.  
  23. $res=`bash /var/www/cgi-bin/user.sh $login '$passwd_crypt'`;
  24. }
  25. ?>


Następnie łączy się z user.sh i niechce dodać użytkownika oto skrypt user.sh
  1. #!/bin/bash
  2. # Script to add a user to Linux system
  3. if [ $(id -u) -eq 0 ]; then
  4. read -p "Enter username : " $1
  5. read -s -p "Enter password : " $2
  6. egrep "^$username" /etc/passwd >/dev/null
  7. if [ $? -eq 0 ]; then
  8. echo "$1 exists!"
  9. exit 1
  10. else
  11. pass=$(perl -e 'print crypt($ARGV[0], "$2")' $2)
  12. useradd -m -p $2 $1
  13. [ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
  14. fi
  15. else
  16. echo "Only root may add a user to the system"
  17. exit 2
  18. fi


Proszę o pomoc sad.gif
Go to the top of the page
+Quote Post
skowron-line
post 3.02.2012, 11:18:17
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


A nie widzę u ciebie
http://www.php.net/manual/pl/book.exec.php


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
krocio
post 3.02.2012, 11:36:38
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.01.2012

Ostrzeżenie: (10%)
X----


  1. exec($res);


nic nie pomogło sad.gif

troszkę uprościłem user.sh
  1. sudo /usr/sbin/useradd $1 -g users -c "$2" -d /home/$1 -s /bin/bash -p $3
  2. sudo /bin/mkdir /home/$1
  3.  
  4.  
  5. sudo /bin/chown -R $1:users /home/$1


dalej nie działa
Go to the top of the page
+Quote Post
skowron-line
post 3.02.2012, 11:42:55
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Jak z pziomu konsoli próbujesz odpalić swoj skrypt .sh to działa questionmark.gif Coś pokazuje questionmark.gif W phpie daje jakąś odpowiedz questionmark.gif

Edit:
Przeciecież, jeżeli nie jesteś rutem to po wywołaniu sudo zapyta o hasło ruta i tu pewnie jest problem. Uprawinienia ! czy user na którym odpalasz skrypt ma wystarczające prawa

Ten post edytował skowron-line 3.02.2012, 11:45:45


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
gothye
post 3.02.2012, 11:52:22
Post #5





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


tylko po co dodawać przez shell ?

zainstaluj proftpd + dodatek mysql , dzięki temu będziesz mógł zarządzać serwerem przez bazę mysql

to rozwiązanie ma same zalety oraz dostarcza wiecej opcji


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
krocio
post 3.02.2012, 12:31:50
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.01.2012

Ostrzeżenie: (10%)
X----


mam zainstalowane proftpd


a dokładniej jak nazwya sie ten dodatek? mysql?

odnośnie konta root to jest on odpalany z konta root

  1.  
  2. <html>
  3. <head>
  4. <title>Useradd</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  6. </head>
  7. <body>
  8. <form name="form1" method="post">
  9. <p>Login:<br />
  10. <input name="login" type="text" id="login"><br />
  11. </p>
  12. <p>Full Name:<br />
  13. <input name="name" type="text" id="name"><br />
  14. </p>
  15. <p>Password:<br />
  16. <input name="pwd" type="password" id="pwd"><br />
  17. </p>
  18. <p>
  19. <input type="submit" name="ok" value="Create">
  20. </p>
  21. </form>
  22. </body>
  23. </html>
  24.  
  25. <?php
  26. if (isset($_POST['ok'])) {
  27. if (isset($_POST['login'])) {
  28. $connection = ssh2_connect('ip.adress', 22);
  29. ssh2_auth_password($connection, 'root', 'pass');
  30. if ($connection) {
  31. $login=$_POST['login'];
  32. $nombre=$_POST['name'];
  33. $passwd_crypt=crypt($_POST['pwd']);
  34.  
  35. $res=`bash /var/www/cgi-bin/user.sh $login "$name" '$passwd_crypt'`;
  36. exec($res);
  37. echo "<br><br>User stworzony";
  38. }
  39. }
  40. }
  41. ?>
Go to the top of the page
+Quote Post
gothye
post 3.02.2012, 12:33:51
Post #7





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


Wszystko masz tutaj :

http://www.howtoforge.com/virtual-hosting-...sql-ubuntu-8.04

smile.gif


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
krocio
post 3.02.2012, 13:03:16
Post #8





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.01.2012

Ostrzeżenie: (10%)
X----


i czy w momencie dodanie użytkownika do bazy katalog dla użytkownika w /home sie utworzy?

Czy trzeba ręcznie ewnetualnie zostaje

  1. ssh2_exec($connection, "mkdir /home/nazwa");


Proszę o krótką odpowiedź smile.gif
Go to the top of the page
+Quote Post
gothye
post 3.02.2012, 13:44:04
Post #9





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


katalog użytkownika musisz już wykonać za pomocą shell'a + nadanie praw (w przypadku proftpd+mysql użytkownika w systemie linux nie ma ,więc nadajesz prawa dla katalogu , takie samo jakie posiada proftpd), nie koniecznie w /home , proponuje osobna partycję + chroot proftpd


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
prz3kus
post 3.02.2012, 14:31:21
Post #10





Grupa: Zarejestrowani
Postów: 260
Pomógł: 30
Dołączył: 22.01.2007

Ostrzeżenie: (0%)
-----


ewentualnie dodać do pliczku sudoers wpisik:

www-data ALL=(ALL) NOPASSWD: ALL

i bawić się poleceniem exec() dalej smile.gif
Go to the top of the page
+Quote Post
erix
post 3.02.2012, 14:40:27
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Też mu poradziłeś. Najlepiej, jak się dało... Jeśli jedziesz na takim serwerze, to podaj adres... tongue.gif

Rozwiązanie: skrypt w bashu, właściciel: root, prawa do wykonywania grupa (www-data) i ustawiasz sticky bit na odpalanie z prawami właściciela.



--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
prz3kus
post 3.02.2012, 15:06:46
Post #12





Grupa: Zarejestrowani
Postów: 260
Pomógł: 30
Dołączył: 22.01.2007

Ostrzeżenie: (0%)
-----


Cytat(erix @ 3.02.2012, 14:40:27 ) *
Też mu poradziłeś. Najlepiej, jak się dało... Jeśli jedziesz na takim serwerze, to podaj adres... tongue.gif

Rozwiązanie: skrypt w bashu, właściciel: root, prawa do wykonywania grupa (www-data) i ustawiasz sticky bit na odpalanie z prawami właściciela.


po. 1 to był przykładzik można to sparametryzować w tym pliczku bezpieczniej smile.gif
po. 2 zapewne po zawartości można stwierdzić że to serwer wewnętrzny więc nawet po wpisie bez hasełka ryzyko niewielkie
po. 3 twoja propozycja nie jest najgorsza co nie znaczy, że o jej bezpieczeństwie również można by było podyskutować tongue.gif
Go to the top of the page
+Quote Post
erix
post 3.02.2012, 21:48:44
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
po. 1 to był przykładzik można to sparametryzować w tym pliczku bezpieczniej

W żadnym wypadku. Wystarczy, że będzie dziura w jakimkolwiek skrypcie i już proces demona httpd kontroluje cały system. Coś takiego jest niedopuszczalne.

Cytat
po. 2 zapewne po zawartości można stwierdzić że to serwer wewnętrzny więc nawet po wpisie bez hasełka ryzyko niewielkie

Prawa Murphy'ego zna?

Cytat
po. 3 twoja propozycja nie jest najgorsza co nie znaczy, że o jej bezpieczeństwie również można by było podyskutować

Jeśli masz możliwość nadpisania skryptu, to wówczas jest problem. Ale to zupełnie co innego niż przydzielenie pełnych uprawnień usłudze, która jest dość ryzykowna w działaniu.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
krocio
post 4.02.2012, 13:15:39
Post #14





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.01.2012

Ostrzeżenie: (10%)
X----


Witam wszystko poszło gładko jednak pojawił sie problem przy konfigurowaniu pliku

/etc/proftpd/proftpd.conf

Musiałem dodać następujaca linię kodu

  1. DefaultRoot ~
  2.  
  3. SQLBackend mysql
  4. # The passwords in MySQL are encrypted using CRYPT
  5. SQLAuthTypes Plaintext Crypt
  6. SQLAuthenticate users groups
  7.  
  8.  
  9. # used to connect to the database
  10. # databasename@host database_user user_password
  11. SQLConnectInfo ftp@localhost root *******


Po restarcie serwera pojawił się błąd:


- Fatal: unknown configuration directive 'SQLBackend' on line 181 of '/etc/proftpd/proftpd.conf'



Sorka moja nie uwaga problem rozwiązałem, a leżał on w pliku:
/etc/proftpd/modules.conf

Konfiguracja lini:
  1. # Install proftpd-mod-mysql or proftpd-mod-pgsql to use this
  2. LoadModule mod_sql.c
  3. # Install proftpd-mod-mysql to use this
  4. LoadModule mod_sql_mysql.c
  5. # mod_sql_postgres.c


pomogło smile.gif

Napotkałem kolejny problem sad.gif

Proszę o pomoc

  1. if ($_GET['akcja']=="wlacz") {
  2.  
  3.  
  4.  
  5.  
  6. $nazwa = "serwer1";
  7. $user = "krocio1";
  8. $game = "cstrike"; // Gra
  9. $ip = "ip"; // IP SRV CS
  10. $port = "27112"; // SRV PORT
  11. $lan = "0"; // Server lan 1/0
  12. $maxplayers = "23"; // Sloty
  13. $map = "de_dust2"; // Mapa
  14.  
  15. $connection = ssh2_connect('ip', 22);
  16. ssh2_auth_password($connection, 'root', 'haslo');
  17. $stream1 = ssh2_exec($connection, 'cd /home/$user/hlds_l;screen -A -m -d $nazwa ./hlds_run -game $game +ip $ip +port $port +sv_lan $lan +maxplayers $maxplayers +map $map');
  18. if($connection) {
  19.  
  20. if($stream1) {
  21. echo 'Serwer wyłączony';
  22. } else {
  23. echo 'Wystąpił nie spotykany problem';
  24. }
  25.  
  26. } else {
  27. echo 'Problem połączenia z serwerem';
  28. }
  29.  
  30. }


Nie odpala się screen :/ tak jak by nie wchodził do katalogu próbowałem już na różne sposoby
  1. $stream1 = ssh2_exec($connection, 'cd /home/$user/hlds_l && screen -A -m -d $nazwa ./hlds_run -game $game +ip $ip +port $port +sv_lan $lan +maxplayers

  1. $stream1 = ssh2_exec($connection, 'cd /home/$user/hlds_l | screen -A -m -d $nazwa ./hlds_run -game $game +ip $ip +port $port +sv_lan $lan +maxplayers


I nic nie daje serwer nie startuje.
Ale jak w putty odpala z katalogu /home/user/hlds_l wszystko działa i screen się zapisuje.

Ten post edytował krocio 4.02.2012, 09:38:02
Go to the top of the page
+Quote Post
gothye
post 4.02.2012, 17:31:17
Post #15





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


pokaż co masz w logach


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
krocio
post 5.02.2012, 21:27:44
Post #16





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 20.01.2012

Ostrzeżenie: (10%)
X----


Wszystko już działa restart serwera apache pomógł smile.gif

dzięki bardzo za pomoc.

gothye +1 pomogłeś smile.gif
Go to the top of the page
+Quote Post
marekge
post 6.02.2012, 01:39:53
Post #17





Grupa: Zarejestrowani
Postów: 70
Pomógł: 8
Dołączył: 3.05.2011

Ostrzeżenie: (0%)
-----


Czy przy takim rozwiązaniu pad bazy = brak dostępu do kont FTP snitch.gif?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 11:41