BUM 241 Опубліковано: 2009-06-20 09:02:22 Share Опубліковано: 2009-06-20 09:02:22 Проблема сейчас фтп сервером. Установил 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 35 Опубліковано: 2009-06-20 09:58:37 Автор Share Опубліковано: 2009-06-20 09:58:37 webmin установил. Обновил. В основном показывает все каталоги и програмы. Утилитка очень интересна. Практичеки показывает полный статус машины. Ссылка на сообщение Поделиться на других сайтах
icecybe 35 Опубліковано: 2009-06-20 09:58:49 Автор Share Опубліковано: 2009-06-20 09:58:49 Кто может подсказать примеры настройки файрвола для home user. Ссылка на сообщение Поделиться на других сайтах
icecybe 35 Опубліковано: 2009-06-22 09:11:16 Автор Share Опубліковано: 2009-06-22 09:11:16 подключил хард который раньше был на винде. Видит но с ошибкой что надо смонтировать. Чем лечится ? Ссылка на сообщение Поделиться на других сайтах
Колян 2 Опубліковано: 2009-06-22 09:45:40 Share Опубліковано: 2009-06-22 09:45:40 монтируй винт. в папку /mnt или куда там) man mount Ссылка на сообщение Поделиться на других сайтах
BUM 241 Опубліковано: 2009-06-22 11:12:02 Share Опубліковано: 2009-06-22 11:12:02 подключил хард который раньше был на винде. Видит но с ошибкой что надо смонтировать. Чем лечится ? попробуй mount -t ntfs-3g Ссылка на сообщение Поделиться на других сайтах
BUM 241 Опубліковано: 2009-06-22 11:12:51 Share Опубліковано: 2009-06-22 11:12:51 Кто может подсказать примеры настройки файрвола для home user. ты скажи что требуется от машинки? Ссылка на сообщение Поделиться на других сайтах
icecybe 35 Опубліковано: 2009-06-22 12:18:53 Автор Share Опубліковано: 2009-06-22 12:18:53 сделано смонтировал. От машинки требуется терпение. Перехожу просто на дебиан. И чем больше копаюсь тем интересней становится. Наверно Поетому о 90% не пользуются етой системой. Трудна в первичных установках. Потом будет намного легче. Хочу установить linuxdcpp. Фаил скачал. распаковал. При команде apt-get install linudcpp не найдено, что не так делаю? Ссылка на сообщение Поделиться на других сайтах
Iridium 6 Опубліковано: 2009-06-22 12:23:29 Share Опубліковано: 2009-06-22 12:23:29 сделано смонтировал. От машинки требуется терпение. Перехожу просто на дебиан. И чем больше копаюсь тем интересней становится. Наверно Поетому о 90% не пользуются етой системой. Трудна в первичных установках. Потом будет намного легче. Хочу установить linuxdcpp. Фаил скачал. распаковал. При команде apt-get install linudcpp не найдено, что не так делаю? Потому что название пакета надо набирать без ошибок. И сообщение об ошибке надо показывать полностью, а не ваш вольный перевод. Ссылка на сообщение Поделиться на других сайтах
icecybe 35 Опубліковано: 2009-06-22 12:24:59 Автор Share Опубліковано: 2009-06-22 12:24:59 /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 19 Опубліковано: 2009-06-22 12:32:03 Share Опубліковано: 2009-06-22 12:32:03 /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 35 Опубліковано: 2009-06-22 12:58:22 Автор Share Опубліковано: 2009-06-22 12:58:22 доков начитался дофига и везде установку пишет по разному. Тут как находиш один глюк устанавливаеш другой закончил тот переходиш на етот. Можно было ввести пару строк для полного понимания apt-cache search linuxdcpp. и вот ето *.deb пакеты, то dpkg -i what_you_need_to_install.deb не все родились с компилированным ядром. Программа заработала. А еше проше без крутизны консоли можно было и Webmin -ом указать. Ссылка на сообщение Поделиться на других сайтах
icecybe 35 Опубліковано: 2009-06-22 23:37:19 Автор Share Опубліковано: 2009-06-22 23:37:19 у кого-то есть знания как поднять shoutcast с каналами на Linux. Ссылка на сообщение Поделиться на других сайтах
Neelix 33 Опубліковано: 2009-06-23 04:26:22 Share Опубліковано: 2009-06-23 04:26:22 у меня Ссылка на сообщение Поделиться на других сайтах
gall 6 Опубліковано: 2009-06-23 06:33:55 Share Опубліковано: 2009-06-23 06:33:55 Попробуй http://www.icecast.org/ Всеравно ведь транслировать из инета будеш. Ссылка на сообщение Поделиться на других сайтах
Serjio 19 Опубліковано: 2009-06-23 07:18:02 Share Опубліковано: 2009-06-23 07:18:02 доков начитался дофига и везде установку пишет по разному. Тут как находиш один глюк устанавливаеш другой закончил тот переходиш на етот. Можно было ввести пару строк для полного понимания apt-cache search linuxdcpp. и вот ето *.deb пакеты, то dpkg -i what_you_need_to_install.deb не все родились с компилированным ядром. Программа заработала. А еше проше без крутизны консоли можно было и Webmin -ом указать. ты хоть сам понял что написал? Ссылка на сообщение Поделиться на других сайтах
icecybe 35 Опубліковано: 2009-06-23 07:50:09 Автор Share Опубліковано: 2009-06-23 07:50:09 не надоело критиковать ? Наверное по етому в нете и столько инфы, потому что для одного действия надо понять саму систему как она работает к какими файлами взаимодействует. По сравнению с вин. Где надо просто нажать и функций авомтатом установятся. И еше наверно от таких помошников. Иключаем Gall-а огромный ему респект и уважуха за терпение и понимание. Ссылка на сообщение Поделиться на других сайтах
BUM 241 Опубліковано: 2009-06-23 08:56:56 Share Опубліковано: 2009-06-23 08:56:56 у кого-то есть знания как поднять shoutcast с каналами на Linux. у меня Ссылка на сообщение Поделиться на других сайтах
icecybe 35 Опубліковано: 2009-06-23 11:30:54 Автор Share Опубліковано: 2009-06-23 11:30:54 поделишся. Ссылка на сообщение Поделиться на других сайтах
icecybe 35 Опубліковано: 2009-06-23 22:20:11 Автор Share Опубліковано: 2009-06-23 22:20:11 BUM ну как вспомнил как ето делается ? Ссылка на сообщение Поделиться на других сайтах
icecybe 35 Опубліковано: 2009-07-04 11:37:43 Автор Share Опубліковано: 2009-07-04 11:37:43 Кто знает как установить Дебиан или другой линукс на hp-thin client. Ссылка на сообщение Поделиться на других сайтах
lava 23 Опубліковано: 2009-07-04 13:03:29 Share Опубліковано: 2009-07-04 13:03:29 icecybe, почитай хоть трохи ман shoutcast . Там все для гарно розписанно, діти навіть налаштують Ссылка на сообщение Поделиться на других сайтах
icecybe 35 Опубліковано: 2009-07-04 14:02:08 Автор Share Опубліковано: 2009-07-04 14:02:08 ты видел даты и последний мой пост ? Писал же, или трудно доходит. Н...я флудить тут. Умник. Если у тебя нет полезной информаций просто молчи. Ссылка на сообщение Поделиться на других сайтах
lava 23 Опубліковано: 2009-07-04 18:42:19 Share Опубліковано: 2009-07-04 18:42:19 icecybe, дай поюзать hp-thin client , тоді більше скажу про цього звіра. Ссылка на сообщение Поделиться на других сайтах
icecybe 35 Опубліковано: 2009-07-05 07:49:03 Автор Share Опубліковано: 2009-07-05 07:49:03 понятно. Поюзай гугл. Про него. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения