Можно ли сделать пользователя, который может входить в систему только с помощью su?

С awk+tac:

tac file | awk -v delim="--split page here--" '{
  if (nextnr=="" && $1~/^[0-9]+$/ && $0=="                                                                      "$1) {
     nextnr=NR+9  # pagenr found, remember next position
  }
  else if (NR==nextnr) {
     $0=delim     # overwrite line with delimiter
     nextnr=""    # reset
  }  
  print
}' | tac

Сначала переверните файл с помощью tac, чтобы мы могли искать сверху -вниз номер страницы и вставлять разделитель.

Поиск начинается в предложении if -, когда выполняются эти условия.:

  • nextnrравно (изначально )не установлено(nextnr==""). Это переменная, содержащая номер строки следующего разделителя.
  • первое поле — число($1~/^[0-9]+$/)
  • строка содержит 70 пробелов и число

Если все три условия истинны, nextnrустанавливается на текущий номер строки (количество записей)NR + 9.

Если текущая строка является строкой разделителя (NR==nextnr), перезапишите строку разделителем и сбросьте nextnr.

Последняя строка скрипта выводит текущую строку (оригинала или перезаписывает разделитель ).

На последнем шаге выход снова реверсируется с помощью tac.

0
15.11.2020, 18:58
1 ответ

IIRC, наличие «*» в поле пароля в /etc/shadowбудет работать. Обязательно отредактируйте этот файл вручную, потому что вам может понадобиться исправить контекст SELinux и т. д.

Редактировать :Вы можете сделать такой пароль, который никто никогда не узнает. Затем пользователь не может войти в систему, а только переключается с помощьюsudo:

dd if=/dev/random bs=1 count=64 | md5sum | awk '{print $1}{print $1}' | passwd user
0
18.03.2021, 22:49

Теги

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