Проблема с общими ресурсами Samba на Fedora Server 32: общая папка видна, но не открывается на клиентах Linux и Windows

Это ожидаемо — подробности см. на справочной странице . эта цитата All commands of a pipeline are executed in separate subshellsи следующая запись FAQ:

   Something is going wrong with my while...read loop
     Most likely, you've encountered the problem in which the shell runs all
     parts of a pipeline as subshell.  The inner loop will be executed in a
     subshell and variable changes cannot be propagated if run in a pipeline:

           bar | baz | while read foo; do...; done

     Note that exit in the inner loop will only exit the subshell and not the
     original shell.  Likewise, if the code is inside a function, return in
     the inner loop will only exit the subshell and won't terminate the func‐
     tion.

     Use co-processes instead:

           bar | baz |&
           while read -p foo; do...; done
           exec 3>&p; exec 3>&-

     If read is run in a loop such as while read foo; do...; done then lead‐
     ing whitespace will be removed (IFS) and backslashes processed.  You
     might want to use while IFS= read -r foo; do...; done for pristine I/O.
     Similarly, when using the -a option, use of the -r option might be pru‐
     dent (“read -raN-1 arr "
           done

Итак, давайте преобразуем ваш код (также заменили первые две строки на одну, которая правильно очищает массив):

set -A F_ARR
find "$CDIR" ! -type d -mtime +7 -print0 |&
while IFS= read -d '' -pr pathname; do
        F_ARR+=("$pathname")
done
echo ${#F_ARR[@]}

Для этого требуется find (1 ), который поддерживает параметр -print0, и достаточно свежий mkshна стороне выполнения для поддержки -d ''для строк с завершением -NUL. Если ваша оболочка Korn более старая, сделайте это без (, но тогда она также не будет поддерживать +=(…), так что, скорее всего, она достаточно новая ).

Полное раскрытие :Я mksh разработчик.

0
29.11.2020, 22:12
1 ответ

Вот как это было исправлено

После обращения в гильдию по устранению неполадок я читал о SELinux, когда в Google искал, что они используют другой жесткий диск. Если вы не делитесь папкой, которая находится на том же жестком диске, на котором установлена ​​ОС, вы должны делать что-то по-другому, в моем случае у меня есть жесткий диск емкостью 2 ТБ, который является хранилищем данных для этого сервера, и чем я хотел поделиться через Самба

По поводу сбоя сервера я нашел этот пост, который помог мне в правильном направлении

https://serverfault.com/questions/395486/i-can-connect-to-samba-server-but-cannot-access-shares

Я узнал, что мне нужно изменить разрешение в точке монтирования, в моем случае /NetworkData2, и добавить его в SELinux.

После того, как я завершил это, я смог получить доступ к папке в Windows Files Explorer и к файлам моего компьютера с Linux, однако возникла другая проблема, когда у меня не было разрешения на запись в папку. Оказывается, root имел контроль над папкой и не позволял в ней ничего писать. поэтому я изменил разрешения на папку / NetworkData2, и я не могу читать и писать в нее и из нее, и общие ресурсы работают.

0
18.03.2021, 22:46

Теги

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