не удается войти новому пользователю через ssh "сервер отказался от нашего ключа"

Несколько месяцев назад я провел тест поведения cp, когда целевой файл уже существует:

$ ls -li
total 12
913966 -rw-rw-r-- 1 vagrant vagrant 30 Dec 16 20:26 file1
913965 -rwxrw---- 2 pete    vagrant 39 Dec 16 20:35 file2
913965 -rwxrw---- 2 pete    vagrant 39 Dec 16 20:35 hardlinktofile2
$ cat file1
This is the contents of file1
$ cat file2
This is the original contents of file2
$ cp file1 file2
$ ls -li
total 12
913966 -rw-rw-r-- 1 vagrant vagrant 30 Dec 16 20:26 file1
913965 -rwxrw---- 2 pete    vagrant 30 Dec 16 20:37 file2
913965 -rwxrw---- 2 pete    vagrant 30 Dec 16 20:37 hardlinktofile2
$ cat file1
This is the contents of file1
$ cat file2
This is the contents of file1
$ 

Как вы можете видеть, целевой файл перезаписывается на место и все его разрешения, права собственности, атрибуты и т.д. сохраняются - даже жесткие ссылки. Исходный файл никак на них не влияет.

Нет никакого смысла в том, чтобы mtime сохранялось по умолчанию, и это не так. Но вы заметите, что новое mtime для file2 не берется из file1- оно берется из текущего системного времени.

Вы можете провести аналогичный тест, не имея уже существующего целевого файла, но этот тест на самом деле более наглядно иллюстрирует суть: Только фактическое содержимое файла копируется, когда не указаны никакие опции. Владение файлом, разрешения, ACL, mtime и т.д. не устанавливаются в соответствии с исходным файлом, а вместо этого устанавливаются таким же образом, как и для вновь созданного файла. (Так, разрешения в соответствии с umask, mtime в соответствии с текущим временем, право собственности в соответствии с EUID процесса cp и т.д.)

Есть одно специфическое, но общее исключение:

При отсутствии [опции --preserve=] разрешения существующих файлов назначения не изменяются. Каждый новый файл создается с режимом соответствующего исходного файла за вычетом битов set-user-ID, set-group-ID и sticky в качестве режима создания. (Затем операционная система применяет либо umask, либо ACL по умолчанию, что, возможно, приводит к более ограничительному режиму файла).


Согласно info coreutils 'cp invocation':

`xattr'
 Сохранять расширенные атрибуты, если `cp' собран с поддержкой xattr
 и xattr поддерживаются и включены в вашей файловой системе.
 системе. Если контекст SELinux и/или ACL реализованы с использованием
 xattrs, они также будут сохранены этой опцией.

Это не указывает, что расширенные атрибуты сохраняются каким-либо другим способом, кроме как с помощью этого флага.

4
13.04.2017, 15:37
1 ответ

Важны не только разрешения, но также пользователь и группа. Вы должны заметить это из следующего вывода:

ls -ldZ ~username/ ~username/.ssh ~username/.ssh/authorized_keys

Это распространенная ошибка, особенно если вы создаете папки с помощью пользователя root .

4
27.01.2020, 20:55

Теги

Похожие вопросы