Přidání uživatele do systému pomocí PHP

Petr

Přidání uživatele do systému pomocí PHP
« kdy: 12. 01. 2013, 22:19:56 »
Dobrý den,
řeším projekt, kde bych potřeboval přidat nového uživatele do systému a taky do samby. Toto potřebuji udělat pomocí php. Na internetu jsem našel spoustu návodů jak na to žel ani jeden nefungoval :-( Nevíte někdo jak na to?? Já jsem si udělal bash skript, který uživatele vytvoří, akorát to musím tvořit přes sudo. A když to spustím v php pomoci funkce shell_exec tak to neudělá nic, protože zřejmě apache nedokáže spusiti sudo příkaz. Prosím poraďte. Děkuji všem kteří odepíší
« Poslední změna: 13. 01. 2013, 00:25:37 od Petr Krčmář »


PanKapitánRUM

Re:Přidání nového uživatele do systému pomocí php
« Odpověď #1 kdy: 12. 01. 2013, 22:35:50 »
Jde to i přímo z PHP, ale šel bych na to oddělením obou částí, například abych nezdržoval PHP.
Například je špatně, pokud PHP má právo spouštět věci pod úrovní root.

Krok 1: PHP: Získám uživatelské jméno, heslo a co potřebuji, uložím to NĚKAM(soubor/db).
Krok 2: Periodicky nebo díky nějakému jinému mechanismu spouštím skrip (BASH atd)
Krok 3: Skript se podívá NĚKAM(soubor/db) a uživatele vytvoří
http://stackoverflow.com/questions/1636977/bash-script-select-from-database-into-variable

Na první pohled to je složitější, ale funguje to velice spolehlivě a poměrně snadno se to ladí!
Hodně webů tak funguje, například těch napsaných v JAVA.

Nicméně je to i můj oblíbený způsob jak takovou věc řešit.

PanKapitánRUM

Re:Přidání nového uživatele do systému pomocí php
« Odpověď #2 kdy: 12. 01. 2013, 22:40:19 »
Doplním:

A) Hodně webů má periodicitu spouštění toho skriptu třeba 30 sekund nebo 1 minutu.
B) Hodně programů nepotřebuje mít uživatele v nějakém souboru, ale může ověřovat uživatele vůči MySQL!!!

Petr

Re:Přidání nového uživatele do systému pomocí php
« Odpověď #3 kdy: 12. 01. 2013, 22:45:39 »
Asi jsme se nepochopili. Já neřeším SQL nebo MYSQL uživatele. Já řeším Samba uživatele. Potřebuji vytvořit nového uživatele Samby, tzn, nejprve musím vytvořit uživatele v systému useradd..... a pak přidat tohoto uživatele do Samby smbpasswd.... Oba příkazy se musí spouštět přes sudo a to mi v php nejde. Tady je zakopaný pes a potřebuju vědět jak to spustit. :-)

Jose D

  • *****
  • 746
    • Zobrazit profil
Re:Přidání nového uživatele do systému pomocí php
« Odpověď #4 kdy: 12. 01. 2013, 23:03:49 »
A když to spustím v php pomoci funkce shell_exec tak to neudělá nic, protože zřejmě apache nedokáže spusiti sudo příkaz. P
A když to spustím v php pomoci funkce shell_exec tak to neudělá nic, protože zřejmě apache nedokáže spusiti sudo příkaz. Prosím poraďte. Děkuji všem kteří odepíší
Ahoj,
podíval bych se na uzivatele, pod kterym ti bezi apache, a kouknul bych se do sudoers, jestli tam je.
Pokud to ma rozumne fungovat, tak tam musi byt vypnuty chteni hesla.
Tj.
Kód: [Vybrat]
tvuj_user  ALL=(ALL) NOPASSWD: ALLAle asi bych to trochu omezil, dat apachi de facto roota je docela silne kafe, takze spis takhle:
Kód: [Vybrat]
tvuj_user  ALL= NOPASSWD: tvuj_prikaz_co_ma_jit_bez_hesla_i_s_cestou


Petr

Re:Přidání nového uživatele do systému pomocí php
« Odpověď #5 kdy: 12. 01. 2013, 23:13:23 »
V sudoers mám toto

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults   env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification


# User privilege specification
root   ALL=(ALL) ALL

# Allow members of group sudo to execute any command after they have
# provided their password
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Takže tam stačí jen přidat ten řádek??? Já těch skriptů ke spuštění budu mít vís, takže pro mě asi bude výhodnější první volba, ikdyž jsem si vědom velkého ryzika. Nebo se dá těch druhých řádku přidat víc?

PanKapitánRUM

Re:Přidání nového uživatele do systému pomocí php
« Odpověď #6 kdy: 12. 01. 2013, 23:25:07 »
Asi jsme se nepochopili. Já neřeším SQL nebo MYSQL uživatele. Já řeším Samba uživatele. Potřebuji vytvořit nového uživatele Samby, tzn, nejprve musím vytvořit uživatele v systému useradd..... a pak přidat tohoto uživatele do Samby smbpasswd.... Oba příkazy se musí spouštět přes sudo a to mi v php nejde. Tady je zakopaný pes a potřebuju vědět jak to spustit. :-)

Ty právě evidentně nechápeš mě, asi ani nečteš, co jsem napsal.

Napsal jsem ti dva možné a myslím dobré postupy:
A) PHP vloží uživatele nejprve do databáze, ze které to jiný skript vezme a uživatele fyzický vytvoří!
Možná vůbec netušíš co děláš, takže jsi ještě nepřišel na to, že budeš chtít uživatele taky mazat, takže potřebuješ mít jejich seznam.

B) Taky jsem ti napsal, že uživatele můžeš evidovat přímo v DB.
Konkrétně SAMBA může mít uživatele v DB!
http://www.gentoo-wiki.info/HOWTO_Samba_with_Mysql

Případně tu jsou věci jako LDAP, ale nechci Vás přetěžovat.




Jose D

  • *****
  • 746
    • Zobrazit profil
Re:Přidání nového uživatele do systému pomocí php
« Odpověď #7 kdy: 12. 01. 2013, 23:49:43 »
Takže tam stačí jen přidat ten řádek??? Já těch skriptů ke spuštění budu mít vís, takže pro mě asi bude výhodnější první volba, ikdyž jsem si vědom velkého ryzika. Nebo se dá těch druhých řádku přidat víc?
Jo, samozrejme do nej musis doplnit ten username..

Nebo se dá těch druhých řádku přidat víc?
Myslim ze jo, ale zkus to.

m

Re:Přidání nového uživatele do systému pomocí php
« Odpověď #8 kdy: 12. 01. 2013, 23:58:40 »
Samba vie fungovat s ldapom, php vie urcite lepsie fungovat s ldapom ako s linuxovymi systemovymi uctami. Takze ja by som sa ubral cestou ldapu..

Petr

Re:Přidání nového uživatele do systému pomocí php
« Odpověď #9 kdy: 13. 01. 2013, 00:02:30 »
Username jsem doplnil, pomocí příkazu who jsem zjistil, že mám dva uživatele se stejným názvem :D tak jsem tam dal toho pod kterým si myslím že jsem přihlášený.. Jinými slovy to username co mám v konzoli když píšu nějaký příkaz. Omlouvám se, nejsem moc změhlý v linuxu a v poslední době, jsem tvořil víc uživatelů když jsem testoval bashovský skript na tvorbu uživatelů. Nicméě do souboru jsem přidal, uložil a vyzkoušel. Myslím, že by to mělo fungovat i v terminálu, že nebudu muset psát sudo nebo ne? Díky za ochotu a trpělivost

Jose D

  • *****
  • 746
    • Zobrazit profil
Re:Přidání nového uživatele do systému pomocí php
« Odpověď #10 kdy: 13. 01. 2013, 00:18:10 »
Username jsem doplnil, pomocí příkazu who jsem zjistil, že mám dva uživatele se stejným názvem :D
...
coze?? who vypisuje aktualne prihlasene uzivatele..

Jose D

  • *****
  • 746
    • Zobrazit profil
Re:Přidání nového uživatele do systému pomocí php
« Odpověď #11 kdy: 13. 01. 2013, 00:20:48 »
Myslím, že by to mělo fungovat i v terminálu, že nebudu muset psát sudo nebo ne?
Jo, ale jen pro toho uzivatele, pro kteryho jsi pridal vyjimku do sudoers.
Uprimne ovsem pochybuju, ze ti apache bezi pod "tvym" uzivatelem.
Vetsinou to byva nejaky www-data, nebo tak nekdo.
Takze si udelej jednu vyjimku pro www-data, a jednu pro sebe, abys v konzoli nemusel zadavat heslo.. Ovsem na druhou stranu je to dalsi snizeni bezpecnosti.

Petr

Re:Přidání nového uživatele do systému pomocí php
« Odpověď #12 kdy: 13. 01. 2013, 00:30:00 »
Myslím, že by to mělo fungovat i v terminálu, že nebudu muset psát sudo nebo ne?
Jo, ale jen pro toho uzivatele, pro kteryho jsi pridal vyjimku do sudoers.
Uprimne ovsem pochybuju, ze ti apache bezi pod "tvym" uzivatelem.
Vetsinou to byva nejaky www-data, nebo tak nekdo.
Takze si udelej jednu vyjimku pro www-data, a jednu pro sebe, abys v konzoli nemusel zadavat heslo.. Ovsem na druhou stranu je to dalsi snizeni bezpecnosti.

who -q jsem vzal odtut, tady tvrdí že to vypíše aktuálně přihlášené uživatele http://www.linuxvbashi.cz/ucty-a-prava

Petr

Re:Přidání uživatele do systému pomocí PHP
« Odpověď #13 kdy: 13. 01. 2013, 00:35:37 »
Přidal jsem do konfiguráku ale nějak to nechce fungovat ani v konzoli ani v php myslím psaní příkazú bez sudo
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults   env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification


# User privilege specification
root   ALL=(ALL) ALL

# Allow members of group sudo to execute any command after they have
# provided their password
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
www-data ALL=(ALL) NOPASSWD: ALL
pokus ALL=(ALL) NOPASSWD: ALL

PanKapitánRUM

Re:Přidání nového uživatele do systému pomocí php
« Odpověď #14 kdy: 13. 01. 2013, 00:37:38 »
Samba vie fungovat s ldapom, php vie urcite lepsie fungovat s ldapom ako s linuxovymi systemovymi uctami. Takze ja by som sa ubral cestou ldapu..

Taky jsem to psal, ale to by vyžadovalo nějaké studium, na což evidentně dojde, jen pokud CTRL+C a CTRL+V selže  :P