Проблема была вызвана неправильным контекстом файла /usr/bin/mount
:samba_share_t
.
Изменение контекста файла было вызвано не какой-то ошибкой из-за полной перезагрузки, а... моим неосторожным решением последовать первому предложению SELinux Alert Browser. Смотрите скриншот ниже.
Это первое предложение состояло в том, чтобы изменить контекст файла /usr/bin/mount
на samba_share_t
, чтобы разрешить smbd доступ к getattr.
Решение было:
[root@atlas ~]# ls -Z /usr/bin/mount
system_u:object_r:samba_share_t:s0 /usr/bin/mount
[root@atlas ~]# semanage fcontext -d /usr/bin/mount
[root@atlas ~]# restorecon -v /usr/bin/mount
Relabeled /usr/bin/mount from system_u:object_r:samba_share_t:s0 to system_u:object_r:mount_exec_t:s0
[root@atlas ~]# ls -Z /usr/bin/mount
system_u:object_r:mount_exec_t:s0 /usr/bin/mount
Это можно сделать в аварийной консоли, но я использовал консоль, чтобы перевести SELinux в разрешающий режим, загрузить систему и затем изменить контекст файла, как описано выше.
Когда я проверил измененные контексты файлов SELinux (, см. стр. 10 моего первоначального поста )я заметил, что контекст монтирования выглядит подозрительно. На данный момент я понял, что незадолго до того, как проблема началась, я неосторожно последовал первому предложению SELinux Alert Browser изменить контекст файла монтирования. Такое же предложение появилось сейчас, после восстановления и перезапуска системы, поэтому я смог прикрепить скриншот ниже.
Спасибо @sourcejedi за указание на то, что SELinux может быть причиной проблемы, и за его любезную помощь!
grep ".\{0,81\}" foo.txt
Любая строка будет соответствовать этому. Если строка имеет 82 символа, она также имеет 81 символ. Вам нужно либо:
^
и $
так, чтобы от начала строки до конца строки было от 0 до 81 символа, или -x
, чтобы указать, что строка должна точно соответствовать этому регулярному выражению (эквивалентно приведенной выше опции)Так:
grep "^.\{0,81\}$" foo.txt
grep -x ".\{0,81\}" foo.txt
Использование любого awk в любой оболочке на каждом компьютере UNIX:
$ printf 'abcdef\nABC\n' | awk 'length($0) > 3'
abcdef
$ printf 'abcdef\nABC\n' | awk 'length($0) < 3'
$
$ printf 'abcdef\nABC\n' | awk 'length($0) <= 3'
ABC
Будьте проще и помните поговорку:
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.