파일 이름의 줄 바꿈


24

나는 방어적인 1 쉘 스크립팅이 신중하고 장기적으로 더 지속 가능 하다는 전제를 이해하고 동의합니다 .

여기에서 텍스트 처리 질문에 대한 많은 답변은 정통 파일 이름에 대한 답변 우발성을 바탕으로이 원칙을 따릅니다. 공백, 대시 및 줄 바꿈이 포함될 수 있습니다.

파일 이름에 줄 바꿈이 얼마나 널리 퍼져 있습니까? 구체적으로 :

  • 어떤 응용 프로그램도 기본적으로 줄 바꿈이 포함 된 파일 이름을 작성합니까?
  • 그러한 파일 이름을 만드는 것이 바람직한 상황이 있습니까?
  • 아니면 주로 사용자 오류의 인스턴스입니까?

[1] 가장 광범위한 시나리오 및 비상 사태에 대한 계획 및 관리 의미 ...

이 질문에 대한 (단순한) 의견에서 영감을 얻은 질문 .


4
짧은 대답은 줄 바꿈이있는 기괴한 파일 이름 및 / 또는 인쇄 할 수없는 문자는 결코 좋은 습관이 아니며, 합리적인 응용 프로그램은 파일을 만들지 않으며, 누군가가 그러한 이름을 올바르게 처리하지 않는 쉘 스크립트 또는 프로그램을 중단하려고하는 경우에만 실제로 볼 수 있습니다. 다른 사람들이 참고 문헌 등으로 더 자세한 답변을 제공하도록하겠습니다.
jw013

답변:


26

필자는 파일 이름을 조작하는 응용 프로그램을 테스트하기 위해 의도적으로 생성 된 것 이외의 개행 문자가있는 파일 이름을 본 적이 없습니다. 다음과 같은 이유로 줄 바꿈이 포함 된 파일 이름이 나타날 수 있습니다.

  • 일부 버그 또는 사용자 오류 (예 : 잘못된 복사 붙여 넣기)로 인해 의도하지 않은 파일 이름이 발생했습니다.
  • 일부 파일 시스템 손상은 파일 이름에 영향을 미쳤습니다.
  • 누군가가 보안 허점을 악용하기 위해 의도적으로 "이상한"파일 이름을 만들었습니다. 여기서 응용 프로그램은 전달 된 파일 이름보다 파일 이름을 더 신뢰합니다.

POSIX는 파일 이름 을“파일 이름을 지정하는 데 사용되는 1에서 {NAME_MAX} 바이트로 구성된 이름으로 정의 합니다. 이름을 구성하는 문자는 슬래시 문자와 널 바이트를 제외한 모든 문자 값 세트에서 선택할 수 있습니다. 파일 이름은 점과 점 점 특별한 의미를 가지고있다. 유일한 (이상한 "파일 이름을"모든 파일 시스템이 받아 들일 것이라는 보장이 없다 " 보장 된 문자는 ASCII 문자, 숫자, 마침표, 하이픈 및 밑줄 , 즉 A-Z, a-z, 0-9._-하이픈은, 첫 번째 위치에서 금지됨), 현대 유니스의 대부분의 기본 파일 시스템은 그렇지 않습니다.


그래서 spaces파일 이름에 호환성을 보장 할 수 없습니다? 마지막 세 문자가임을 명확히하면 도움이 period, underscore, and hyphen됩니다. 밑줄이있는 링크를 사용하면 말하기가 어렵습니다.
toxalot

4
@toxalot 아니요, 공간은 이식 가능하거나 ,(RCS에서 사용), :(X.org에서 사용), ~(백업 파일의 많은 프로그램에서 사용 ) 보장되지 않습니다 . 그러나 거의 모든 최신 시스템에서 지원됩니다.
Gilles 'SO- 악의를 멈춰라'

22

논문을 쓸 때 종종 여러 출처에서 PDF 파일의 서지를 수집합니다. 이들 모두가 올바른 메타 데이터를 포함하고있는 것은 아니며, 때때로 PDF 뷰어에서 파일 이름으로 논문 제목을 복사하여 붙여 넣기합니다. 이로 인해 파일 이름에 줄 바꿈이 종종 발생하지만 사용한 도구에는 문제가 없었습니다.

IMHO 표준으로 코딩하는 것에 대해 '방어 적'은 없습니다. 파일 이름에 줄 바꿈이 허용된다는 표준입니다. 스크립트가 표준에서 허용 된 모든 파일 이름을 처리하지 않으면 스크립트가 손상된 것입니다.


2
실제 사례에 감사드립니다. 그것은 표준에 대한 당신의 요점을 매우 설득력있게 강조합니다 ...
jasonwryan

6
"스크립트에서 표준에 허용 된 모든 파일 이름을 처리하지 않으면 스크립트가 손상됩니다 "(강조 추가)
jw013

3
다음은 파일 이름에 허용되는 문자를 변경 해야하는 이유에 대한 한 사람의 주장이며 개인적으로 그에게 동의합니다.
Chris Magnuson

⁺¹, 나는 똑같은 이유로이 게시물을 발견했습니다! 개행을 공백으로 변환하는 명령을 작성하는 방법을 찾으려고 노력했습니다.
Hi-Angel

2

NORMAL 사용자가 파일 이름에 줄 바꿈을 사용하는 것을 본 적이 없습니다. 주요 목적은 (1) 공격자가 시스템을 쉽게 파괴 할 수있게하고 (2) 안전한 프로그램을 작성하기 어렵게 만드는 것입니다. 따라서 공격에 저항하는 프로그램을 원할 경우 준비해야합니다.

"쉘의 파일 이름 및 경로 이름 : 올바르게 수행하는 방법 " 은이를 올바르게 처리하는 방법을 보여줍니다.


나는 일반 사용자이고 파일 이름에 줄 바꿈이 있습니다. @sml의 답변에 언급 된 시나리오는 나에게 두 번 이상 발생했습니다. 흥미로운 점은 파일 이름의 개행을 "시스템을 파괴"하는 데 어떻게 사용할 수 있습니까? 그것을 설명하는 자료가 있습니까?
Joseph R.

@JosephR. 시스템을 손상시키는 방법은 생각할 수 없지만 새로운 라인을 처리하지 않고 대신 충돌하는 응용 프로그램의 DOS로 사용할 수 있습니다.
strugee
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.