특정 사용자로 ssh를 전환 할 수 없습니다. su : 사용자 ID를 설정할 수 없습니다 : 리소스를 일시적으로 사용할 수 없습니까?


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

이것은 사용자 당 제한으로 인한 것 같지만 다른 사용자와 비교할 때 차이가 없습니다.

여기 ulimit -n있습니다 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

그리고 이것은 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

다음에 의해 실행되는 프로세스 수 adtech:

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

다른 확인해야 할 것이 있습니까?


업데이트 토요일 7 월 21 일 09:21:26 ICT 2012 :

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

아래 의견에서 말했듯이, 동료는 범인 일 수있는 프로세스를 발견했습니다.

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

이 프로세스를 종료하면 문제가 해결되지만 여전히 어느 한계가 초과되었는지 알 수 없습니다.


업데이트 12 월 15 일 토요일 00:56:13 ICT 2012 :

@ favadi 의 대답은 옳지 만 누군가 Google 이이 스레드 인 경우 여기에서 업데이트합니다.

로그 파일은 다음과 같이 말했습니다.

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)

이것이 너무 명백한 경우 사과하지만 시스템에 userID 500이 있습니까? 사용하는 userName과 관련이 있습니까? 행운을 빕니다.
shellter

물론, adtech사용자는 UID 500을 가지고 있습니다. 내 업데이트를 참조하십시오. 동료가 범인 인 프로세스를 알게되었습니다. 이 프로세스를 종료하면 문제가 사라지지만 여전히 어느 한계가 초과되었는지 알 수 없습니다. 열린 파일이 없거나 프로세스 수, 메모리 또는 기타 요소가 열려 있지 않습니다. 이견있는 사람?
quanta

strace -f -p를 해당 프로세스에 연결하고 명백히 실패한 syscall과 그들이하려는 작업을
찾으십시오

답변:


12

max user processes (-u) 1024가 너무 낮을 수 있습니다 .

프로세스와 스레드는 함께 계산됩니다. ps -eLF | grep adtech | wc -l현재 값을 표시 하는 데 사용할 수 있습니다 .


7
보다 정확하게는이어야합니다 ps -eLF -U adtech | wc -l.
quanta

2
어디에 설정되어 있는지 궁금하다면 /etc/security/limits.d/90-nproc.conf를 살펴보십시오 (RH 시스템에 있다고 가정).
mricon

확인 @mricon /etc/security/limits.d/90-nproc.conf반환 /etc/security/limits.d/90-nproc.conf: No such file or directoryCentOS7에
030

@ 위트레흐트 (Utrecht)는 /etc/security/limits.d/에서 "ls"를 수행 할 수 있었으며 EL-7에서는 "20-nproc.conf"라는 것을 알았는데 여기에서 묻는 것보다 빠를 것입니다.
mricon

2
@quanta, 더 정확하게 말하면 ps -LF -U adtech | wc -l. 이 -e옵션을 사용하면 다른 사용자 프로세스도 얻을 수 있습니다.
Lambert

2

jvm 로그에서 자원 제한에 도달 한 증거를 찾으십시오. 종료 된 프로세스가 실행중인 Java 스레드 수에 따라 스택 크기가 문제가 될 수 있습니다.

오류 메시지를 검색하면 pam_keyinit에 대한 버그 보고서가 있습니다. 공급 업체의 저장소에 업데이트 된 버전이 있는지 확인하십시오.


+1. 교훈을 잊었습니다. 문제가 생길 때 로그를 살펴보십시오. 내 질문을 업데이트했습니다.
quanta

0

에 의해 오류가보고되었습니다 pam_keyinit. 이 모듈에 익숙하지 않기 때문에 설명서를 검색하고이 맨 페이지를 찾았습니다 . 설명에 따르면, 당신이 죽인 프로세스가 pam_keyinit가 수정 해야하는 일부 파일에 대한 필요한 액세스를 방해했는지 궁금합니다. 희망적으로 이것은 당신에게 어떤 방향을 제시합니다.


0

이 문제는 사용자의 process-run-limit에 도달 한 경우 발생할 수 있습니다. /etc/security/limits.conf루트 권한이있는 사용자가있는 파일을 편집하여 프로세스 한계를 늘릴 수 있습니다 . 확인할 항목은 다음과 유사합니다.

*          hard     nproc         100

서비스를 다시 시작할 필요가 없습니다.


1
필자의 경우 하드 한계를 높이는 것은 즉각적인 효과가 없었습니다. 나는 부드러운 것을 바꿔야했다.
Nicola Musatti
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.