Como listar todo o alias para todo usuário na minha caixa linux a partir do root [closed]

0

Eu tenho tentado verificar o alias que todo o usuário pode ter no meu sistema, estou usando o root. Existe algum comando que possa listá-los?

    
por Jorococo 20.10.2015 / 15:56

1 resposta

2

Isso não é realmente possível porque os aliases "existem" somente quando o usuário está logado. Se seus scripts de login .profile etc. definirem alguns aliases, eles os terão quando fizerem login pela primeira vez, mas também source outros scripts para definir mais aliases ou defini-los na linha de comando.

Você pode, no entanto, listar os aliases que cada usuário terá no momento em que fizerem login com algo parecido com isto:

#! /bin/bash

for user in $(getent passwd | cut -d: -f1) ; do
    uid=$(getent passwd "$user" | cut -d: -f3)
    if [ "$uid" -ge 1000 ] ; then
        ushell=$(getent passwd "$user" | cut -d: -f7)
        [ -z "$ushell" ] && ushell='/bin/sh'
        echo "aliases for $user:"
        if [[ "$ushell" =~ /s?bin/(true|false|sync|ftponly|nologin) ]] ; then
            :
        elif [[ "$ushell" =~ /s?bin/(t?csh|zsh|s?ash) ]] ; then
            su - "$user" $ushell -c 'alias'
        elif [[ "$ushell" =~ /s?bin/([bd]ash|m?ksh|sh) ]] ; then 
            su - "$user" $ushell -c 'alias -p'
        fi
        echo ; echo
    fi
done

Observe que isso pula todos os UIDs abaixo de 1000 - em sistemas debian, ids de usuários normais (ou seja, não-sistema) começam em 1000. Em alguns outros sistemas, eles começam em 500. ajuste para se adequar ao seu sistema.

É possível que alguns shells não listem aliases quando instruídos a executar alias sem um argumento. Todas as shells que testei (bash, dash, pdksh, mksh, tcsh, zsh) estavam bem, mas se você encontrar uma que não terá que lidar com isso com algo como if [ "$ushell" = "/bin/oddshell" ; then ... fi

    
por 20.10.2015 / 17:43

Tags