모든 UNIX 시스템에는 어떤 파일이 있습니까?

모든 UNIX 시스템에는 어떤 파일이 있습니까?

가상 머신에서 파일을 다운로드하는 스크립트를 실행하려고 하는데 수신되는 가상 머신을 지정할 수 없습니다. 그러나 나는 들어오는 가상 머신의 상태에 관계없이 다운로드가 성공하고 그것이 unix/linux 시스템이라는 것을 알고 싶습니다.

제 질문은 모든 UNIX/Linux 시스템에 존재하는 것으로 보장되는 다운로드에 사용할 수 있는 특정 파일이 있습니까?입니다.

감사해요!

답변1

거의 유일한 것보장하다존재하는 것은 루트 디렉터리 자체입니다. 하나 있다많은표준은거의 보편적잠깐만 요 . 하지만 지루한 시스템 엔지니어가 , , 등 /etc의 Linux 버전을 출시하는 것은 전적으로 가능합니다 . 그러한 시스템에서는 무엇이든 가능합니다./andsoforth/bin/cupboard/usr/luser

답변2

/etc/passwd일반적으로 사용되는 것은안전전문가들이 개념 증명/플래그 캡처 연습으로 사용했으며 그럴 만한 이유가 있습니다. 이 파일은 모든 UNIX 계열 시스템에 존재합니다.

그러나 이것이 passwd기본 액세스 데이터베이스가 아니라는 점은 주목할 가치가 있습니다.기타 데이터베이스예를 들어 LDAP도 중요한 역할을 합니다.

답변3

POSIXly, 약속된 유일한 것은("적합성 시스템에 존재해야 함")은 /, /dev, /tmp/dev/null이지만 모두 쓰기 가능하거나 읽을 수 있는 것은 아닙니다 /dev/tty./dev/console

파일을 복사하는 데 무엇을 사용하는지에 따라 이 모든 것이 실제로 도움이 되지 않거나 복사를 시도할 수 있습니다 /dev/null. scp복사하려고 하면 오류가 발생할 것 같지만 다음과 같은 것을 사용하면 됩니다. 단지 데이터를 읽고 특수 파일을 무시합니다. 예를 들어 cp /dev/null ., 당신은 결국 길이가 0인 일반 파일을 성공적으로 복사하게 될 것입니다.

하지만 Copy it을 사용하여 장치 노드의 내용을 복사하려고 하면 아마도 허가 없이 로컬 시스템에 생성할 수 없을 것이며 장치 번호가 동일하다는 보장도 없을 것 같습니다. 시스템 간에 복제할 수 있으면 결과적으로 로컬 시스템에서 완전히 다른 것을 의미하는 장치 노드가 될 수 있습니다.

표준 유틸리티는 에 있어야 하므로 원격으로 해결할 수 있다면 또는 PATH등 나열된 일부 디렉토리에서 찾을 수 있습니다 (심볼릭 링크일 수도 있음). 표준 호환 시스템에서도 이를 찾을 수 있어야 하지만 Linux에서는 외부 유틸리티로 거의 사용되지 않기 때문에 이를 갖지 않는 경향이 있습니다.shlscd

실제로는 많은 시스템에서 /bin/ls또는 를 찾을 수 있습니다 /bin/sh(여전히 심볼릭 링크일 수도 있음). 가장 심오하지는 않을 수도 있지만, 이러한 문제를 다루고 있다면 아마도 알게 될 것입니다.

답변4

내 경험에 따르면:

  • /dev/stdout, 때로는 이것이 심볼릭 링크이기 때문에 /dev/null더 나을 수도 있지만 둘 다 일반 파일은 아닙니다.
  • /etc/hosts아마도 네트워크로 연결된 모든 UNIX 시스템에 /etc/resolv.conf필요할 것입니다.
  • /bin/sh그럴 /bin/init가능성이 높지만 일부 임베디드 Linux 시스템이나 Linux 기반 장치 및 NAS 상자에는 이들 중 하나가 다른 위치에 있거나 /bin/busybox파일이 아닌 심볼릭 링크(예: )가 /etc/inittab있을 수 있습니다 . 존재하고 일반 파일이어야 함
  • /etc/issue/etc/profile누구나 쉘에 로그인할 수 있는 모든 곳에 존재하는 것으로 보입니다 .

관련 정보