Не все эти символы в режиме являются разрешениями.
Первый символ обозначает тип файла. :Вы не можете изменить тип файла. Поэтому вы не можете изменить сокет (s )в каталог (d ).
Решение найдено! :-)Короче говоря, мы должны установить флаг CPTY_ZEROREAD
на этапе настройки компиляции .
В файле channels.c
исходного кода мы видим, где возникает ошибка...
#ifndef PTY_ZEROREAD
if (len <= 0) {
#else
if ((!c->isatty && len <= 0) ||
(c->isatty && (len < 0 || (len == 0 && errno != 0)))) {
#endif
debug2("channel %d: read<=0 rfd %d len %zd",
c->self, c->rfd, len);
if (c->type != SSH_CHANNEL_OPEN) {
debug2("channel %d: not open", c->self);
chan_mark_dead(ssh, c);
return -1;
} else {
chan_read_failed(ssh, c);
}
return -1;
}
И мы видим, что флаг компиляцииPTY_ZEROREAD
изменяет способ обработки сообщений нулевой длины в терминалах.
Для решения проблемы необходимо выполнить команду configure
с установленным флагом C, как показано в последней строке следующей команды:
./configure --with-zlib \
--with-pam \
--with-md5-passwords \
CFLAGS="-DPTY_ZEROREAD=1"