Вы можете использовать (G) AWK:
Чтобы найти различия, используйте AWK, чтобы сначала преобразовать файл 1.txt в линейное представление, а затем перенести результат в diff:
gawk 'BEGIN {FS = " "} ; {for(i=1; i<=NF; i++) print $i}' file1.txt | diff file2.txt -
-121--160860-
Я предпочитаю использовать команду getent ...
Поскольку getent использует ту же службу имен, что и система, getent отображает всю информацию, включая информацию, полученную из сетевых источников информации, таких как LDAP.
Поэтому для группы следует использовать следующее...
getent group name_of_group
, где name _ of _ group заменяется группой, которую требуется найти. Обратите внимание, что это возвращает только членство в дополнительных группах, но не включает пользователей, у которых эта группа является основной.
Есть много других поисков, которые вы можете сделать... passwd
- еще один полезный, который необходимо перечислить для основных групп.
-121--5600-
Ответ - да. Вы указываете на правильную цель, но пропускаете несколько частей:
С помощью ResponseAuthentication
можно определить другие методы аутентификации, но чтобы убедиться, что они запрошены у пользователя, необходимо указать их список в AuthentityMethods
, например, в sshd _ config
(выполнение pam два раза - это просто пример того, как это работает):
ChallengeResponseAuthentication yes
AuthenticationMethods keyboard-interactive:pam,keyboard-interactive:pam
Однако это можно сделать только в PAM, добавив дополнительный метод в /etc/pam.d/sshd
.
В качестве сноски - да. Вероятно, большинство обычных ssh сканирований завершатся неудачей. Но атаки грубой силы, если они направлены, могут угадать один или два пароля. Не важно. Но все они все равно будут тратить ваше компьютерное время. И вам по-прежнему нужны сильные пароли, если вы не хотите их отключать (что должно быть предпочтительным).
Para obtener el nombre de usuario más largo (y su longitud):
$ getent passwd | awk -F':' '{ print length($1), $1 }' | sort -rn | head -n 1
11 _traceroute
Es decir, obtenga el archivo passwd
, calcule la longitud de cada nombre de usuario (la primera:
-cadena delimitada ), ordene por longitud y elija la primera.
Si hay varios nombres de usuario de la misma longitud, se elige el que se ordena en último lugar lexicográficamente.
Para obtener el nombre real más largo (y ver de qué nombre de usuario es el nombre real y la longitud):
$ getent passwd | awk -F':' '{ print length($5), $1, $5 }' | sort -rn | head -n 1
32 _rtadvd IPv6 Router Advertisement Daemon
Esto hace lo mismo que el primer comando, pero calcula la longitud de la quinta:
-cadena delimitada en el archivo passwd
. Este campo contiene el nombre real del usuario. El resultado es la longitud del nombre real, el nombre de usuario y el nombre real.
En algunos sistemas, un &
en el nombre real del usuario será reemplazado por el nombre de usuario cuando ciertas herramientas accedan al campo como finger
o sendmail
. Por ejemplo, una entrada passwd
puede ser
operator:*:2:5:System &:/operator:/sbin/nologin
Para tener esto en cuenta al calcular la longitud del nombre real:
getent passwd | awk -F':' '{ gsub("&", $1, $5); print length($5), $1, $5 }' | sort -rn | head -n 1
Permitiendo además que awk
seleccione el nombre más largo, eliminando sort
yhead
:
getent passwd |
awk -F':' '
{ gsub("&", $1, $5) ; len = length($5) }
len > max { line = $0 ; max = len; }
END { split(line, a, FS); print max, a[1], a[5] }'
Con este código, se seleccionará el primer nombre más largo encontrado si hay varios nombres de la misma longitud.
A continuación se muestran los 10 nombres de usuario más largos, excluyendo a los usuarios del sistema
sed -n '/sbin/!p' /etc/passwd| awk -F ":" '{print length($1),$1}'| sort -k1 -nr| head
salida
9 praveen10
9 lost_foud
8 p2_final
7 praveen
6 p1_new
5 user5
5 user4
5 user3
5 user2
5 user1
У меня есть файл, содержащий имя, фамилию и адрес электронной почты пользователей. Вот что я сделал, чтобы напечатать самое длинное имя:
awk '{print length($1), $1}' filename | sort -nr | head -1| cut -d\ -f2
Не стесняйтесь настраивать его по своему усмотрению. Обратите внимание, что вы нажали два пробела после-d\
Чтобы напечатать самое длинное имя пользователя, вы можете использовать
grep -v "^#" /etc/passwd | awk -F: '{print length($1), $1}' | sort -nr | head -1 | cut -d\ -f2
Чтобы распечатать настоящее имя пользователя, используйте
grep -v "^#" /etc/passwd | awk -F: '{print length($5), $5}' | sort -nr | head -1 | cut -d\ -f2-
Вы ставите тире после -f2
в конце, чтобы убедиться, что вы получаете пробелы в реальном имени пользователя.