sed - строка поиска и добавляет

Очевидно, существуют типичные книги по системному администрированию Linux относительно полномочий. Но, который действительно не отвечает на Ваш вопрос. Я рекомендовал бы следующее:

  • используйте a find управляйте для поиска "мировых перезаписываемых файлов"
  • используйте a find управляйте для поиска "setUID и setGID файлы"
  • используйте безопасность системы сканирующий или укрепляющийся инструмент для проверки системы на уязвимости существуют тонны их доступных, лучшая страница, которую я видел, список их от YoLinux

Инструменты аудита безопасности YoLinux

Я рекомендовал бы Bastille-linux и Nessus. Что касается находки управляет, чтобы простой поиск в сети поднял их. Кроме того это прямо читает и смешивает с Вашей системой.

Править: Очевидно, Вы не хотите обязательно изменять полномочия на мировых читаемых или перезаписываемых файлах или setUID, двоичных файлах GID. Для многих программ нужно, им нравится passwd и уже заблокированы вниз, чтобы не быть годным для использования. Необходимо будет провести исследование, чтобы видеть, нужны ли системе они.

Также постарайтесь не устанавливать полномочия слишком подробно по умолчанию. Никакая потребность дать other полномочия, если этому не нужен он. Группы установки и не отбрасывают всех в users если Вы не имеете к. Не экспортируйте доли NFS в * и читайте на root_squash если Вы смешиваете с NFS.

2
28.08.2013, 04:17
3 ответа

Если Вы хотите изменить только строки с двумя столбцами, один с IP-адресом и один с именем, заканчивающимся в .ac, используйте regex, который соответствует этому и только этому. Я рекомендую удостовериться, что Ваш regex не соответствует строкам комментария.

sed -e 's/^\([\t ]*\)\([0-9a-fA-F.:][0-9a-fA-F.:]*\)\([\t ][\t ]*\)\([^\t ][^\t ]*\)\.ac\([\t ]*\)/\1\2\3\4.ac \4/'
             111111    222222222222222222222222222    33333333333    4444444444444        555555
  1. добавление отступа
  2. IP-адрес (IPv4 или IPv6)
  3. пробел, разделяющий столбцы
  4. имя хоста (без .ac)
  5. конечный пробел
2
27.01.2020, 22:06

Можно сделать это легко в awk. Проблема с Вашей командой состоит в том, что Вы используете обоих awk и sed. Вы отбрасываете большую часть строки с awk.

Пример ниже просто соответствует второму столбцу против regex и печатает всю строку с новыми добавленными данными:

awk '{ if ( match($2, /(c04c[0-9]+)[.]ac/, arr) ) {
           print $0" "arr[1];
        } else {
           print;
     }' < /etc/hosts > newfile
1
27.01.2020, 22:06
sed 's/[[:blank:]]\(c04c[0-9]\{1,\}\).*/& \1/'
0
27.01.2020, 22:06

Теги

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