Linux: counts de usuario deshabilitadas: ¿Existe un command de shell no root que puede mostrar si una count está deshabilitada o no?

¿Existe un command de shell no root que me puede indicar si la count de un usuario está deshabilitada o no?

Tenga en count que hago una distinción entre LOCKING y DISABLED:

  • BLOQUEO es donde usted prepend ! o * o !! al campo de contraseña del file / etc / passwd o / etc / shadow. El locking de passwords se puede hacer (en un indicador de shell) mediante la password -l username (como root) para bloquear la count de nombre de usuario y el uso de la opción -u lo desbloqueará.
  • DESACTIVAR una count se realiza estableciendo el time de caducidad de la count de usuario en algún momento del pasado. Esto se puede hacer con chage -E 0 username , que establece la date de vencimiento a 0 días después de la época de Unix. Si se establece en -1 se inhabilitará el uso de la date de caducidad.

Para mi situación, el uso del locking no es suficiente, ya que un usuario todavía puede iniciar session, por ejemplo, utilizando tokens de authentication ssh, y los processs bajo ese usuario pueden generar otros processs. Por lo tanto, tenemos counts que están habilitadas o deshabilitadas, no sólo bloqueadas. Lo que estoy buscando es una forma de comprobar el estado de habilitar / deshabilitar una count a través de un command de shell, para su uso en un process personalizado de Java. El process de Java puede analizar la salida o hacer uso del código de salida, y puede ejecutar instrucciones complicadas tales como aquellas que incluyen tuberías entre commands.

Está diseñado para su uso en un sistema Red Hat Enterprise 5.4.

Esta pregunta se preguntó anteriormente en SuperUser.

4 Solutions collect form web for “Linux: counts de usuario deshabilitadas: ¿Existe un command de shell no root que puede mostrar si una count está deshabilitada o no?”

De comentario:
Esto no es posible como usted describe, porque: la información se describe sólo en la sombra, y la sombra sólo puede ser leído por la raíz. Cualquier progtwig que requiera hashes de contraseña o expiración de count debe ser SUID (si está utilizando counts locales almacenadas en sombra, como dice.)

Información adicional:
Utilicé inicialmente chage (1) como fuente.

Nota

El progtwig chage requiere que esté disponible un file de contraseña de sombra.

Ahora he actualizado mi información para ser más preciso, confirmando las cosas.

Primero de todo, revisé el código fuente de chage sólo para estar seguro. Parece que realmente necesita tener acceso al file sombra y almacenar la información en ninguna otra parte. En segundo lugar, puede utilizar PAM para permitir el uso de las características de raíz de chage. (check_perms en chage.c: 523)

Y como otros han dicho, cualquier otra cosa usada como backend para shadow (es decir, cualquier cosa en nsswitch.conf para ello, excepto los files y db) tiene sus propias maneras de trabajar con las cosas.

En resumen: cuando se utilizan files como backend, la información de envejecimiento de la contraseña se almacena de hecho allí y sólo allí. Si todavía desea utilizar los files backend usted debe escribir un progtwig y hacer SUID, ya que el sistema es todo o nada. Puede consultar sólo a su usuario, o puede consultar y configurar todo el mundo. En el lado positivo, escribir algo en C para hacer lo que quieres sería sólo unas pocas líneas de código. Básicamente puede copyr tres funciones fuera de la fuente de chage y agregar una nueva main.

No estoy seguro si hay una manera fácil de comprobar. Dudo como un usuario regular que tendría r acceso al file passwd (No la sombra uno), por lo que realmente no podía fácilmente sed / awk / grep para el! campo.

Lo que podría hacer es diseñar un script muy específico, hacerlo no rwx a no root y luego crear una input sudo específicamente para ese command. Incluso podría hacerlo sin contraseña. Idealmente, no estaría aceptando ninguna input por lo que también sería más difícil "romper" el guión. Supongo que se networkinguce a lo paranoico que quieres ser / quién va a tener acceso a ella.

No hay ningún command no root, sino un command root. Es passwd -S <username> . Que hace la salida de lo siguiente:

Mostrar información del estado de la count. La información de estado consta de 7 campos. El primer campo es el nombre de inicio de session del usuario. El segundo campo indica si la count de usuario tiene una contraseña bloqueada (L), no tiene contraseña (NP) o tiene una contraseña utilizable (P). El tercer campo da la date del último cambio de contraseña. Los siguientes cuatro campos son la edad mínima, la edad máxima, el período de advertencia y el período de inactividad de la contraseña. Estas edades se expresan en días.

Así que lo mejor sería llamar a un guión como

 #!/bin/sh passwd -S $1 

y permitir que se llame con sudo y ninguna contraseña desde dentro del progtwig Java.

Tenga cuidado: El script anterior es vulnerable para la inyección de código, por lo que tiene que asegurarlo para su propósito.

Una forma sería mover la información de su count a LDAP o SQL. A continuación, utilice los modules PAM para integrarlos con su server. Su aplicación Java puede acceder fácilmente a LDAP o SQL directamente.

Para puntos de bonificación este enfoque es más escalable y manejable si tiene muchos serveres con la misma base de usuarios. / etc / passwd también comienza a sufrir en el performance si tiene miles de counts de usuario o más.

  • No se puede cambiar la ruta pnetworkingeterminada: Rhel 5.9
  • RHEL5 Instalación mínima
  • Puppet vs Chef, pro y contra de usuarios y casos de uso
  • Cambiar el tamaño de la partición de intercambio (RHEL 5.x)
  • Incorrecto MIME tipo - tirando de mi cabello hacia fuera
  • La versión limpia de RHEL5 de kickstart agrega IP público a / etc / hosts
  • ¿Puedo usar el repository yum de Oracle con RHEL y luego volver al yum de Redhat?
  • ¿Qué versión de RHEL estoy usando?
  • Construyendo nginx 1.0.4 en los problemas de Amazon y EC2 de micro - perl y python
  • ¿Cómo configuro Red Hat Enterprise Cluster y oracle 9 para dar soporte a la conmutación por error?
  • Errores del controlador LSI RAID en la importación de DB - ¿Cómo solucionar problemas?
  • Cómo chroot Apache en CentOS?
  • Navegador de paquetes RPM en línea oficial / buscar CentOS
  • El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.