Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Petr 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íší
-
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.
-
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!!!
-
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. :-)
-
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.
tvuj_user ALL=(ALL) NOPASSWD: ALL
Ale asi bych to trochu omezil, dat apachi de facto roota je docela silne kafe, takze spis takhle:
tvuj_user ALL= NOPASSWD: tvuj_prikaz_co_ma_jit_bez_hesla_i_s_cestou
-
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?
-
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.
-
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.
-
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..
-
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
-
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..
-
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.
-
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
-
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
-
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
-
Nj jenže já kromě přidávání uživatelů do samby, potřebuji i restartovat sambu, nastavovat wifi hodnoty, jako mod, ssid.... a další věci a to vše potřebuji řešit pomocí php. Jinými slovy dělám malý domáci server a potřebuji ho konfigurovat přes www rozhraní.
-
Přihlašování na Wifi ?
No a právě proto je tu LDAP.
http://www.abclinuxu.cz/poradna/linux/show/315738
Jinak pro tento účel už existuje řada hotový aplikací.
Třeba:
http://www.root.cz/clanky/freenas-8-0-datove-uloziste-za-pet-minut/
Ale chápu tu krásu a požitek při znovuobjevování kola.
Člověk se vydává cestou předků, snaží se alespoň dotknout znalostí moudrých lidí, kteří původní vynález realizovali.
-
Já to mám zadané jako bakalářskou práci, takže hold vynalézám znovu kolo. Stávající konfigurátory použít nemůžu, musím udělat svůj vlastní konfogurátor.....
-
Tak se seznam s LDAP, protože přes LDAP se ověřování dělá a budeš mít o čem v práci pindat.
Mimo to se ti to bude hodit i pak, pokud teda nepůjdeš prodávat do Tesco.
-
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
sudoers ti zadny prikazy bez sudo nezaridi. "Jen" upravuje chovani prikazu sudo urcitym zpusobem, ktery najdes v manualu ;)
Takze hezky:
man sudo
.
-
1. NIKDY (to znamená opravdu za žádných okolností) na takovéhle věci nepoužívat v sudo opravnění spouštět všechno (ALL). Od toho má sudoers aliasy pro příkazy, aby se dalo snadno jednotlivým uživatelům přidělovat právo pro skupiny příkazů, které můžou spouštět s eskalovanými právy.
2. I bakalářka vyžaduje prvně se ve věci zorientovat a teprve poté ji řešit.
3. Je dost smutný, že se na některých našich školách předkládá k řešení něco, co out of the box umí krabička za sedm stovek (Mikrotik), dostupná v každém obchodě s počítači.
-
+1
-
Mně spíš přijde smutný, že někdo píše bakalářku, ve které vytváří nástroj na správu účtů a přitom mu evidentně chybí základní znalosti administrace uživatelů a oprávnění v OS.
Bohužel jsem se setkal již s několika obhájenými bakalářkými pracemi, které bych se styděl odevzdat jako ročníkový projekt na střední škole.
-
Smutný, celý to je smutný(zadání, nápad řešit uživatele přímo z PHP...). Evidentne chybejici zakladni teoreticky znalosti dotazem do fora proste nenahradis.
-
Stačí umět Matiku a BC uděláš, naopak můžeš bejt druhej BernStain a bez matiky to neuděláš.
-
To není pravda. Pokud je na veřejné škole, tak se stačí naučit cokoli, co chtějí. To zvládají i holky a podprůměrní kluci. On je ale asi třeba na soukromé, protože takovou bakalářku bez znalostí nikde nedostaneš. Před bakalářkou už musíš mít trochu představu, co chceš udělat. Ne jen, že chceš tohle a tohle a vy mi napište přesný postup a já to slepím. Nebo?
-
A to se pleteš, nemluvím tu o BC na našich dvou nejlepších školách (tam by to OBVYKLE neprošlo), ale o BC "méně top".
Tam ti fakt stačí umět matiku a odpapouškovat pár frází.
Nehledě na to, že zrovna z ČVUT jsem viděl bakalářku, kde bylo na každé straně několik chyb a nespisovný jazyk.
(Taky prošla...)
No já byl dobrej ve všem kromě matiky a nedodělal jsem, zato těch bakalářek mám obhájenejch hromadu, protože ty lemplové o tom věděli kulový, tak mi raději dali 10 litrů, abych to pro ně komplet udělal.
-
¨Je pravda, že za celé bakalážské studium, jsme neměli předmět zaměřený na php. Dále je pravda že předmět zaměřený na linux, tvorbu uživatelů, tvorbu bash skriptů, řešení oprávnění jsme taky neměli. Akorát jsme měli předmět Operační systémy, kde se probíralo programování pod linuxe, použiti rour, procesů, vláken řešení rpc problému souběhu, semafory.... Je fakt že to co dělám ve své práci je už vyřešené proč ne, jenže
1. chci mít server s minimkální spotřebou - bude to fungovat na Raspberry PI
2. musí to mít dostatečný výkon a možnost připojení několika velkých disků - ne každý NAS to umožňuje, kdyžtak omezeně.
3. musí to umět rozdělovat internetové připojení - dhcp server
4. mělo by to umět vysílat wifi - mod AP - to je problém, nepotařilo se nám to na Raspberri PI rozjet ovladače to nepodpozují testováno na 3 zařízeních
5. musí to umět stahovat torrenty - některé NAS a Routry to umí to je fakt
6.Musí to umět vypínat disky v době nečinnosti - standartní funkce linux
7.další možnosti rozšíření plynoucí z použití operačního systému a konfigurace raspberry - připojení teplotních čidel,....
-
"bakalážské" studium, atd.....koukám, že jsem už asi vážně příliš starej kretén ::)
-
... že za celé bakalážské studium, jsme neměli předmět zaměřený na php.
... předmět zaměřený na linux, tvorbu uživatelů, tvorbu bash skriptů, řešení oprávnění jsme taky neměli.
Neměli, nebo jsi ho jen nemel zapsany? ;)
1. chci mít server s minimkální spotřebou - bude to fungovat na Raspberry PI
2. musí to mít dostatečný výkon a možnost připojení několika velkých disků - ne každý NAS to umožňuje, kdyžtak omezeně.
Minimální spotřeba dejme tomu, ale ten dostatečný výkon, nevím.., záleží čemu má dostačovat.. Výkon raspberry prý odpovídá Pentium II. (nevím, Pentium II jsem neměl a na Raspberry mam zatim jen VPN server..)
Kápni božskou, na jaký jsi škole, občas se tu lidi ptaji kam jit, tak aby věděli kam nejit, když chtějí studovat linux.. :D
-
¨Je pravda, že za celé bakalážské studium, jsme neměli předmět zaměřený na php. Dále je pravda že předmět zaměřený na linux, tvorbu uživatelů, tvorbu bash skriptů, řešení oprávnění jsme taky neměli. Akorát jsme měli předmět Operační systémy, kde se probíralo programování pod linuxe, použiti rour, procesů, vláken řešení rpc problému souběhu, semafory....
Tak proč si pro pána krále bereš bakalářku na něco, o čem jsi nikdy neslyšel? Pokud tě to nikdo nenaučil, tak se to holt budeš muset naučit sám před tím, než tu bakalářku začneš psát.
Je fakt že to co dělám ve své práci je už vyřešené proč ne, jenže
1. chci mít server s minimkální spotřebou - bude to fungovat na Raspberry PI
2. musí to mít dostatečný výkon a možnost připojení několika velkých disků - ne každý NAS to umožňuje, kdyžtak omezeně.
3. musí to umět rozdělovat internetové připojení - dhcp server
4. mělo by to umět vysílat wifi - mod AP - to je problém, nepotařilo se nám to na Raspberri PI rozjet ovladače to nepodpozují testováno na 3 zařízeních
5. musí to umět stahovat torrenty - některé NAS a Routry to umí to je fakt
6.Musí to umět vypínat disky v době nečinnosti - standartní funkce linux
7.další možnosti rozšíření plynoucí z použití operačního systému a konfigurace raspberry - připojení teplotních čidel,....
No takže když to shrneme, musí to umět věci 2-7, které umí každý dnešní operační systém. Včetně třeba FreeNAS (s tou dvojkou si děláš legraci? NASový systém, který neumí připojit "velké" disky?)
Plus to musí běžet na RPi, které "neumí AP". Potom je ovšem vhodná otázka, proč ho neumí, když ne něm běží univerzální operační systém Debian. Jestli ono to nebude nějaké hardwarové omezení, které stejně nepřekonáš...
Jako nic osobního, ale celá ta věc (alespoň co můžu soudit z tvého vystupování tady), se mi vůbec nelíbí :(
-
To o čem jsem psal nebyly znalosti PHP, ale znalosti obecne, rozhled napric programovanim. To,ze te vubec napadla takova hovadina jako delat v php skriptu neco takoveho... bud bys to musel delegovat nebo nechat treba apache bezet pod rootem... to je relativne jednoduche kompromitovat (rika ti neco treba aspon PDO? pokud ne a budes psat sql dotazy jak to lezi a bezi tak je to dost vo hubu).
Pokud bys v PHP jen data ukladal do DB a tam odsud si je treba tahal nejaky demon nebo skript spousteny cronem pod rootem tak potom je to o neco mene nebezpecne.
Kdy to odevzdavas?
-
Na které škole studuješ?
-
Markus: Podle toho, co psal o přemětu "operační systémy" to vidím na VUT FIT - a v tom případě ale moc nesouhlasím s:
.. Dále je pravda že předmět zaměřený na linux, tvorbu uživatelů, tvorbu bash skriptů, řešení oprávnění jsme taky neměli...
- pokud ovšem tazatel nečeká, že se bude celý semestr učit, jak udělat pětiřádkový skript a tři přednášky se stráví vysvětlováním "musíte tomu skriptu nastavit příznak pro spuštění". V IOSu jsou dva "velké" projekty, jeden z nich jsou shellové skripty (tuším že v mém ročníku to byl nějaký diff na archivy a filtr na vecpání html tagů do textu - zvýraznění syntaxe), druhý něco zaměřeného na základy víceprocesových aplikací (semafory a spol) - na pochopení základů je to dostačující.
Umět na konci semestru vytvořit v linuxu uživatele, nebo textový soubor a něco do něj zapsat - na to mají předmět možná tak na baťovce.
-
Jestli tohle pouští ze škol, pak se nemůže nikdo divit, že je bez tří let praxe nechtějí zaměstnat.
-
clovece, nechaj si poradit a pouzi obvykle riesenia, napriklad ldap pre overovanie.
Ak v nejakej firme odovzdas desing s tym ze tam ches z php volat prikazy cez sudo tak ta posle do zadeke najskor oddelenie ktore ma na starosti spravu servrov a potom ta posle rovnakou cestou aj tvoj nadriadeny. Ani sa nedostanes k programovaniu.
Yo, a ak ma ta bakalarka o niecom byt tak si to aj nastuduj, mal by si to aj obhajovat :D
-
pripadne to spravit ako sa to v NASoch robi a sice rozbehat http server naprikal v perle alebo v pythone, i ked robit to v PHP by bola vcelku rarita ale nemyslim ze by to bolo pozitivne hodnotene prvenstvo ;)
-
mal by si to aj obhajovat :D
To bych neviděl jako větší problém - o tom, co je a co není v praxi použitelné vědí obvykle akademici dost málo. A opravdových machrů na Unixy není moc, takže by to byla spíš zatracená smůla, kdyby před někým takovým musel obhajovat...
-
Tak nějak, mohl by mluvit o nutnosti pokřtění systému světelným mečem, no pokud by k tomu vymyslel dostatečně zajímavou historku, možná by se to začalo i učit.
App, tohle není vycucané z prstu.
Byl udělaný takový experiment, kdy na WIKI byl založen článek o nějaké ptákovině, plus několik site, která tvrzení podporovala.
(Udělat site umí kde kdo.)
No a protože k tomu byla pěkná historka, začali to "nachytaní" kantoři říkat žákům jako zajímavost pro osvěžení výuky ;D
Jinak tenhle "Fór" prý ještě pořád trvá :P
Dá se to zopakovat, dal by se vymyslet třeba ten "Rituál křtění programu světelným mečem."
"Programátoři mají zvláštní rituál, kdy po dokončení poslední řádky křtí program pomocí světelného meče, tento rituál vznikl po uvedení hvězdných válek a je velice běžný. Je naopak neobvyklé, pokud programátor v Německu čas od času nevyskočí a nezačne máchat svým světelným mečem z lepenky. I když to někomu může připadat směšné, tento rituál dodržují i různé slavné osobnosti."
(http://also.kottke.org/misc/images/obama-lightsaber-02.jpg)
Pár upravených obrázků, pár falešných fanouškovských stránek, několik videí na YouTube a mělo by to stačit, aby tu ptákovinu začal někdo učit ::)
-
šlo by zajít i dále:
...V zahraničí se dá přinést na pracovní pohovor i malá varianta skládacího světelného meče, aby budoucí programátor dokázal, že chce práci dotahovat až do konce. Tento rituál, který ve východní Evropě, kde kult Hvězdných válek tak pevně nezakořenil, může vzbuzovat i úsměvy, ale ve všech Anglofonních zemích ne. Tam si uchazeč o místo může malým světelným mečem získat obdiv a chválu nejednoho personalisty nebo ředitele podniku za odhodlání bít se za jejich firmu a dokončovat svou práci. Samozřejmě se jedná jen o pozice programátorů, pokud by si na pracovní pohovor přinesl světelný meč například Architekt, vypadal by poněkud výstředně. Nicméně mezi programátory to je bráno jako výraz úcty a odhodlání tvrdě se bít za svého budoucího zaměstnavatele.....
Vymysli blbost, napiš k tomu několik článků, pár fotek a máš z toho Franze skoro prezidentem.
(App, docela bych chtěl vidět toho vola, co tomu ve škole uvěří a přijde do nějaké zahraniční firmy s tím mečem.)