LINUX.ORG.RU
ФорумAdmin

VsFTPD/RFRemix 13 x86_64 и virtual users


0

0

Настройка vsftpd, с авторизацией через mysql. Разгребал баян, предназначенный под ubuntu. Сейчас им завалено пол инета, что касается настройки vsftpd, с заведением вирт юзеров. то есть - «vsftpd/pam/mysql». Честно сказать, мне стыдно использовать такой метод. Можно было бы тупо в лоб через pam, или еще как. То есть, стыдно за то, что я не знаю преимуществ того, или иного метода.

Возвращаюсь к проблеме реализации этого совета Метод отлично работает под Slackware, Debian, ArchLinux и странно ведет себя под Fedora.
Проблема с авторизацией, а точнее «login incorrect. error 530».

Даже не вдаваясь в подробности, я заметил, что в /etc/passwd у vsftpd лишь один путь - это /var/ftp, а никакие-нибудь там /home/ftp, а у меня есть отличия в настройках от авторских, а именно:
Анонимусу разрешен доступ - это раз И у него свой путь - стандартный - это два. Не вдаваясь в подробности, выключаю анонимность и опцию anon_root=/var/ftp. Меняю через vipw путь только под пользователя «guest» (vsftpd) (/home/vsfpd), перегружая vsftpd и снова получаю 530 ошибку.

врубаю аудит в mysql: 100702 18:15:20 58 Connect Access denied for user 'vsftpd'@'localhost' (using password: YES) < откуда ноги - не совсем ясно. Как узнать - пока не ясно. Большая Просьба тут помочь.

а в audit.log следующее: type=USER_AUTH msg=audit(1278080120.604:36897): user pid=9285 uid=0 auid=500 ses=1 subj=unconfined_u:system_r:ftpd_t:s0-s0:c0.c1023 msg='op=PAM:authentication acct=«test» exe=«/usr/sbin/vsftpd» hostname=estaf.trc.local addr=127.0.0.1 terminal=ftp res=failed'

что есть res=failed - как тут углубиться, откуда это.

Повторюсь. Не самое главное все делать через mysql-pam. Единственное, чего хотелось бы добиться - правильный подход в настройке vsftpd.

Большая просьба к админам форума - не закрывать жту тему даже тогда, когда я все (если вдруг) решу тут для себя. Вдруг кто поймает другую ошибку какую. Он сможет что-либо прокомментировать. Ветка получится более полноценной, в плане ответов. Может, он задаст какой вопрос по данной теме. Меньше будет дублей.

Спасибо.

★★★

1.

Connect Access denied for user 'vsftpd'@'localhost' (using password: YES)

Это значит, что для того, чтобы vsftpd мог авторизовывать пользователей через mysql - он сам должен иметь возможность к нему коннектиться под своим, специальным пользователем. Следовательно, вам нужно завести в mysql пользователя vsftpd, задать ему пароль, разрешить ему подключаться с localhost, прописать этого пользователя в конфиге vsftpd.

2. Правда, что в момент, когда вы это писали вы находились в состоянии алкогольного или наркотического опьянения?

zgen ★★★★★
()
Ответ на: комментарий от zgen

zgen
вам нужно завести в mysql пользователя vsftpd

Может, базу с таблицей? Это сделано.

CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;

USE vsftpd;
CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
UNIQUE (
`username`
)
) ENGINE = MYISAM ;

прописать этого пользователя в конфиге vsftpd
Прописать пользователя vsftpd в конфиге vsftpd???

хорошо :)
cat /etc/vsftpd/user_list
..
vsftpd
..

Сама тема: http://sudouser.com/ustanovka-i-nastrojka-vsftpd-mysql-ubuntu-debian

Правда, что в момент, когда вы это писали вы находились в состоянии алкогольного или наркотического опьянения?

Врут. Не смотрите на стены в вашей квартире. Или откуда вам там взбрело это в голову..

ESTAF ★★★
() автор топика
Ответ на: комментарий от ESTAF

Может, базу с таблицей? Это сделано.

Судя по логу «Connect Access denied for user 'vsftpd'@'localhost' (using password: YES)»

не сделано. Проверяйте снова.

Прописать пользователя vsftpd в конфиге vsftpd???

хорошо :)

нда... вы определенно что-то курите.

Объясню:

vsftpd коннектится к БД (вы видите это по логу) используя login vsftpd и какой-то пароль. Как вы думаете, он же этот login и password не сочинил сам, а наверняка где-то берет, не правда ли? так вот там, где он их берет, прежде чем попытаться подключиться к БД и надо прописать правильный пароль.

zgen ★★★★★
()
Ответ на: комментарий от zgen

SELECT * FROM ftp_accounts;
+----+----------+-------------------------------------------+
| id | username | password |
+----+----------+-------------------------------------------+
| 1 | ftpuser | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
+----+----------+-------------------------------------------+
1 row in set (0.05 sec)

создано при помощи
INSERT INTO ftp_accounts VALUES (NULL, 'ftpuser', PASSWORD('secret'));

ESTAF ★★★
() автор топика
Ответ на: комментарий от ESTAF

сейчас вообще весело

100703 12:22:50 39 Connect vsftpd@localhost on vsftpd
39 Init DB vsftpd
39 Query SELECT password FROM ftp_accounts WHERE username = 'ftpuser'
39 Query SELECT password FROM ftp_accounts WHERE username = 'ftpuser'
39 Quit
40 Connect vsftpd@localhost on vsftpd 40 Init DB vsftpd
40 Query SELECT 0, password FROM ftp_accounts WHERE username = 'ftpuser'
40 Quit

никаких access denied. при этом ошибка 530 остается.

ESTAF ★★★
() автор топика
Ответ на: комментарий от ESTAF

cat /etc/pam.d/vsftpd
auth required pam_mysql.so user=vsftpd host=localhost passwd=vsftpdpass db=vsftpd table=ftp_accounts usercolumn=username passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd host=localhost passwd=vsftpdpass db=vsftpd table=ftp_accounts usercolumn=username passwdcolumn=password crypt=2

ESTAF ★★★
() автор топика
Ответ на: комментарий от ESTAF

подключитесь под login vsftpd к БД и выполните

Query SELECT password FROM ftp_accounts WHERE username = 'ftpuser'

Какой результат?

zgen ★★★★★
()
Ответ на: комментарий от zgen

подключитесь под login vsftpd к БД и выполните

Признаюсь. Я не знаю, какой пароль у пользователя vsftpd. В базе забивались лишь вирт аккаунты.

По цепочке действий на http://sudouser.com/ustanovka-i-nastrojka-vsftpd-mysql-ubuntu-debian видно, что создавалась лишь таблица, а не учетная запись.

Пользователь vsftpd созавался в pam, но не в базе mysql. пароль не задавался.

useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

пустой пароль не пройдет.

mysql -u vsftpd -p
Enter password:
ERROR 1045 (28000): Access denied for user 'vsftpd'@'localhost' (using password: NO)

я могу лишь сделать следующее:

mysql -u vroot -p .. USE vsftpd;

ESTAF ★★★
() автор топика
Ответ на: комментарий от ESTAF

Признаюсь. Я не знаю, какой пароль у пользователя vsftpd. В базе забивались лишь вирт аккаунты.

Батенька,

1) лучше признайтесь, что вы не читали собственную ссылку:
«Вставляем в открывшееся окно следующий текст
...
user=vsftpd passwd=ftpdpass (!)
...»

2) вы вообще не понимаете, как это должно работать в теории, потому что пароль пользователю vsftpd вы задавали сами:


"...IDENTIFIED BY 'ftpdpass';"

И попробуйте теперь отрицать, что вы наркоман.

zgen ★★★★★
()
Ответ на: комментарий от zgen

лучше признайтесь, что вы не читали собственную ссылку:

Я упорно смотрел на действия уже в базе. про /etc/pam.d/vsftpd забыл просто.

mysql -u vsftpd -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 64
Server version: 5.1.47-log Source distribution
...........
mysql> USE vsftpd;
    ->Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> Query SELECT password FROM ftp_accounts WHERE username = 'ftpuser';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Query SELECT password FROM ftp_accounts WHERE username = 'ftpuser'' at line 1
ESTAF ★★★
() автор топика
Ответ на: комментарий от ESTAF

Я так понял, вы всегда и все делаете буквально, вместо того, чтобы сначала подумать?

SELECT password FROM ftp_accounts WHERE username = 'ftpuser';

zgen ★★★★★
()
Ответ на: комментарий от ESTAF

вам бы так обкуриться, когда надо поднять vsftpd, а времени на изучение нет. помимо «компьютера» не буду говорить что еще нужно сделать. Уже была дикая мысля поднять GeneFTP через wine, ибо любой ценой нужно заставить ее работать. саму услугу.

Я и mysql никогда не изучал. Не думал, что программа не предоставит таких возможностей, как создание вирт. пользователе, сама. Впрочем, по Unix way - это нормально и даже хорошо, но еще раз - про mysql и не думал даже.

Вы представляете себе человека, которому нужно лишь ftp нормально поднять и который будет изучать тонну основ mysql и других программ? Да и ftp нужен, что бы обмениваться с друзьми разными личными файлами.

ESTAF ★★★
() автор топика
Ответ на: комментарий от ESTAF
SELECT password FROM ftp_accounts WHERE username = 'ftpuser';
+-------------------------------------------+
| password                                  |
+-------------------------------------------+
| *832EB84CB764129D05D498ED9CA7E5CE9B8F83EB |
+-------------------------------------------+
1 row in set (0.00 sec)
ESTAF ★★★
() автор топика
Ответ на: комментарий от ESTAF

Если что пароли были пересозданы. то есть, если я наберу SELECT * FROM ftp_accounts;

то увижу тот же хеш

+----+----------+-------------------------------------------+
| id | username | password                                  |
+----+----------+-------------------------------------------+
|  2 | ftpuser  | *832EB84CB764129D05D498ED9CA7E5CE9B8F83EB |
+----+----------+-------------------------------------------+
1 row in set (0.00 sec)
ESTAF ★★★
() автор топика
Ответ на: комментарий от ESTAF

Я представляю, что человек, который решает использовать БД для хранения аккаунтов ДОЛЖЕН уметь этой БД пользоваться. Если он не умеет, то зачем ему хранить пользователей в этой БД?

Я представляю, что когда один человек хочет решить свою техническую проблему на форуме - его не надо учить основам и вести «за ручку» как маленького - говоря где нажать enter и что ввести в терминале.

Я так понимаю, что основы PAM вы тоже не изучали, поскольку это вам не нужно? Вы не догадываетесь, почему в этой теме нашелся только один идиот, который решил вам помочь?

я ваше «нет времени что-то изучать» уже вижу во всех возможных ракурсах:
http://www.google.ru/search?q=estaf.trc.local&ie=utf-8&oe=utf-8&aq=t&rls=org....

zgen ★★★★★
()
Ответ на: комментарий от ESTAF

сейчас вообще весело


Значит проблему с БД решили - теперь включайте логи vsftpd и системные и смотрите, что ему не нравится. Может вы опять не знаете, какой пароль у ftpuser?

zgen ★★★★★
()
Ответ на: комментарий от zgen

tail /var/log/vsftpd.log]br] Sat Jul 3 19:33:27 2010 [pid 26725] CONNECT: Client «127.0.0.1» Sat Jul 3 19:33:30 2010 [pid 26724] [ftpuser] FAIL LOGIN: Client «127.0.0.1»

tail /var/log/audit/audit.log
type=CRED_DISP msg=audit(1278171210.664:36961): user pid=26724 uid=0 auid=500 ses=1 subj=unconfined_u:system_r:ftpd_t:s0-s0:c0.c1023 msg='op=PAM:setcred acct=«ftpuser» exe=«/usr/sbin/vsftpd» hostname=estaf.trc.local addr=127.0.0.1 terminal=ftp res=success'

лог vsftpd ведется в два файла. vsftpd.log и xferlog

в messages и в system.log логи vsftpd не ведутся.

Нет. На счет паролей вирт. пользователей вопросов нет, в плане - какие они.

что не нравится vsftpd - не ясно. [ftpuser] FAIL LOGIN: Client «127.0.0.1» и все.

ESTAF ★★★
() автор топика
Ответ на: комментарий от ESTAF

что не нравится vsftpd - не ясно.

Возможно, не нравятся права на fs. Выкладывайте все конфиги, что вы наконфигурили.

zgen ★★★★★
()
Ответ на: комментарий от zgen
cat /etc/vsftpd/vsftpd.conf
listen=YES
background=YES
dirmessage_enable=YES
anon_mkdir_write_enable=YES
idle_session_timeout=900
max_clients=500
max_per_ip=80
local_umask=022
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=yes
anon_root=/var/ftp
pasv_min_port=49152
pasv_max_port=65534
nopriv_user=vsftpd
chroot_local_user=YES
#ftpd_banner=
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf
setproctitle_enable=YES
session_support=YES
dual_log_enable=YES
syslog_enable=YES
ls -l /home/
.......
drwx------. 51 iron   iron    4096 Июл  3 20:04 iron
...........
drwxrwsr-x.  6 vsftpd nobody  4096 Июн 30 12:30 vsftpd

ls -l /home/vsftpd/
итого 4
drwxr-xr-t. 6 iron iron 4096 Июн 29 03:11 ftpuser
ESTAF ★★★
() автор топика
Ответ на: комментарий от ESTAF

еще: поменял ..pam.d/vsftpd

auth required pam_mysql.so user=vsftpd passwd=vsftpdpass host=localhost db=vsftpd table=ftp_accounts usercolumn=username passwdcolumn=pass crypt=2 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime
account required pam_mysql.so user=vsftpd passwd=vsftpdpass host=localhost db=vsftpd table=ftp_accounts usercolumn=username passwdcolumn=pass crypt=2 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime

[iron@estaf ~]$ lftp ftp://ftpuser@estaf.trc.local
Пароль: 
lftp ftpuser@estaf.trc.local:~> ls                        
ls: Ошибка регистрации: 530 Login incorrect.                                          
lftp ftpuser@estaf.trc.local:~> exit
#tail /var/log/mysql-query.log 
100704 22:49:56	  137 Connect	vsftpd@localhost on vsftpd
		  137 Init DB	vsftpd
		  137 Query	SELECT pass FROM ftp_accounts WHERE username = 'ftpuser'
		  137 Query	INSERT INTO logs (msg, user, host, rhost, pid, logtime) VALUES ('AUTHENTICATION FALURE (FIRST_PASS)', 'ftpuser', '127.0.0.1', 'estaf.trc.local', '20676', NOW())
		  137 Quit

попробовал сменить пароль для вирт. пользователя. То есть, перепроверил пароль - не то.

ESTAF ★★★
() автор топика
Ответ на: комментарий от ESTAF

У вас колонка называется «password», а выборка (SELECT pass FROM ftp_accounts WHERE username = 'ftpuser')пытается «pass» вернуть, не кажется ли вам, что пора мозг включить, а не менять в очередной раз все подряд?

zgen ★★★★★
()
Ответ на: комментарий от zgen

echo «» > /var/log/mysql-query.log

/etc/pam.d/vsftpd

auth required pam_mysql.so user=vsftpd passwd=vsftpdpass host=localhost db=vsftpd table=ftp_accounts usercolumn=username passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=vsftpdpass host=localhost db=vsftpd table=ftp_accounts usercolumn=username passwdcolumn=password crypt=2

логинимся и получаем ошибку 530..

лог:
cat /var/log/mysql-query.log

100705 20:55:57	   33 Connect	vsftpd@localhost on vsftpd
		   33 Init DB	vsftpd
		   33 Query	SELECT password FROM ftp_accounts WHERE username = 'ftpuser'
		   33 Query	INSERT INTO logs (msg, user, host, rhost, pid, logtime) VALUES ('AUTHENTICATION FALURE (FIRST_PASS)', 'ftpuser', '127.0.0.1', 'estaf.trc.local', '8218', NOW())
		   33 Query	SELECT password FROM ftp_accounts WHERE username = 'ftpuser'
		   33 Query	INSERT INTO logs (msg, user, host, rhost, pid, logtime) VALUES ('AUTHENTICATION SUCCESS', 'ftpuser', '127.0.0.1', 'estaf.trc.local', '8218', NOW())
		   33 Quit	
		   34 Connect	vsftpd@localhost on vsftpd
		   34 Init DB	vsftpd
		   34 Query	SELECT 0, password FROM ftp_accounts WHERE username = 'ftpuser'
		   34 Query	INSERT INTO logs (msg, user, host, rhost, pid, logtime) VALUES ('QUERYING SUCCESS', 'ftpuser', '127.0.0.1', 'estaf.trc.local', '8218', NOW())
		   34 Quit

попробовал проверить строчки в pam.d/vsftpd еще раз на ошибки.
Честно. Для меня это сложно.
Теряюсь, на самом деле.

ESTAF ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.