chroot перестал работать с - userspec, когда chroot является i686

Упрощенный подход с awk

awk '/R1/ {print "=>" $0;next} /R2/{print "*" $0;next} 1' text.file

[jaypal:~/Temp] cat text.file 
R1 12 324 3453 36 457 4 7 8
R2 34 2342 2525 25 25 26 26 2 2
R3 23 2342 32 52 54 543 643 63
R4 25 234 2342 4 234242

[jaypal:~/Temp] awk '/R1/ { print "=>" $0;next} /R2/{print "*" $0;next}1' text.file
=>R1 12 324 3453 36 457 4 7 8
*R2 34 2342 2525 25 25 26 26 2 2
R3 23 2342 32 52 54 543 643 63
R4 25 234 2342 4 234242
[jaypal:~/Temp] 

Выход шаблона {действие} операторы:

  • /R1/ { print "=>" $0;next} : Это означает наличие строк /R1/ действие печати => будет сделан. next остальная часть средств awk операторов будет проигнорирована, и на следующую строку посмотрят.

  • /R2/{print "*" $0;next} : Это означает строки, соответствующие pattern /R2/ действие печати * будет сделан. Когда awk обработка запускается, первое pattern {action} оператор будет проигнорирован как pattern /R1/ не будет верно для наличия строк /R2/. Настолько второй pattern {action} оператор будет сделанный на строке. next снова означал бы, что мы больше не хотим обрабатывать и awk должным образом перейдет к следующей строке.

  • 1 печать все строки. Когда просто условие предоставляется без {action}, значения по умолчанию awk к использованию {print}. Здесь условие 1 который интерпретируется как верный, таким образом, это всегда успешно выполняется. Если мы добираемся до этой точки, это потому что первое и второе pattern {action} операторы были проигнорированы или обойдены (для строк, не содержащих /R1/ и /R2/), таким образом, действие печати по умолчанию будет сделано для остающихся строк.

6
23.09.2016, 01:02
1 ответ

Вы не можете ввести chroot с именем пользователя, которое не известно цели chroot среда. Скопируйте весь необходимый файл для аутентификации пользователя к каждому chroot: /etc/passwd, /etc/shadow, /etc/nsswitch.conf, и, в конечном счете все файлы в /etc/pam.d/*. Я

1
27.01.2020, 20:30
  • 1
    я уже ответил на тот вопрос в своем исходном вопросе, где я сказал "Пользователя и группу, используемую для userspec аргумента, должен быть определен в chroot". –  starfry 15.03.2013, 16:41
  • 2
    Вы правы. Я не сделал правильно понятый то предложение. Возможно, Вы могли также попробовать обходное решение как предшествование Вашим командам с a su --command 'sg $group -c "$command"' $user или запишите сценарий обертки, который работает в chroot. –  eppesuig 16.03.2013, 09:56

Теги

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