Очевидно, существуют типичные книги по системному администрированию Linux относительно полномочий. Но, который действительно не отвечает на Ваш вопрос. Я рекомендовал бы следующее:
find
управляйте для поиска "мировых перезаписываемых файлов"find
управляйте для поиска "setUID и setGID файлы"Инструменты аудита безопасности YoLinux
Я рекомендовал бы Bastille-linux
и Nessus
. Что касается находки управляет, чтобы простой поиск в сети поднял их. Кроме того это прямо читает и смешивает с Вашей системой.
Править: Очевидно, Вы не хотите обязательно изменять полномочия на мировых читаемых или перезаписываемых файлах или setUID, двоичных файлах GID. Для многих программ нужно, им нравится passwd
и уже заблокированы вниз, чтобы не быть годным для использования. Необходимо будет провести исследование, чтобы видеть, нужны ли системе они.
Также постарайтесь не устанавливать полномочия слишком подробно по умолчанию. Никакая потребность дать other
полномочия, если этому не нужен он. Группы установки и не отбрасывают всех в users
если Вы не имеете к. Не экспортируйте доли NFS в * и читайте на root_squash
если Вы смешиваете с NFS.
Если Вы хотите изменить только строки с двумя столбцами, один с 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
.ac
)Можно сделать это легко в awk
. Проблема с Вашей командой состоит в том, что Вы используете обоих awk
и sed
. Вы отбрасываете большую часть строки с awk
.
Пример ниже просто соответствует второму столбцу против regex и печатает всю строку с новыми добавленными данными:
awk '{ if ( match($2, /(c04c[0-9]+)[.]ac/, arr) ) {
print $0" "arr[1];
} else {
print;
}' < /etc/hosts > newfile