Я не смог найти ничего полезного в Интернете.
Вот история. Пытаюсь установить Samba (версия 4.5.12) на Debian (Raspbian, но это неважно). Debian установлен на файловой системе только для чтения. Установка проходит нормально, но Samba не запускается в режиме RO (только для чтения). Пытался сделать символические ссылки необходимых данных ( /var/lib/samba files
) на внешнем HDD (который доступен для чтения и записи), но при запуске Samba выдает ошибку - systemctl failed to start smdb.service. В systemctl status
ничего интересного. Но в samba/log.
я обнаружил, что:
[2018/04/01 17:11:55.333301, 0] ../lib/util/util.c:270(directory_create_or_exist_strict)
directory /var/lib/samba/private/msg.sock isn't a directory
[2018/04/01 17:12:35.116576, 0] ../lib/util/util.c:270(directory_create_or_exist_strict)
directory /var/lib/samba/private/msg.sock isn't a directory
[2018/04/01 17:42:24.843043, 0] ../lib/util/util.c:216(directory_create_or_exist)
mkdir failed on directory /var/lib/samba/private/msg.sock: Read-only file system
[2018/04/01 18:04:41.824892, 0] ../lib/util/util.c:216(directory_create_or_exist)
mkdir failed on directory /var/lib/samba/private/msg.sock: No such file or directory
Поиск в Google помог мне выяснить, что directory_create_or_exist_strict
функция в исходном коде Samba проверяет каталоги (в моем случае /var/lib/samba/private/msg.sock
) на реальность.
Есть ли решение для Linux? Мне переписать функцию directory_create_or_exist_strict
или сделать абсолютный путь для msg.sock
каталога на внешнем HDD? Или есть другой способ отзеркалить эту папку на внешний HDD? Пожалуйста, поделитесь со мной советами.
решение1
Проблема, вероятно, в том, что вы используете мягкую ссылку для перенаправления папки samba var на другой диск.
Мягкая ссылка ведет себя несколько иначе, чем настоящая папка, и может быть неприемлема для кода создания сокета samba.
Что бы я сделал в такой конфигурации, как ваша, так это поместил всю файловую систему /var на другой диск (или как tmpfs) и просто смонтировал ее во время загрузки.
Или, если вы не хотите идти до конца, просто создайте файловую систему tmpfs при загрузке и смонтируйте ее в /var/lib/samba.
Точка монтирования должна быть в порядке. В противном случае ни одна система Linux не сможет поместить /var в другую файловую систему.