Diferentes salidas para `w`,` who`, `whoami` e` id`

9

En las plataformas de línea de comandos en línea, como por ejemplo la de Codecademy, cuando ejecuto

for cmd in w who whoami id
do
    echo $cmd
    $cmd
    echo =========================
    echo "             "
done

yo obtengo

w                              
00:52:54 up 8 days, 14:10,  0 users,  load average: 3.78, 2.98, 2.69      
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT       
=========================                            

who
=========================                                                 

whoami                          
ccuser                          
=========================                              
  
id
uid=1000(ccuser) gid=1000(ccuser) groups=1000(ccuser)     
=========================                   

Tenga en cuenta que solo whoamiy idsalida algo. Cuando ejecuto lo mismo en mi computadora, veo resultados similares para todos los comandos.

¿Por qué Codecademy no muestra al usuario para wy who? ¿Qué tienen de diferente estos comandos?

quién soy
fuente

Respuestas:

13
  • id informes
    • las credenciales actuales de su propio proceso; o
    • las credenciales de un usuario llamado, como se lee en la base de datos de cuenta del sistema .
  • whoami informa las credenciales actuales de su propio proceso.
  • whoe winforme la tabla de sesiones de inicio de sesión activo desde la base de datos de inicio de sesión .

BSD doco señala que whoamihace un subconjunto del trabajo idy que lo idvuelve obsoleto.

Un sistema no tiene que tener una tabla de sesiones de inicio de sesión activas. En los sistemas operativos Linux y en los BSD, si la tabla no se ha creado en bootstrap o se ha eliminado desde entonces, el sistema funcionará sin una. Además, iniciar y cerrar sesión no lo crea implícitamente en los sistemas operativos Linux.

Además, la tabla no necesita ser leída por usuarios sin privilegios y whoni el wcomando ni el comando informarán esto como un error.

Otras lecturas

JdeBP
fuente