Печать самых длинных имен пользователей

Вы можете использовать (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 сканирований завершатся неудачей. Но атаки грубой силы, если они направлены, могут угадать один или два пароля. Не важно. Но все они все равно будут тратить ваше компьютерное время. И вам по-прежнему нужны сильные пароли, если вы не хотите их отключать (что должно быть предпочтительным).

2
17.06.2018, 12:33
3 ответа

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 fingero sendmail. Por ejemplo, una entrada passwdpuede 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 awkseleccione el nombre más largo, eliminando sortyhead:

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.

4
27.01.2020, 21:53

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
0
27.01.2020, 21:53

У меня есть файл, содержащий имя, фамилию и адрес электронной почты пользователей. Вот что я сделал, чтобы напечатать самое длинное имя:

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в конце, чтобы убедиться, что вы получаете пробелы в реальном имени пользователя.

1
27.01.2020, 21:53

Теги

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