November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Saturday, September 17th, 2016 12:44 pm

Попросили меня вчера добавить очередной логин с паролем в веб-сервер. Казалось бы, что тут может быть сложного, элементарно же.
Залогинился на машинку, посмотрел в апачевском конфиге, где лежит файл с паролями, запустил htpasswd, а… он ругнулся, что “could not determine temp dir”. Попробовал ещё несколько раз, та же фигня. Проверил environment, никаких переменных про TEMP/TMP нету, значит, по умолчанию должна использоваться /tmp, чего ж он её не может определить?!
Зашёл в /tmp, попробовал создать файл, и тут мне сказали, что не получится, потому что filesystem is read-only.

Запустил mount, а он тоже ругнулся, что mtab на неписабельной файловой системе, поэтому смотрите в /proc/mounts . Посмотрел, и с ужасом обнаружил, что корневая файловая система действительно read-only. Видать, что-то сломалось, и её автоматом перемонтировало в RO. Но что конкретно – не понять, логи же тоже неписабельные. Хотя по датам самых поздних логов удалось понять, когда примерно это случилось.

Что тут поделать.. Сначала запустил fsck -n. Он наругался на некорректные данные в файловой системе, но ошибок чтения диска не было, поэтому я его перезапустил с -y. Он вроде как всё починил, повторный запуск уже никаких ошибок не нашёл. Но.. бОльшая часть программ перестала работать. Ни mount, ни cat, ни ls, не запускались. И даже bash, кроме того экземпляра, из которого я это всё делал. Типа, shared libraries отсутствуют, или какие-то конкретные ссылки в них не найдены.. В общем, всё основательно попортилось.

А на машинке той ещё и mysqlная база данных была, master. Прицепил этот диск к другой машинке, где slave, попробовал подмонтировать, ан и там такая же фигня, корневая файловая система read-only. Вотжеблин..

Но на slave пока все программы успешно работали, даже mysql ещё не упал, хотя писать ничего не мог. Видать, всё где-то хорошо закэшировалось.

Нашёл таки способ подмонтировать там файловую систему с дополнительного диска, скопировал туда библиотеки, и некоторые подпорченные программки. Потом зашёл в неё chroot’ом, проверил, что хотя бы bash, mount и scp работают. Затем отсоединил диск, вернул его на прежнюю машину, запустил – о, загрузилась, заработала!

Но тут оказалось, что /var/lib/mysql там совсем пропал. Скопировал со slave, запустил, вроде всё на месте.

И, наконец, добавил логин с паролем в файлик от апача. Ушёл на это почти весь день..

Оригинал этой записи в личном блоге.