
특정 소프트웨어를 설치하고 싶었습니다. 패키지에는 일부 쉘 스크립팅 파일을 포함하여 많은 파일이 있습니다. 처음에는 일부 파일을 선택한 다음 실행 가능하게 만들어야 했습니다.
chmod 777 shellscr1
그러나 나는 실행 가능하게 만들어야 할 그러한 파일이 많다는 것을 깨달았습니다. 그래서 지름길로 다음과 같이 했습니다.
chmod 777 *
이제 모든 파일이 실행 가능해졌습니다.
이 작업을 수행하면 보안과는 별개로 심각한 결과가 발생합니까?
답변1
프로그램에 따라 부정적인 영향이 없거나 소프트웨어를 사용할 수 없게 될 수도 있습니다.
예를 들어, ~/.ssh 디렉토리의 권한을 변경하고 다른 시스템에 SSH로 연결하려고 할 때 어떤 오류가 발생하는지 확인하세요.
일부 프로그램은 특정 사용자로 구성 파일에 액세스합니다. 777 권한이 있으면 누구나 파일을 덮어쓸 수 있습니다.그들을파일 소유자.
답변2
다른 사람들이 지적했듯이 파일이 전 세계적으로 쓰기 가능해야 하는 이유는 없습니다(적어도 질문에는 제시되지 않음). chmod 755 *
또는 같은 것으로 chmod +x *
충분합니다.
그러나 나는 대답을 더욱 좁혀서 당신에게 대답을 줄 것입니다정확히당신이 요구하는 것. 쉘 스크립트는 항상 다음으로 시작될 것으로 예상됩니다.오두막~와 같은
#!/usr/bin/env bash
따라서 현재 디렉터리에서 해당 문자로 시작하는 모든 파일을 검색 #!/
하고 해당 파일을 실행 가능하게 만드는 코드 조각이 있습니다. 즉, 이 명령은 쉘 스크립트처럼 보이는 파일만 실행 파일로 표시합니다.
for file in *; do [ "$(head -c 3 "$file")" = '#!/' ] && chmod +x "$file"; done;
답변3
보안 외에 심각한 결과는 없습니다. (물론 논리적으로 말하자면)
답변4
처음에는 일부 파일을 선택한 다음 실행 가능하게 만들어야 했습니다.
chmod 777 shellscr1
실행 가능하게 만드는 것이 의미하는 것은 아닙니다.777, 그 뜻은755. 보안과 관련된 명백한 이유로 최소한 이를 변경할 수 있습니다.
쉘 스크립트를 실행 가능하게 만들면 때때로 부작용이 발생할 수 있습니다. 예를 들어, 귀하의 경우/bin/sh스크립트가 의도한 것과 다른 쉘을 가리키면 본질적으로 사용할 수 없게 될 수 있습니다. 훌륭한 프로그래머라면 이를 방지하기 위한 조치를 취했을 것이며 권한을 변경함으로써 그의 노력이 무효화되었을 수도 있습니다.
그러나 반복합니다. 이것은 /bin/sh가 비표준 쉘을 가리키는 경우에만 적용됩니다.