그래서 나는했다 chmod -x chmod
. 이 문제를 어떻게 해결할 수 있습니까? chmod에 실행 권한을 다시 부여하려면 어떻게해야합니까?
유닉스 및 리눅스 SE에 대한 질문 도 참조하십시오 .
—
unor
그래서 나는했다 chmod -x chmod
. 이 문제를 어떻게 해결할 수 있습니까? chmod에 실행 권한을 다시 부여하려면 어떻게해야합니까?
답변:
/lib64/ld-linux-x86-64.so.2
대신 사용해야 합니다. ldd /bin/chmod
실행할 링커를 정확하게 나열해야합니다.
man ld-linux.so
: "ld.so [및 ld-linux.so]는 프로그램에 필요한 공유 라이브러리를로드하고 프로그램 실행 준비를 한 다음 실행합니다." ( ld.so
위한 a.out
포맷 및 실행 ld-linux.so
ELF 포맷이다.)
ld-linux.so
일종의 실행 가능 / 라이브러리 하이브리드, 정적으로 정렬 된 정렬, 사용자 공간에서 실행되며 동적으로 연결된 실행 파일과 모든 종속 항목을로드 한 다음 실행합니다.
이는 대상 파일을 복사 할 때 소스 파일이 아닌 대상 파일의 권한이 유지된다는 사실에 의존합니다. 우리는 다음의 권한을 "차용"하고 있습니다 ls
:
cp /bin/ls /tmp/chmod.tmp
cp /bin/chmod /tmp/chmod.tmp
mv /tmp/chmod.tmp /bin/chmod
cp
-p 플래그를 설정해야 한다고 생각합니다
cp
실행 파일을 exe 한 후 cat
내용을 chmod
임시 파일 에 넣었습니다.
이것은 이상하다. 며칠 전에 누군가의 트윗을 통해 이와 같은 것을 보았다 ...
나는 이것이 실제 질문이 아니라고 생각합니다 : http://www.slideshare.net/cog/chmod-x-chmod
새로운 chmod를 생성하고 원본에 사용하십시오
umask 000
cat chmod > ~/my-chmod
~/my-chmod a+x chmod
(umask 000;gcc -o foo foo.c)
생성 함 foo
). 그러나 많은 (대부분의) 쉘은 리디렉션을 위해 파일을 열거 나 만들 때 0666을 전달 하므로이 답변은 많은 쉘에서 작동하지 않습니다.
chmod
!