Это немного неожиданное поведение mkdir, я бы также предположил, что флаг -m повлияет на все созданные каталоги, а не только на листовой узел.
Я вижу два простых способа сделать это:
$ (umask 022; mkdir -p a/b/c)
$ install -d -m 755 a/b/c
umask управляет всем созданием файлов, выполняемым оболочкой, и является маской установленных битов разрешения (это делает значения немного сложными в использовании). Заключение двух команд в круглые скобки означает, что они будут действовать только для этой подчиненной оболочки.
Другой вариант - использование инструмента установки. С параметром -d он ведет себя так же, как mkdir -p, но флаг -m будет использоваться для всех каталогов, а не только для конечного узла. install является частью пакета coreutils и, скорее всего, будет доступен в любой системе.