Ssh kann nicht auf einen bestimmten Benutzer umgeschaltet werden: su: Benutzer-ID kann nicht eingestellt werden: Ressource vorübergehend nicht verfügbar?

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

Ich vermute, dass dies durch das Benutzerlimit verursacht wird, aber es gibt keinen Unterschied beim Vergleich mit einem anderen Benutzer.

Hier sind ulimit -nfür 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

und dieses für 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

Die Anzahl der Prozesse, die ausgeführt werden von adtech:

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

Gibt es noch etwas zu überprüfen?


UPDATE Sa 21.07.09.21.26 IKT 2012:

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

Wie ich in der folgenden Bemerkung sagte, hatte mein Kollege den Prozess herausgefunden, der möglicherweise der Schuldige ist:

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

Durch das Beenden dieses Prozesses wird das Problem behoben, aber wir wissen immer noch nicht, welches Limit überschritten wurde.


UPDATE Sa 15.12. 00:56:13 ICT 2012:

Die Antwort von @ favadi ist richtig, aber ich aktualisiere hier, falls jemand diesen Thread von Google verwendet.

In der Protokolldatei stand:

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)
Quanten
quelle
Entschuldigung, wenn dies zu offensichtlich ist, aber gibt es eine Benutzer-ID 500 auf Ihrem System? Bezieht es sich auf einen Benutzernamen, der verwendet werden würde? Viel Glück.
Shellter
Klar, adtechBenutzer hat UID 500. Siehe mein aktualisiertes. Mein Kollege hatte herausgefunden, welcher Prozess schuld ist. Durch das Beenden dieses Prozesses wird das Problem behoben, aber wir wissen immer noch nicht, welches Limit überschritten wurde: Offene Dateien nicht, Anzahl der Prozesse nicht, möglicherweise Arbeitsspeicher oder sonstiges. Irgendwelche Gedanken?
Quanten
Versuchen Sie, strace -f -p an diesen Prozess anzuhängen und suchen Sie nach offensichtlich fehlgeschlagenen Systemaufrufen und dem, was sie zu tun versuchen ...
rackandboneman

Antworten:

12

Möglicherweise max user processes (-u) 1024ist der zu niedrig.

Denken Sie daran, dass Prozesse und Threads zusammen zählen. Mit können Sie ps -eLF | grep adtech | wc -lIhren aktuellen Wert anzeigen.

favadi
quelle
7
Genauer gesagt sollte es sein ps -eLF -U adtech | wc -l.
Quanten
2
Wenn Sie sich fragen, wo das eingestellt ist, schauen Sie in die Datei /etc/security/limits.d/90-nproc.conf (vorausgesetzt, Sie haben ein RH-System).
mricon
@ mricon checking /etc/security/limits.d/90-nproc.confkehrt /etc/security/limits.d/90-nproc.conf: No such file or directoryauf CentOS7 zurück
030
@Utrecht gut, du hättest ein "ls" in /etc/security/limits.d/ machen können und gemerkt, dass es auf EL-7 "20-nproc.conf" heißt, was wahrscheinlich schneller gewesen wäre, als es hier abzufragen.
mricon
2
@quanta, um genau zu sein, sollte es sein ps -LF -U adtech | wc -l. Bei Verwendung der -eOption erhalten Sie auch Prozesse anderer Benutzer.
Lambert
2

Suchen Sie im JVM-Protokoll nach Hinweisen, dass die Ressourcenbeschränkungen überschritten werden. Die Stapelgröße könnte das Problem sein, abhängig davon, wie viele Java-Threads der getötete Prozess ausgeführt hat.

Durch Durchsuchen Ihrer Fehlermeldung nach Fehlernachrichten nach pam_keyinit: Überprüfen Sie im Repository Ihres Herstellers, ob eine aktualisierte Version verfügbar ist.

Ramruma
quelle
+1. Ich habe die Lektion vergessen: Schauen Sie sich das Protokoll an, wenn Sie das Problem bemerken. Meine Frage wurde aktualisiert.
Quanten
0

Der Fehler wurde von gemeldet pam_keyinit. Da ich mit diesem Modul nicht vertraut bin, habe ich nach Dokumentation gesucht und diese Manpage gefunden . Anhand der Beschreibung frage ich mich, ob der Prozess, den Sie beendet haben, möglicherweise den erforderlichen Zugriff auf einige Dateien verhindert hat, die pam_keyinit ändern muss. Hoffentlich gibt Ihnen dies eine Richtung.

dsh
quelle
0

Dieses Problem kann auftreten, wenn das Prozesslimit des Benutzers erreicht ist. Das Prozesslimit kann durch Bearbeiten der /etc/security/limits.confDatei mit einem Benutzer mit Root-Berechtigung erhöht werden . Der zu überprüfende Eintrag sieht ungefähr so ​​aus:

*          hard     nproc         100

Sie müssen keine Dienste neu starten.

Santhosh Kamath
quelle
1
In meinem Fall hatte die Anhebung der harten Grenze keine unmittelbare Wirkung; Ich musste den weichen wechseln.
Nicola Musatti