개발 환경의 /home 폴더에 대한 표준 설정은 noexec라고 들었습니다. 누구든지 참고 자료를 제공할 수 있습니까?
/home에서 noexec를 사용하면 IDE 및 편집기와 같은 애플리케이션이 예상대로 작동하지 않습니다.
답변1
noexec
매우 제한된 환경을 제외하고는 직접적인 보안 대책으로는 쓸모가 없습니다. 파일 시스템에서 파일을 실행하려면 다음을 noexec
수행할 수 있습니다.
/lib/ld.so myfile
동적으로 링크된 실행 파일인 경우 동적 링커(예:)를 사용하여 직접 실행하십시오./bin/sh myscript
스크립트인 경우 인터프리터(예:)를 사용하여 직접 실행하세요.cp myfile /tmp && /tmp/myfile
쓸 수 있는 파일 시스템이 있는 경우 실행 파일(예:)을 허용하는 다른 파일 시스템에 복사합니다 .
다른 사람이 귀하의 컴퓨터에서 프로그램을 실행하도록 허용하면 그 사람도 귀하의 컴퓨터에서 프로그램을 실행할 수 있습니다.개발자기계는 프로그램을 실행하기를 원합니다. 뿐만 아니라, 아무도 확인하지 않은 프로그램(5분 전에는 존재하지 않았기 때문에)을 실행하기를 원합니다.
noexec
약간 유용함수동적인보안 대책은 악성 코드가 파일을 다운로드하고 실행하는 것을 방지합니다. 물론 맬웨어는 이 문제를 쉽게 해결할 수 있지만 맬웨어 개발자가 이 점을 고려할 경우에만 가능합니다. 대부분의 맬웨어는 영향을 받지 않습니다. 특히 브라우저를 대상으로 하는 맬웨어는 브라우저의 컨텍스트에서만 실행되기 때문에 영향을 받지 않습니다. 따라서 드문 위협에 대해 약한 보호 기능을 제공합니다. 문제를 일으킬 가치가 없습니다.
따라서 거의 noexec
사용되지 않습니다 /home
. 개발자에게 이것은 정말 파괴적인 일입니다. 예를 들어, 많은 도서관 관리 프로그램이 중단됩니다. 그래서 이것은 나쁜 생각입니다.
사용자가 몇 가지 특정 프로그램만 실행하면 되기 때문에 더욱 잠겨 있는 시스템에서도 이는 전혀 일반적인 설정이 아닙니다.
답변2
noexec
이것이 개발 환경의 /home 폴더에 대한 표준 설정이라고 들었습니다 .
다른 곳에서는 본 적 없는 관점이다.
아니요, 이에 대한 "표준"은 없습니다. 표준은 표준화를 의미합니다. ISO 표준이나 RFC에서 /home
.
실제로 대부분의 Linux 배포판은 /home
별도의 파티션으로 할당도 제공하지 않으며, 그렇지 않은 경우 특정 설치 옵션을 사용할 수 없습니다.
답변3
"이러한 라이브러리는 홈 디렉터리가 아닌 다른 드라이브/폴더에서 개발 및 실행/테스트됩니다."
그러면 그렇게 해. 그것은 단지 어리 석고 나쁜 것입니다.
noexec의 목적은 원래 suid 프로그램이 작동하지 않도록 신뢰할 수 없는 미디어에 설정하는 것이었습니다. 같은 이유로 nosuid와 nodev도 얻습니다.
그러나 금세기에 사람들은 noexec를 의도하지 않은 목적으로 추진하고 있습니다. 사용자가 외부 바이너리(설치한 바이너리 포함)를 실행하는 것을 불가능하게 만드는 것이 절실합니다. 모든 것을 해시할 만큼 충분한 항목이 있기 때문에 이는 일반 시스템에서는 의미가 없습니다 /usr/bin
(첫눈에 bochs
, dd
, ex
, gdb
, , hexedit
, , m4
, , 또는 등의 정상적인 항목이 있는 경우 tar
제외) . 자체 바이너리 코드를 실행할 필요는 없지만 휴대폰과 같은 장치에 대한 실질적인 보안 방어 수단이 될 수 있습니다.lua
node
perl
python
그러나 사용자가 noexec 없이 파일 시스템에 대한 쓰기 액세스 권한을 갖고 있으면 전혀 작동하지 않습니다. 관리자들은 업무를 수행하는 과정에서 무능함을 보이고 일을 망가뜨리면서 패전을 치르고 있습니다.
아마도 어딘가에 "승인되지 않은 소프트웨어 실행 방지" 확인란이 있을 것입니다. 정의에 따르면 개발자는 승인되지 않은 소프트웨어(개발 중인 새로운 변경 사항)를 실행하므로 승인되지 않은 소프트웨어를 실행할 수 있으며 구성 변경으로 이를 취소할 수 없습니다.