centos и kerberized nfs работают нормально, но только для nfs3

Несколько вариантов:

awk '
  function basename(file) {
    sub(".*/", "", file)
    return file
  }
  {print FILENAME, basename(FILENAME)}' /path/to/file

Или:

awk '
  function basename(file, a, n) {
    n = split(file, a, "/")
    return a[n]
  }
  {print FILENAME, basename(FILENAME)}' /path/to/file

Обратите внимание, что эти реализации basename должны работать для общие случаи, но не в угловых случаях, таких как basename / path / to / x /// , где они возвращают пустую строку вместо x или / , где они вернуть пустую строку вместо / , хотя для обычных файлов этого не должно происходить.

Первый не будет работать должным образом, если пути к файлам (до последнего / ) содержат последовательности байтов, которые не образуют допустимые символы в текущей локали (обычно такое происходит в Локали UTF-8 с именами файлов, закодированными в некотором 8-битном однобайтовом наборе символов). Вы можете обойти это, установив языковой стандарт на C, где каждая последовательность байтов формирует допустимые символы.

1
02.03.2019, 19:06
1 ответ

Решение найдено, я отредактировал /etc/exports следующим образом

/export             10.2.0.0/24(ro,no_subtree_check,fsid=0,sec=krb5p:sys)
/export/private         10.2.0.0/24(ro,no_subtree_check,async,root_squash,nohide,sec=krb5p)
/export/public      10.2.0.0/24(ro,no_subtree_check,async,root_squash,nohide,sec=sys)

Теперь работает отлично.

mount -vvv -t nfs4 -o sec=krb5p  centos1.myrealm.fake:/private /mnt
mount.nfs4: timeout set for Sun Mar  3 09:59:06 2019
mount.nfs4: trying text-based options 'sec=krb5p,vers=4.1,addr=10.2.0.77,clientaddr=10.2.0.77'
umount /mnt
mount -vvv -t nfs4 -o sec=sys  centos1.myrealm.fake:/public /mnt
mount.nfs4: timeout set for Sun Mar  3 09:59:19 2019
mount.nfs4: trying text-based options 'sec=sys,vers=4.1,addr=10.2.0.77,clientaddr=10.2.0.77'
1
27.01.2020, 23:41

Теги

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