'아무도'사용자의 목적은 무엇입니까?


93

모든 인간 사용자 목록을 읽은 후 Ubuntu 시스템에 'nobody'라는 사용자 계정이 있음을 알았습니다.

또한 다음 명령과 암호를 사용하여 터미널 에서이 계정에 로그인 할 수 있음을 알았습니다.

sudo su nobody

아무도

전혀 신경 쓰지 않지만이 사용자의 목적이 무엇인지 알고 싶습니다. 기본적으로 Ubuntu를 새로 설치하거나 특정 패키지를 설치하여 작성합니까?


8
비밀번호를 사용하여 로그인 할 때 아무도 계정이 아닌 sudo 단계에 비밀번호를 사용하고 있으며 그 이유는 수퍼 유저가 비밀번호를 입력 할 필요없이 다른 사람에게 소송을 제기 할 수 있기 때문입니다. 누구의 쉘이 경우 / sbin / nologin으로, 당신은 여전히 심지어 수퍼 유저를 사용하여 (일명 루트)에 로그인 할 수 없을 것입니다 설정되어있는 경우 아래에 언급, 나는, 적어도 RH-파생 상품을 믿는

지금은 기본적으로 (18.04+?)입니다. sudo su nobody반환 이 계정은 현재 사용할 수 없습니다. 사용자의 쉘 nobody /usr/sbin/nologin ( getent passwd nobody) 로 설정되어 있기 때문 입니다.
Pablo A

@sarnold-당신이 암시하는 답변에 대한 내 의견을 참조하십시오. 소스를 추론하거나 인용하지 않기 때문에 다소 나쁜 대답입니다. 그것은 또한 내가 아무도 계정에 대해 알고 NFS의 작동 방식을 모든 카운터 간다 :와 root_squash이됩니다에 아무도에 뿌리를 매핑 원격 시스템. 이것은 이 답변
vidarlo

답변:


85

특별한 권한이 필요하지 않은 작업을 실행해야합니다. 일반적으로 취약한 서비스 (httpd 등)를 위해 예약되어 있으므로 해킹당하는 경우 나머지 시스템에 대한 피해는 최소화됩니다.

실제 사용자 로서 무언가를 실행하는 것과 반대로 , 서비스가 손상되면 (웹 서버는 때때로 임의 코드를 실행하기 위해 악용 될 수 있음), 해당 사용자로 실행되고 사용자가 가진 모든 것에 액세스 할 수 있습니다. 대부분의 경우 이것은 루트를 얻는 것만 큼 ​​나쁩니다 .

Ubuntu Wiki에서 nobody 사용자에 대해 조금 더 읽을 수 있습니다.

후속 조치에 응답하려면 다음을 수행하십시오.

왜이 계정에 액세스 할 수 su nobody없습니까?

sudo grep nobody /etc/shadow아무도 비밀번호가없고 su계정 비밀번호 가 없으면 비밀번호를 표시하지 않습니다 . 가장 깨끗한 방법은 sudo su nobody대신 하는 것입니다. 꽤 황량한 sh껍질에 당신을 남겨 둘 것입니다 .

이 계정을 사용하라는 지시가있을 때 특정 예를들 수 있습니까 ?

프로그램 작업에 권한이 필요하지 않은 경우 디스크 활동이 없을 때 가장 두드러집니다.

이것의 실제 예는 memcached(키-값 인 메모리 캐시 / 데이터베이스 / 것)이며, 컴퓨터와 nobody 계정으로 실행되는 서버에 있습니다. 왜? 권한이 필요하지 않고 파일에 대한 쓰기 권한이있는 계정을 제공하는 것은 불필요하게 위험합니다.


1) 내가이 계정에 액세스 할 수없는 이유 su nobody와 2) 이 계정을 사용하라는 지시가있을 때 특정 예 를들 수 있습니까?
Radu Rădeanu

@ RaduRădeanu 1) 암호가 설정되어 있지 않기 때문에 추측합니다 su. 일반 사용자는 대상 사용자의 암호를 제공해야합니다. 시도 sudo -isu nobody(암호를 필요로하지 것이다) 루트 쉘에서.
CVn

2
Network File System지도 root하기 nobody때문에 로컬 루트는 원격 루트 캔 등의 모든 액세스 할 수 없습니다.
Sylwester

1
@ RaduRădeanu 편집 기록을 확인하십시오. 원래 명령을 테스트 할 때 (이것이 아닌) 원래는 대시 (/ bin / sh) 셸로 끝나지 만 지금은 복제 할 수 없습니다. 원래 편집 내용이 훌륭했습니다. 누가 그것을 바꾸 었는가는 아니었다.
Oli

1
필자는 항상 nobodyNFS에서 linuxstandardbase 상태 로 실제로 / 주로 사용 한다고 생각했습니다 .
dgonzalez

29

많은 Unix 변형에서 "nobody"는 파일을 소유하지 않고 권한있는 그룹이 없으며 다른 모든 사용자가 가진 기능을 제외하고는 기능이없는 사용자 계정의 일반적인 이름입니다.

데몬을 제어하지 않은 악의적 인 사용자가 수행 할 수있는 피해를 제한하기 위해 데몬을 아무도, 특히 서버로 실행하지 않는 것이 일반적입니다. 그러나 이와 같이 둘 이상의 데몬을 실행하면이 기법의 유용성이 줄어 듭니다. 하나의 데몬을 제어하면 모든 데몬을 제어 할 수 있기 때문입니다. 그 이유는 아무도 소유 한 프로세스가 서로에게 신호를 보내고 서로 디버깅 할 수 없기 때문에 서로의 메모리를 읽거나 수정할 수 없기 때문입니다.

http://en.wikipedia.org/wiki/Nobody_(username) 에서 가져온 정보 입니다.


-1 : nobodyNFS 전용이며 시스템 관리자가 아닌 다른 서비스에서 사용해서는 안됩니다. 감사.
sarnold

22

nobody 사용자는 NFS 전용입니다.

위의 답변 nobody은 "일반적인"익명 / 게스트 스타일 사용자 아이디 라고 가정하기 때문에 다소 잘못되었습니다 .

UNIX / Linux 액세스 제어 모델에는 익명 / 게스트 스타일 사용자 ID가 존재하지 않으며 이는 잘못된 제안입니다.

  • " 일반적으로 데몬 실행하는 nobody그들을 제어를 얻은 악의적 인 사용자에 의해 수행 될 수있는 피해를 최소화하기 위해, 특히 서버를. "때문에 다음 그의 : " 그러나,이 기술의 유용성은보다 더 많은 경우에 감소 하나의 데몬은 다음과 같이 실행됩니다. 하나의 데몬을 제어하면 모든 데몬을 제어 할 수 있기 때문 입니다.
  • " 실제 사례는 memcached(키-값 인 메모리 캐시 / 데이터베이스 / 사물)입니다. 내 컴퓨터와 nobody계정으로 실행되는 서버에 있습니다. 이유는 무엇입니까? 파일에 대한 쓰기 권한이있는 계정은 불필요하게 위험 할 수 있습니다. "

nobody사용자 ID 65534와 사용자 이름이 생성되어 특정 목적을 위해 예약 만 그 목적을 위해 사용되어야했다 : NFS 트리 수출에서 "매핑되지 않은"사용자 및 사용자 ID에 대한 자리 표시 자.

즉, NFS 트리 내보내기에 사용자 / ID 매핑이 설정되어 있지 않으면 내보내기의 모든 파일이 소유 한 것으로 나타납니다 nobody. 이것의 목적은 가져 오기 시스템의 모든 사용자가 "다른"권한을 가지지 않는 한 해당 파일에 액세스하지 못하도록하기위한 것입니다 (제외 제외 root) nobody.

따라서 사용하는 아주 나쁜 생각 nobody에 대한 어떠한 목적은 누구에게도 액세스 할 수 없습니다합니다 파일의 사용자 이름 / 사용자 ID로하기 때문에, 다른 목적으로.

위키 항목도 매우 잘못되었습니다.

UNIX / Linux 관례는 별도의 액세스 제어 도메인이 필요한 각 "응용 프로그램"또는 응용 프로그램 영역에 대해 새 계정을 만들고 NFS 외부에서 재사용하지 않는 것nobody 입니다.


이 답변은 소스를 인용, 명시 적으로 다른 답변의 여러 모순되지 않습니다 소스를 인용. 현재 현상금이 대답하는 경우는, 특히 좋은 표시 해야 약간의 소스를 인용, 또는 목록에서 몇 가지 추론이있다.
vidarlo


@ mook765 그 부분은 괜찮습니다. 그러나 NFS에 관한 단락은 그다지 중요하지 않습니다. 예를 들어 root_squashon root이있는 사용자에 매핑 nobody되므로 소유자 nobody가있는 파일은 전혀 의미가 없습니다. 또한 파일 권한이 UNIX의 소유권과 분리되어 있기 때문에 아무도 소유하지 않은 파일은 누구에게도 액세스 할 수 없다는 의미입니다. 나는이 질문에 모든 그것의 요소 : 나에게 거의 또는 전혀 의미가 단지 잘못된 것을 말하는 게 아니에요
vidarlo

1
@vidarlo,이 답변은 파일을 소유하도록 설정해야한다고 제안하지 않습니다 nobody. 그것은 nobody권한을 매핑 할 때 NFS가 사용 한다는 것을 알려주고 있으며, 그것이 나에게 가장 중요한 포인트입니다. 어떻게 NFS를 사용하는 것은 nobody이 사실보다 흥미 않습니다 사용합니다 nobody. 감사.
sarnold

@sarnold 내 의견으로는이 문제에 대한 대답은 여전히 ​​일반적인 것입니다. 사용자가 답을 읽고 man exports매우 혼란 스러울 수 있습니다.
vidarlo

17

nobody사용자는 설치 (우분투 데스크톱 13.04에 확인) 신선한에 기본적으로 만들어집니다.

많은 * nix 변형에서 nobody파일을 소유하지 않고 권한있는 그룹이 없으며 다른 모든 사용자가 가지고있는 기능을 제외하고 ( nobody사용자 및 그룹에 /etc/sudoers파일에 항목이없는) 사용자 계정의 일반적인 이름입니다. .

서버를 제어하는 ​​악의적 인 사용자가 수행 할 수있는 피해를 제한하기 위해 데몬nobody , 특히 서버 로 데몬 을 실행하는 것이 일반적 입니다. 그러나 이와 같이 둘 이상의 데몬을 실행하면이 기법의 유용성이 줄어 듭니다. 하나의 데몬을 제어하면 모든 데몬을 제어 할 수 있기 때문입니다. 그 이유는 nobody소유 한 프로세스가 서로에게 신호를 보내고 서로 디버그 할 수 있기 때문에 서로의 메모리를 읽거나 수정할 수 있기 때문입니다.

출처 : 위키 백과-아무도 (사용자 이름)


nobody지분을 보유한 프로세스는 서로에게 신호를 보내도 아무도 소유의 프로세스가 읽고 다른 아무도 소유 프로세스의 메모리를 쓸 수 있다는 것을 의미, 리눅스에서 서로 ptrace 할 수 있습니다.

파일 에서 nobody사용자 의 샘플 항목입니다 /etc/passwd.

alaa@aa-lu:~$ grep nobody /etc/passwd
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh

알다시피, nobody사용자는 /bin/sh로그인 쉘과 /nonexistent홈 디렉토리를 가지고 있습니다. 이름에서 알 수 있듯이 /nonexistent기본적으로 디렉토리는 존재하지 않습니다.

편집증 인 경우 nobody의 기본 셸을 설정 /usr/sbin/nologin하여 nobody사용자 의 ssh 로그인을 거부 할 수 있습니다 .

출처 : LinuxG.net-Linux 및 Unix Nobody 사용자


이 답변은 Wikipedia의 잘못된 단락이 제거되면 +1이 될 것입니다. 감사.
sarnold

3

아무도 특별한 사용자 및 그룹 계정이 아닙니다. 실제 사용자 이름 (및 그룹 이름)이며 프로세스 및 사용자가 사용할 수 있기 때문에 실제로 아무도 아닙니다 . 예를 들어, 일부 Apache 구성에는 웹 사이트 파일 및 디렉토리를 소유 한 사용자 / 그룹으로서 아무도 없습니다. 여러 프로세스가 NFS 디렉토리 및 웹 서버와 같은 nobody 사용자를 사용할 수있는 경우 문제가 발생합니다.


0

' nobody 사용자는 NFS 전용입니다. ' 대답. 현재 nobody바인드 마운트가있는 권한이없는 컨테이너에도 사용자가 사용됩니다.

systemd-nspawn, 특히 --bind mount 옵션에서 가져옵니다.

이 옵션을 --private-users와 함께 사용하면 결과 마운트 지점은 nobody 사용자가 소유합니다. 컨테이너에없는 관련 호스트 사용자 및 그룹이 마운트 및 해당 파일과 디렉토리를 계속 소유하고 있기 때문에 와일드 카드 UID 65534 (아무도) 아래에 표시되기 때문입니다. 그러한 바인드 마운트가 작성되면 --bind-ro =를 사용하여 읽기 전용으로 만드는 것이 좋습니다.

systemd-nspawn

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.