Как сохранить разрешение только на чтение из исходного файла в символическую ссылку?

Я отправил аналогичный вопрос на StackOverflow (, вероятно, следовало разместить здесь, посвященный Unix и Linux ).

Мое решение состояло в том, чтобы написать функцию bash:

xtrace() {
    local eval_cmd
    printf -v eval_cmd '%q' "${@}"
    { set -x
      eval "${eval_cmd}"
    } 2>&1 | grep '^++'
    return "${PIPESTATUS[0]}"
}

Итак, xtrace uвыведет что-то вроде:

++ apt-get update
++ apt-get upgrade -y --show-progress
++ apt-get autoremove -y
++ apt-get check
++ apt-get autoclean

Имейте в виду, что это на самом деле выполняет любой псевдоним, который вы ему передаете, поэтому, если вы не хотите выполнять u, тогда лучше использовать решение @MichaelHomer. Кроме того, из-за вашей цепочки &&, если какая-либо из команд в вашем псевдониме не возвращает 0, выполнение остановится, и вы увидите только расширенные псевдонимы до этой точки.

0
27.04.2020, 14:34
1 ответ

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

Причина, по которой сами символические ссылки не имеют концепции разрешения, заключается в том, что трудно придумать какой-либо вариант использования для этого :если можно разыменовать символическую ссылку и успешно получить доступ к конечному файлу, они могли бы также использоватьreadlink(2 )по символической ссылке и просто прочитайте конечный файл с его первоначальными разрешениями. Таким образом, самый простой и разумный ответ — «вы не можете».:-)

Если вы полны решимости сделать это, один из вариантов — использовать eBPF, ptrace или что-то подобное для перехвата вызовов к этому пути к файлу и подделки некоторых разрешений (, хотя вам, возможно, придется притвориться, что это не символическая ссылка на избегайте провоцирования странных состояний в программах, которые по праву никогда не ожидали, что это станет проблемой ). Опять же, если у вас есть символическая ссылка, люди просто будут разрешать ее до конечного пункта назначения, поэтому я не уверен, чего вы надеетесь достичь здесь.

4
19.03.2021, 02:25

Теги

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