Это так странно. Авторизовался в Linux (RHEL) как пользователь 'g', выполнив ls -lah
показывает
drwxrwxrwx 6 g g 4.0K Jun 23 13:27 .
drwxrw-r-x 6 root root 4.0K Jun 23 13:15 ..
-rwxrw---- 1 g g 678 Jun 23 13:26 .bash_history
-rwxrw---- 1 g g 33 Jun 23 13:15 .bash_logout
-rwxrw---- 1 g g 176 Jun 23 13:15 .bash_profile
-rwxrw---- 1 g g 124 Jun 23 13:15 .bashrc
drw-r----- 2 g g 4.0K Jun 23 13:25 .ssh
Таким образом, пользователь 'g' в группе 'g' / должен / иметь возможность читать и писать в каталог .ssh, но если я это сделаю ls -lah .ssh/
я получил ls: .ssh/: Permission denied
. Я также получаю отказ в разрешении, если попытаюсь cat
любые файлы в каталоге
Если я войду как root и изменю разрешения на 700
, 744
, 766
или что-то еще, пока разрешение «пользователя» равно 7, оно работает, и я могу CD и LS каталог и файлы внутри.
id g
возвращается
uid=504(g) gid=506(g) groups=506(g)
Я скопировал эти разрешения точно в другой идентичный ящик, и проблем нет. Я могу cd
в каталог без разрешений на выполнение.
Каталог воля требуется установить бит выполнения, чтобы вы могли его ввести. Я не знаю, что вы тестировали, но вы не может войдите в каталог без бита выполнения или прочтите в нем файлы:
$ mkdir foo
$ echo "baz" > foo/bar
$ chmod 660 foo
$ cd foo
bash: cd: foo: Permission denied
$ cat foo/bar
cat: foo/bar: Permission denied
То есть, если только ваш процесс имеет набор возможностей CAP_DAC_OVERRIDE POSIX (как и root), который позволяет вам входить в каталоги без установленного исполняемого бита iirc.
По сути, вы должны стараться сохранить каталог .ssh на 700, а все в нем на 600, на всякий случай. На странице руководства ssh для каждого файла приведены инструкции по требуемым владениям и режимам разрешений для файлов в ~ / .ssh.
Для каталога требуется разрешение на выполнение, чтобы cd
внутрь. Это ожидаемое поведение.
Чтобы войти в каталог с помощью ls или cd, вам нужны разрешения на выполнение. Пока у вас их нет, вы не можете реально проверить содержимое и увидеть разрешения файлов внутри, поэтому, скорее всего, права доступа к файлам сами по себе неверны, если вы не можете их отслеживать.
Разрешение на каталог 700 и права доступа к файлам 644 для меня совершенно нормально.
Я так понимаю, теперь это проблема с файлом ssh? это не общая проблема с chmod?
Если так, попробуйте
$chmod go-w ~/
$chmod 700 ~/.ssh
$chmod 600 ~/.ssh/*
$chmod 600 ~/.ssh/.*
Для открытия каталогов необходимо установить бит x (для каталога этот бит рассматривается как бит поиска). Поэтому я использую дерево, чтобы получить только набор папок и избежать кошмара, связанного с тем, что все файлы установлены как исполняемые (вариант для дерева -d List directories only.
):
sudo tree -faid here_goes_your_directory xargs -L1 -I{} sudo chmod 755 "{}"
Предупреждение!!! вы должны принять это во внимание:
используя chmod или chown рекурсивно для корня /
каталог или системные каталоги разрушат вашу ОС (на самом деле все рекурсивное на /
каталог или системные каталоги опасны)
это не очень хорошая практика безопасности, чтобы установить такой пакет разрешений