Назад | Перейти на главную страницу

`Permission Denied` для компакт-диска в каталог, даже если разрешения верны

Это так странно. Авторизовался в 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 рекурсивно для корня / каталог или системные каталоги разрушат вашу ОС (на самом деле все рекурсивное на / каталог или системные каталоги опасны)

  • это не очень хорошая практика безопасности, чтобы установить такой пакет разрешений