Я получаю 403 Запрещено после доступа к каталогу, защищенному паролем

5551
Gabriel A. Zorrilla

Я использую nginx и когда пароль защищает каталог и вводит данные для входа, я 403 ((O)

 местоположение ~ ^ / Documents { auth_basic "Доступ ограничен."; # Старая линия. # auth_basic_user_file / private / pass; #Новая линия. auth_basic_user_file /var/www/site.com/private/pass; } 

файл пропуска похож на

thisID: thisPass: Привет, комментарий!

Любой совет?

1
Что показывает журнал ошибок? Dave Drager 15 лет назад 0
2009/09/02 17:25:20 [ошибка] 6471 # 0: * 1 open () "/var/www/site.com/private/pass" не удалось (2: нет такого файла или каталога), клиент: 64.76 .31.155, сервер: www.site.com, запрос: «GET / documents / HTTP / 1.1», хост: «www.site.com». Файл пропущен! Fack! Gabriel A. Zorrilla 15 лет назад 0

3 ответа на вопрос

1
Arjan

Хотя это не соответствует вашей ошибке, которую вы получаете ...

файл пропуска похож на

thisID: thisPass: Привет, комментарий!

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

Если nginx ожидает зашифрованные / зашифрованные пароли в этом файле, то он никогда не найдет хорошего совпадения, если сохраненный пароль использует другой формат. (Чтобы найти совпадение, он будет кодировать пароль, введенный пользователем, и сравнивать этот кодированный ввод с закодированным паролем, как известно из файла.) И действительно, согласно документации, пароли должны быть закодированы функцией crypt ( 3). Вы можете создать файл паролей с помощью программы htpasswd из Apache.

Это все еще не объясняет фактическое сообщение об ошибке, но когда файл паролей содержит понятные человеку пароли, тогда это, безусловно, приведет к 402 Unauthorizedили 403 Forbidden.

Можно также создать такой закодированный пароль онлайн, на различных сайтах .

Не нужно быть зашифрованным. Gabriel A. Zorrilla 15 лет назад 0
Я предполагаю, что вы говорите, что * nginx * не нуждается в зашифрованном пароле? Или вы подразумеваете, что шифрование не является обязательным * для вас *? (Если nginx ожидает зашифрованные пароли в этом файле, то он никогда не найдет хорошего совпадения, если пароль не зашифрован. И это, безусловно, так, согласно документации. См. Мой обновленный ответ.) Arjan 15 лет назад 1
СЛОВО. Действительно, требуемый пароль должен быть зашифрован, я использовал просто текст, НО, хех, теперь я не могу зашифровать его, знаете ли вы какой-либо инструмент (без установки Apache) для шифрования (3) слова? Я генерирую под окнами и с онлайн-инструментами, и это не работает. «2009/10/13 20:12:42 [ошибка] 4114 # 0: * 5 пользователь« ПОЛЬЗОВАТЕЛЬ »: несоответствие пароля ...» Gabriel A. Zorrilla 15 лет назад 0
1
Michelle

Мой опыт борьбы с такого рода вещами заключается в том, что, когда компьютер сообщает вам, что файл или каталог не существует ... его там нет! :-)

Попробуйте найти файл относительно корня сервера, т.е.

auth_basic_user_file /private/pass; 
True: * Начиная с версии 0.6.7, путь к имени файла относится к каталогу файла конфигурации nginx nginx.conf, но не к каталогу префиксов nginx. * - http://wiki.nginx.org/NginxHttpAuthBasicModule Arjan 15 лет назад 0
0
Rushyo

Я думаю, что пути к файлам / файлам не совпадают, как предполагалось. Вы уверены, что синтаксис определенно правильный в отношении путей к файлам?

Кроме того, имеет ли сервер доступ для чтения к рассматриваемому файлу паролей?

1. Поменял владельца на www-data: www-data, не повезло. 2. Чмоед на 777, не повезло. Gabriel A. Zorrilla 15 лет назад 0