Могу ли я использовать файл для параметров ./configure при компиляции?

Общие параметры FUSE

1) Я заметил, что allow_other не был установлен на ntfs-3g монтирование файловой системы. По умолчанию FUSE не разрешает доступ другим пользователям. mhddfs является файловой системой FUSE, как и ntfs-3g (но см. Следующий раздел).

2) Когда вы используете allow_other , вы также хотите рассмотреть возможность проверки разрешений. По умолчанию FUSE не проверяет разрешения. Таким образом, простое добавление allow_other в файловую систему может сделать ее доступной для всех пользователей. Это, вероятно, нежелательно; отдельные идентификаторы пользователей часто используются для хранения служб, таких как демон принтера CUPS, на случай, если они будут скомпрометированы сетевой атакой. Чтобы включить проверку разрешений пользователя / группы / режима в общих файловых системах FUSE, параметр называется default_permissions .

Особое поведение NTFS-3G

1 -> Согласно странице man , ntfs-3g по умолчанию включает allow_other . (По умолчанию FUSE позволяет это делать только пользователю root.Это не проблема, поскольку вы используете mount , который запускается от имени пользователя root).

2 -> Похоже, что опция ntfs-3g permissions включила проверку разрешений для вас. В противном случае вы бы не заметили никаких ошибок разрешений. (SELinux может подойти, но вы не используете SELinux, потому что вы используете Ubuntu. Ubuntu AppArmor описывается как основанный на пути, поэтому из того, что вы описали, я думаю, что это вряд ли вызовет проблему).

Тезис

Я считаю, что ваше монтирование ntfs-3g настроено для выполнения проверок разрешений, и FUSE отдельно не блокирует доступ для других пользователей. Это звучит разумно для монтирования в fstab , которое используется для предоставления системных каталогов, таких как / var / mail .

Однако ваше монтирование mhddfs не выполняет проверку разрешений, потому что для него не установлено default_permissions . Это объясняет, почему установка mhddfs смогла работать (несмотря на параметры для uid, gid, umask , которые разрешают доступ только к вашему идентификатору пользователя 1000). Вы не показываете базовые файловые системы, поэтому я не знаю, проверяют ли они разрешения, но я подозреваю, что mhddfs просто работает как root и таким образом избегает проверок разрешений.

Вот тест, который вы можете запустить на монтировании mhddfs . Он должен показать, проверяются ли биты разрешений или нет.

mkdir dir
chmod a-w dir  # make directory read-only
touch dir/t    # attempt writing to directory

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

4
09.07.2016, 01:44
2 ответа

Чтобы развернуть $ HOME в вашем файле вы можете сначала использовать envsubst (имейте в виду, что это расширит любую переменную env). Затем вы можете прочитать результат в массиве, например.с zsh

args=(${(f)"$(< <(envsubst <infile))"})

или с bash

readarray -t args < <(envsubst <infile)

с последующим запуском

./configure "${args[@]}"

В качестве альтернативы вы можете использовать tr , чтобы отформатировать результат в виде одной строки параметров, перед которой стоит ./configure и направьте его в sh :

{ printf %s './configure '; tr '\n' ' ' <infile; } | sh
2
27.01.2020, 20:55

Один из способов сделать это - использовать xargs , что превращает Строки, разделенные пробелами, на стандартном вводе в аргументы командной строки. Если ваш файл называется переключатели , это будет выглядеть так:

xargs ./configure < switches

Это не будет расширять такие вещи, как * или $ VAR . Если (как в вашей редакции) вы хотите, чтобы они были расширены, есть несколько подходов. Мы можем просто создать команду и передать ее sh :

xargs printf '%s ' ./configure < switches | sh

Или, если у вас есть envsubst , это расширит переменные (например, $ {HOME} ), но не файловые глобусы ( * ):

envsubst < switches | xargs ./configure
2
27.01.2020, 20:55

Теги

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