Impossible de basculer, ssh vers un utilisateur spécifique: su: impossible de définir l'ID utilisateur: ressource temporairement indisponible?

15

/var/log/secure:

su: pam_keyinit(su-l:session): Unable to change UID to 500 temporarily
su: pam_keyinit(su-l:session): Unable to change UID to 500 temporarily
su: pam_unix(su-l:session): session opened for user adtech by root(uid=0)
su: pam_unix(su-l:session): session closed for user adtech

Je suppose que cela est dû à la limite par utilisateur, mais il n'y a pas de différence lors de la comparaison avec un autre utilisateur.

Voici ulimit -npour adtech:

[adtech@hmaster87 root]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 192025
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 655360
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

et celui-ci pour quanta:

[quanta@hmaster87 ~]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 192025
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 655360
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

le nombre de processus exécutés par adtech:

[root@hmaster87 ~]# ps -U adtech | wc -l
25

Autre chose à vérifier?


MISE À JOUR Sam 21 juil 09:21:26 ICT 2012:

# getent passwd adtech
adtech:x:500:502::/home/adtech:/bin/bash

Comme je l'ai dit dans le commentaire ci-dessous, mon collègue avait découvert le processus qui était peut-être le coupable:

adtech 12901 1 0 08:58 ? 00:00:00 /home/adtech/nexus/bin/../bin/jsw/linux-x86-64/wrapper /home/adtech/nexus/bin/../bin/jsw/conf/wrapper.conf wrapper.syslog.ident=nexus wrapper.pidfile=/home/adtech/nexus/bin/../bin/jsw/linux-x86-64/nexus.pid wrapper.daemonize=TRUE

adtech 12903 12901 1 08:58 ? 00:00:24 java -Dsun.net.inetaddr.ttl=3600 -DbundleBasedir=. -Djava.io.tmpdir=./tmp -DjettyContext=nexus.properties -DjettyContextIncludeKeys=bundleBasedir -DjettyPlexusCompatibility=true -Djava.library.path=bin/jsw/lib -classpath bin/jsw/lib/wrapper-3.2.3.jar:./lib/plexus-classworlds-2.4.jar:./conf/ -Dwrapper.key=ejxHaBJASiFkAB8w -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=12901 -Dwrapper.version=3.2.3 -Dwrapper.native_library=wrapper -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 org.codehaus.plexus.classworlds.launcher.Launcher ./conf/jetty.xml

En tuant ce processus, le problème disparaît, mais nous ne savons toujours pas quelle limite a été dépassée.


MISE À JOUR sam 15 déc 00:56:13 ICT 2012:

La réponse de @ favadi est juste, mais je mets à jour ici au cas où quelqu'un google ce fil.

Le fichier journal indiquait que:

jvm 1    | Server daemon died!
jvm 1    | java.lang.OutOfMemoryError: unable to create new native thread
jvm 1    |      at java.lang.Thread.start0(Native Method)
jvm 1    |      at java.lang.Thread.start(Thread.java:640)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperManager.privilegedStopInner(WrapperManager.java:3152)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperManager.handleSocket(WrapperManager.java:3797)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperManager.run(WrapperManager.java:4084)
jvm 1    |      at java.lang.Thread.run(Thread.java:662)
quanta
la source
Toutes mes excuses si cela est trop évident, mais existe-t-il un ID utilisateur 500 sur votre système? Est-ce lié à un nom d'utilisateur qui utiliserait? Bonne chance.
shellter
Bien sûr, l' adtechutilisateur a l'UID 500. Voir ma mise à jour. Mon collègue avait découvert le processus qui est coupable. En tuant ce processus, le problème disparaît, mais nous ne savons toujours pas quelle limite a été dépassée: les fichiers ouverts ne le font pas, le nombre de processus ne le fait pas, peut-être la mémoire ou autre chose. Des pensées?
quanta
Essayez d'attacher strace -f -p à ce processus et recherchez les appels système qui échouent manifestement et ce qu'ils essaient de faire ...
rackandboneman

Réponses:

12

Il est possible que la valeur max user processes (-u) 1024soit trop basse.

N'oubliez pas que les processus et les threads comptent ensemble. Vous pouvez utiliser ps -eLF | grep adtech | wc -lpour afficher votre valeur actuelle.

favadi
la source
7
Plus précisément, cela devrait l'être ps -eLF -U adtech | wc -l.
quanta
2
Si vous vous demandez où cela est défini, regardez dans /etc/security/limits.d/90-nproc.conf (en supposant que vous êtes sur un système RH).
mricon
@mricon vérifie les /etc/security/limits.d/90-nproc.confretours /etc/security/limits.d/90-nproc.conf: No such file or directorysur CentOS7
030
@Utrecht bien, vous auriez pu faire un "ls" dans /etc/security/limits.d/ et remarqué que sur EL-7 il s'appelle "20-nproc.conf", ce qui aurait probablement été plus rapide que de le demander ici.
mricon
2
@quanta, pour être plus précis, ça devrait l'être ps -LF -U adtech | wc -l. Lorsque vous utilisez l' -eoption, vous obtenez également d'autres processus utilisateurs.
Lambert
2

Recherchez dans le journal jvm la preuve qu'il atteint des limites de ressources. La taille de la pile peut être le problème, selon le nombre de threads java exécutés par le processus tué.

La recherche sur votre message d'erreur trouve des rapports de bogues pour pam_keyinit: vérifiez auprès du référentiel de votre fournisseur si une version mise à jour est disponible.

ramruma
la source
+1. J'ai oublié la leçon: jetez un œil au journal lorsque vous rencontrez le problème. Mis à jour ma question.
quanta
0

L'erreur a été signalée par pam_keyinit. Comme je ne connais pas ce module, j'ai recherché de la documentation et trouvé cette page de manuel . Sur la base de la description, je me demande si le processus que vous avez tué a peut-être empêché l'accès nécessaire à certains fichiers que pam_keyinit doit modifier? J'espère que cela vous donne une certaine direction.

dsh
la source
0

Ce problème peut se produire si la limite d'exécution de processus de l'utilisateur est atteinte. La limite de processus peut être augmentée en éditant: /etc/security/limits.conffichier avec un utilisateur ayant l'autorisation root. L'entrée à vérifier sera similaire à:

*          hard     nproc         100

Pas besoin de redémarrer les services.

Santhosh Kamath
la source
1
Dans mon cas, relever la limite stricte n'a pas eu d'effet immédiat; J'ai dû changer le doux.
Nicola Musatti