Как я могу заблокировать вход обычного пользователя через последовательную консоль (`ttyS0 `)без блокировки root?

Вы можете распечатать значения (с начальным пробелом )с:

$ echo "{{1,department}}" | awk -F '[ {},]' 'NF=NF'
 1 department

Это позволит прочитать значения:

read val1 val2 <<<$(echo "{{1,department}}" | awk -F '[ {},]' 'NF=NF')

Это будет работать для одной скобки и любых дополнительных полей.:

$ echo "{{1,department,name,list}}" | awk -F '[ {},]' 'NF=NF'
 1 department name list

Аналогичное решение возможно с grep:

$ echo '{1,department}' | grep -Po '(?<={|,)[^{,}]*(?=,|})'
1
department

$ echo '{{1,department}}' | grep -Po '(?<={|,)[^{,}]*(?=,|})'
1
department

$ echo '{{1,department,name,list}}' | grep -Po '(?<={|,)[^{,}]*(?=,|})'
1
department
name
list

Из переменной в оболочке должно совпадать точное количество полей:

$ value='{{1,department}}'
$ re='\{\{([^},]*),([^}]*)\}\}'
$ [[ $value =~ $re ]] && echo "${BASH_REMATCH[@]:1}"
1 department
1
25.07.2020, 22:59
2 ответа

Что-то, что нужно сначала прояснить, чтобы мы могли прийти к правильному решению, а не к тому, что вы пытаетесь сделать:

  • В современных дистрибутивах Linux у вас больше нет паролей root.
    Хотя это может показаться безопасным, это не так. Вместо этого вы либо запускаете команду как root с sudo command, либо становитесь root с sudo -i. Это означает, что регистрация в качестве пользователя root на последовательной консоли невозможна и должна оставаться такой.
  • Вы упомянули, что обычные пользователи не должны иметь доступа к ttyS0. Если это так, то лучше вообще не использовать ttyS0. (Это не хорошо и не плохо, это просто выбор)

Если вы хотите войти в систему root без sudoна случай, если ваш /homeне работает, у вас, вероятно, также есть пара других проблем. В этом случае я бы предложил загрузиться с живого -носителя, таким образом вы также можете дать себе все необходимые разрешения для решения проблемы (s ).

-2
18.03.2021, 23:17

Я предлагаю использовать PAM для установки этих ограничений. Скорее всего, у вас есть файл с именем /etc/pam.d/login, который используется процессом входа в систему, порожденным getty, работающим на ttyS0.

Вероятно, он включает в себя один из общих файлов аутентификации, так что вы можете просто заблокировать в нем все, что имеет uid > 0.

Вы также можете использовать pam _access access.conf , чтобы ограничить только root для ttyS0.

0
18.03.2021, 23:17

Теги

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