Регулярное выражение bash не распознает все группы

Если пользователь запускает команду с sudo , затем они запускают команду, как если бы они были root, потому что они root. Таким образом, вы не можете запретить пользователю, который может использовать sudo, переключиться в каталог.

Если вы не хотите, чтобы пользователи получали доступ к файлам в каталоге, вы не можете предоставить им root-доступ на машине.

1
09.01.2017, 12:55
1 ответ

Регулярное выражение Bash не привязано. Это означает, что они могут совпадать в любом месте строки. Это зависит от вашего механизма регулярных выражений. Здесь совпадение начинается со знака равенства, как показано BASH_REMATCH [0] .

Решение: добавьте ^ в начало строки регулярного выражения .

[update] Как сказано выше, bash использует ваш механизм регулярных выражений ( man 3 regex ), который может отличаться от одного платформу к другой. Если у вас возникли проблемы с регулярным выражением, избегайте ярлыков \ letter и используйте вместо них их эквивалент в Posix.

Например, вместо regex = "^ \ s * (\ w *) \ s * = \ s * (. *)"
используйте regex = "^ [[: space :]] * ([_ [: alnum:]] *) [[: space:]] * = [[: space:]] * (. *) "

2
27.01.2020, 23:34

Теги

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