BUM Posted June 20, 2009 Posted June 20, 2009 Проблема сейчас фтп сервером. Установил proftpd. Под фто можно зайти только под свой пользователь. Тот что создавали спец для етого не признаёт. подними с модом mysql создаешь в mysql базу данных например ftp CREATE TABLE `groups` ( `groupname` varchar(30) NOT NULL default '', `gid` int(11) NOT NULL default '0', `members` varchar(255) default NULL ) TYPE=MyISAM; CREATE TABLE `users` ( `username` varchar(30) NOT NULL default '', `password` varchar(30) NOT NULL default '', `uid` int(11) default NULL, `gid` int(11) default NULL, `homedir` varchar(255) default NULL, `shell` varchar(255) default NULL, `count` int(11) NOT NULL default '0', UNIQUE KEY `username` (`username`) ) TYPE=MyISAM; далее добавляешь в конфиг профтпд след. настройки <IfModule mod_dso.c> LoadModule mod_sql.c LoadModule mod_sql_mysql.c </IfModule> <Global> SQLConnectInfo пользователь_БД@localhost БД ПАРОЛЬ SQLAuthTypes Crypt SQLUserInfo users username password uid gid homedir NULL RequireValidShell off SQLGroupInfo groups groupname gid members SQLAuthenticate users* SQLLogFile /var/log/proftpd_sql.log SQLNamedQuery getcount SELECT "count, username from users where username='%u '" SQLNamedQuery updatecount UPDATE "count=count+1 WHERE username='%u'" users </Global> далее добавляешь пользователя либо через пхпадмин либо руцями, либо вот скрипт для добавления: #!/usr/bin/php <? /* ******************************************************************************** ******* HELP: <script_name> list <script_name> info login <script_name> add login passwd homedir <script_name> passwd login newpasswd <script_name> delete login ******************************************************************************** ******* */ if(!isset($_SERVER['argv'])) { die('ftp manager error: can not read arguments from $_SERVER["argv"]'."\n"); } ////////////////////////// // параметры базы //////// $mysql_host = 'localhost'; $mysql_database = 'ftp'; $mysql_user = 'ftp'; $mysql_password = 'password'; ////////////////////////// ////////////////////////// // имя ftp-хоста ///////// $ftp_host_name = 'FTP_HOST_NAME'; ////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// // MAIN ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// $_SERVER['argv'][9] = $ftp_host_name; $mysql = new class_mysql($mysql_host, $mysql_database, $mysql_user, $mysql_password); // класс для работы с mysql $ftp_account = new class_ftp_account($_SERVER['argv'], &$mysql); // класс для работы с ftp-аккаунтами ////////////////////////////////////////////////////////////////////////////////////////// // FTP ACCOUNT CLASS ///////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// class class_ftp_account { var $MYSQL; var $ARGV; // конструктор. вызывается при инициализации класса function class_ftp_account($argv, &$mysql) { $this->MYSQL = $mysql; // получаем ссылку на mysql объект $this->ARGV = $argv; // получаем параметры, переданые скрипту $this->parce_argv(); // эта функция проверяет параметры, которые были переданы скрипту и вызывает нужные функции из класса } // эта функция проверяет параметры, которые были переданы скрипту и вызывает нужные функции из класса function parce_argv() { if($this->ARGV[1] == 'list') { // вывести список всех пользователей $this->print_all_accounts(); // вывести список всех аккаунтов die(); } elseif($this->ARGV[1] == 'info') { // получение информации о пользователе if(isset($this->ARGV[2])) { $this->check_login($this->ARGV[2]); // проверка логина $this->print_account_info($this->ARGV[2]); // вывести информацию по аккаунту } else { $this->print_help(); } die(); } if($this->ARGV[1] == 'add') { // добавление пользователя if(isset($this->ARGV[2]) && isset($this->ARGV[3]) && isset($this->ARGV[4])) { $this->check_login($this->ARGV[2]); // проверка логина $this->check_password($this->ARGV[3]); // пароля $this->check_homedir($this->ARGV[4]); // и домашней директории $this->add_account($this->ARGV[2], $this->ARGV[3], $this->ARGV[4]); // добавить аккаунт } else { $this->print_help(); } die(); } elseif($this->ARGV[1] == 'passwd') { // поменять пароль для пользователя if(isset($this->ARGV[2]) && isset($this->ARGV[3])) { $this->check_login($this->ARGV[2]); $this->check_password($this->ARGV[3]); $this->change_pasword($this->ARGV[2], $this->ARGV[3]); // поменять пароль } else { $this->print_help(); } die(); } elseif($this->ARGV[1] == 'delete') { // удалить пользователя из базы if(isset($this->ARGV[2])) { $this->check_login($this->ARGV[2]); $this->delete_account($this->ARGV[2]); // удалить аккаунт из базы } else { $this->print_help(); } die(); } else { // неизвестная команда, выводим хелп $this->print_help(); } } /////////////////////////////////////////////////////////////////////////// // служебные функции ////////////////////////////////////////////////////// function print_account_info($login) { // вывести информацию по аккаунту $this->MYSQL->connect(); $user = $this->MYSQL->select("SELECT * FROM users WHERE username='".$login."'"); $this->MYSQL->close(); if(!isset($user[0]['username'])) { die('ftp manager error: account "'.$login.'" has not been found'."\n"); } print "\n".'[ftp-account info for "'.$login.'"]:'."\n"; print 'currentdate: '.date("Y-m-d H:i:s")."\n"; if(isset($this->ARGV[9])) { print 'host: '.$this->ARGV[9]."\n"; } print 'login: '.$user[0]['username']."\n"; if(($this->ARGV[1] == 'add') || ($this->ARGV[1] == 'passwd')) { // для только что добавленых пользователей print 'password: '.$this->ARGV[3]."\n"; print 'ftp-link: ftp://'.$user[0]['username'].':'.$this->ARGV[3].'@'.$this->ARGV[9]."\n"; } print 'homedir: '.$user[0]['homedir']."\n"; print 'uid: '.$user[0]['uid']."\n"; print 'gid: '.$user[0]['gid']."\n"; print 'count: '.$user[0]['count']."\n"; print '[/ftp-account info for "'.$login.'"]'."\n\n"; } /////////////////////////////////////////////////////////////////////////// function print_all_accounts() { // вывести информацию по всем аккаунтам print "\n".'[listing ftp-accounts]:'."\n"; $this->MYSQL->connect(); $users = $this->MYSQL->select("SELECT * FROM users"); foreach($users as $user) { print 'login: '.$user['username'].' , uid: '.$user['uid'].' , gid: '.$user['gid'].' , homedir: '.$user['homedir']."\n"; } $this->MYSQL->close(); print '[/listing ftp-accounts]'."\n\n"; } /////////////////////////////////////////////////////////////////////////// function add_account($login, $password, $homedir) { // добавить аккаунт $uid = $this->create_uid(); if($this->check_account_existance($login) == TRUE) { die('ftp manager error: account "'.$login.'" already exists'."\n"); } $this->MYSQL->connect(); $this->MYSQL->execute("INSERT INTO users SET username='".$login."',password=ENCRYPT('".$password."'),homedir='".$homedir."',shell='/dev/null',uid='".$uid."',gid='".$uid."'"); $this->MYSQL->close(); mkdir($homedir, 0755, TRUE); // system("mkdir -p ".$homedir); // создание папки chown($homedir, intval($uid)); // system("chown ".$uid.":".$gid." ".$homedir); // выдача папке прав chgrp($homedir, intval($uid)); print 'ftp manager success: account "'.$login.'" has been added'."\n"; $this->print_account_info($login); } /////////////////////////////////////////////////////////////////////////// function change_pasword($login, $password) { // изменение пароля if($this->check_account_existance($login) == FALSE) { die('ftp manager error: account "'.$login.'" does not exists'."\n"); } $this->MYSQL->connect(); $this->MYSQL->execute("UPDATE users SET password=ENCRYPT('".$password."') WHERE username='".$login."'"); $this->MYSQL->close(); print 'ftp manager success: password for account "'.$login.'" has been changed'."\n"; $this->print_account_info($login); } /////////////////////////////////////////////////////////////////////////// function delete_account($login) { // удаление аккаунта из базы $warning_timeout = 10; // таймаут на предупреждение об удалении в секундах if($this->check_account_existance($login) == FALSE) { die('ftp manager error: account "'.$login.'" does not exists'."\n"); } $this->print_account_info($login); // вывод информации об аккаунте. в случае ошибки можно будет вовремя остановить удаление print 'ftp manager warning: deleting account "'.$login.'" in '.$warning_timeout.' seconds, you can still press ctrl+c '; $this->print_dots($warning_timeout); $this->MYSQL->connect(); $user = $this->MYSQL->select("SELECT homedir FROM users WHERE username='".$login."'"); $this->MYSQL->execute("DELETE FROM users WHERE username='".$login."'"); $this->MYSQL->close(); print "\n".'ftp manager success: account "'.$login.'" has been deleted'."\n"; print 'ftp manager info: now you can manualy run "rm -rf '.$user[0]['homedir'].'" to erase all user files'."\n"; } // служебные функции ////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// // утилиты //////////////////////////////////////////////////////////////// function print_dots($seconds) { // печатать по точке в секунду .) for($i=0;$i<$seconds;$i++){ sleep(1); print '.'; } } /////////////////////////////////////////////////////////////////////////// function check_account_existance($login) { // проверка на существование аккаунта в базе $this->MYSQL->connect(); $user = $this->MYSQL->select("SELECT username FROM users WHERE username='".$login."'"); if(isset($user[0]['username'])) { return TRUE; } else { return FALSE; } $this->MYSQL->close(); } /////////////////////////////////////////////////////////////////////////// function create_uid() { // придумать uid и gid для нового пользователя return mt_rand(10000, 20000); } /////////////////////////////////////////////////////////////////////////// function print_help() { // эта функция печатает хелп во всех случаях неправильного ввода параметров print 'ftp manager error: wrong parameters'."\n"; print '<script_name> list'."\n"; print '<script_name> info login'."\n"; print '<script_name> add login passwd homedir'."\n"; print '<script_name> passwd login newpasswd'."\n"; print '<script_name> delete login'."\n"; die(); } // утилиты //////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// // функции проверки вводимых параметров /////////////////////////////////// function check_login($login) { // проверка логина if(!preg_match("/^[0-9a-z\.\-]+$/", $login)) { die('ftp manager error: login can include only "0-9" "a-z" "." "-" symbols'."\n"); } } /////////////////////////////////////////////////////////////////////////// function check_password($password) { // проверка пароля if(!preg_match("/^[0-9a-zA-Z]+$/", $password)) { die('ftp manager error: password can include only "0-9" "a-z" "A-Z" symbols'."\n"); } } /////////////////////////////////////////////////////////////////////////// function check_homedir($homedir) { // и домашней директории if(!preg_match("/^\/[0-9a-zA-Z\/\.\-\_]+$/", $homedir)) { die('ftp manager error: homedir can include only "0-9" "a-z" "A-Z" "/" "." "-" "_" symbols'."\n"); } } // функции проверки вводимых параметров /////////////////////////////////// /////////////////////////////////////////////////////////////////////////// } ////////////////////////////////////////////////////////////////////////////////////////// // MYSQL CLASS /////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// class class_mysql { // db access var $HOST; var $DATABASE; var $USER; var $PASSWD; // table_prefix var $TABLE_PREFIX = ''; var $LINK; var $QUERY; var $ERROR; var $RESULT; var $NUM_ROWS; // constructor function class_mysql($host, $database, $user, $password) { $this->HOST = $host; $this->DATABASE = $database; $this->USER = $user; $this->PASSWD = $password; //$this->connect(); } function connect() { $this->LINK = mysql_pconnect($this->HOST, $this->USER, $this->PASSWD) or die('ftp manager mysql_error: '.mysql_errno().': '.mysql_error()."\n"); mysql_select_db($this->DATABASE) or die('ftp manager mysql_error: '.mysql_errno().': '.mysql_error()."\n"); } function close() { mysql_close($this->LINK); } function get_insert_id() { return mysql_insert_id($this->LINK); } function execute($query) { $this->QUERY = $query; $this->RESULT = mysql_query($this->QUERY, $this->LINK) or die('ftp manager mysql_error: '.mysql_errno().': '.mysql_error()."\n"); $this->ERROR = mysql_error(); } function select($query) { $result = array(); $this->QUERY = $query; $this->RESULT = mysql_query($this->QUERY, $this->LINK) or die('ftp manager mysql_error: '.mysql_errno().': '.mysql_error()."\n"); $this->ERROR = mysql_error(); $this->NUM_ROWS = mysql_num_rows($this->RESULT); while($row = mysql_fetch_array($this->RESULT)){ array_push($result, $row); } return $result; } } ?> соответственно размещаешь его где-то в системе это дело вкуса, далее в консоле /dir_to_script/script_name.php
icecybe Posted June 20, 2009 Author Posted June 20, 2009 webmin установил. Обновил. В основном показывает все каталоги и програмы. Утилитка очень интересна. Практичеки показывает полный статус машины.
icecybe Posted June 20, 2009 Author Posted June 20, 2009 Кто может подсказать примеры настройки файрвола для home user.
icecybe Posted June 22, 2009 Author Posted June 22, 2009 подключил хард который раньше был на винде. Видит но с ошибкой что надо смонтировать. Чем лечится ?
BUM Posted June 22, 2009 Posted June 22, 2009 подключил хард который раньше был на винде. Видит но с ошибкой что надо смонтировать. Чем лечится ? попробуй mount -t ntfs-3g
BUM Posted June 22, 2009 Posted June 22, 2009 Кто может подсказать примеры настройки файрвола для home user. ты скажи что требуется от машинки?
icecybe Posted June 22, 2009 Author Posted June 22, 2009 сделано смонтировал. От машинки требуется терпение. Перехожу просто на дебиан. И чем больше копаюсь тем интересней становится. Наверно Поетому о 90% не пользуются етой системой. Трудна в первичных установках. Потом будет намного легче. Хочу установить linuxdcpp. Фаил скачал. распаковал. При команде apt-get install linudcpp не найдено, что не так делаю?
Iridium Posted June 22, 2009 Posted June 22, 2009 сделано смонтировал. От машинки требуется терпение. Перехожу просто на дебиан. И чем больше копаюсь тем интересней становится. Наверно Поетому о 90% не пользуются етой системой. Трудна в первичных установках. Потом будет намного легче. Хочу установить linuxdcpp. Фаил скачал. распаковал. При команде apt-get install linudcpp не найдено, что не так делаю? Потому что название пакета надо набирать без ошибок. И сообщение об ошибке надо показывать полностью, а не ваш вольный перевод.
icecybe Posted June 22, 2009 Author Posted June 22, 2009 /home/linuxdcpp-1.0.2# apt-get install linuxdcpp-1.0.2 Чтение списков пакетов... Готово Построение дерева зависимостей Чтение информации о состоянии... Готово E: Не удалось найти пакет linuxdcpp-1.0.2 root@internov:/home/linuxdcpp-1.0.2#
Serjio Posted June 22, 2009 Posted June 22, 2009 /home/linuxdcpp-1.0.2# apt-get install linuxdcpp-1.0.2Чтение списков пакетов... Готово Построение дерева зависимостей Чтение информации о состоянии... Готово E: Не удалось найти пакет linuxdcpp-1.0.2 root@internov:/home/linuxdcpp-1.0.2# для начала определись что ты делаешь, а что хочешь сделать. serjio@gimli:~# apt-cache search linuxdcpp linuxdcpp - Port of the Windows file-sharing program, DC++ linuxdcpp0.691 - Port of the Windows file-sharing program DC++ serjio@gimli:~# а если ставишь *.deb пакеты, то dpkg -i what_you_need_to_install.deb p.s. из-за нежелания читать доки, тема перенесена в детсадик соответствующий раздел
icecybe Posted June 22, 2009 Author Posted June 22, 2009 доков начитался дофига и везде установку пишет по разному. Тут как находиш один глюк устанавливаеш другой закончил тот переходиш на етот. Можно было ввести пару строк для полного понимания apt-cache search linuxdcpp. и вот ето *.deb пакеты, то dpkg -i what_you_need_to_install.deb не все родились с компилированным ядром. Программа заработала. А еше проше без крутизны консоли можно было и Webmin -ом указать.
icecybe Posted June 22, 2009 Author Posted June 22, 2009 у кого-то есть знания как поднять shoutcast с каналами на Linux.
gall Posted June 23, 2009 Posted June 23, 2009 Попробуй http://www.icecast.org/ Всеравно ведь транслировать из инета будеш.
Serjio Posted June 23, 2009 Posted June 23, 2009 доков начитался дофига и везде установку пишет по разному. Тут как находиш один глюк устанавливаеш другой закончил тот переходиш на етот. Можно было ввести пару строк для полного понимания apt-cache search linuxdcpp. и вот ето *.deb пакеты, то dpkg -i what_you_need_to_install.deb не все родились с компилированным ядром. Программа заработала. А еше проше без крутизны консоли можно было и Webmin -ом указать. ты хоть сам понял что написал?
icecybe Posted June 23, 2009 Author Posted June 23, 2009 не надоело критиковать ? Наверное по етому в нете и столько инфы, потому что для одного действия надо понять саму систему как она работает к какими файлами взаимодействует. По сравнению с вин. Где надо просто нажать и функций авомтатом установятся. И еше наверно от таких помошников. Иключаем Gall-а огромный ему респект и уважуха за терпение и понимание.
BUM Posted June 23, 2009 Posted June 23, 2009 у кого-то есть знания как поднять shoutcast с каналами на Linux. у меня
icecybe Posted July 4, 2009 Author Posted July 4, 2009 Кто знает как установить Дебиан или другой линукс на hp-thin client.
lava Posted July 4, 2009 Posted July 4, 2009 icecybe, почитай хоть трохи ман shoutcast . Там все для гарно розписанно, діти навіть налаштують
icecybe Posted July 4, 2009 Author Posted July 4, 2009 ты видел даты и последний мой пост ? Писал же, или трудно доходит. Н...я флудить тут. Умник. Если у тебя нет полезной информаций просто молчи.
lava Posted July 4, 2009 Posted July 4, 2009 icecybe, дай поюзать hp-thin client , тоді більше скажу про цього звіра.
Recommended Posts