저는 최근 Linux를 사용하여 프로젝트 개발을 시작했으며 현재 디렉터리의 파일 권한과 관련된 몇 가지 문제에 직면해 있습니다.
.so
폴더에서 액세스해야 하는 일부 라이브러리 파일이 있습니다 /usr/local/lib
. 폴더에 있는 파일을 수동으로 확인해보니 파일에는 내가 소유자가 아니고 내가 root
소유자인 것으로 표시됩니다.
그러나 다른 디렉토리에 동일한 라이브러리를 설치하려고 시도하고 /home/jade/cb/lib/
라이브러리를 확인하면 권한이 있습니다.
내 C++ 프로그램이 이러한 라이브러리에 액세스할 수 없기 때문에 중단되었습니다. sudo chmod 777 -R *.*
내부에서 사용 권한을 변경하려고 시도했지만 usr/local/lib
권한이나 변경 사항이 없습니다. 이 문제를 어떻게 해결할 수 있습니까? (배포: 우분투 12.10)
답변1
빌드가 필요한 대부분의 소스는 구성 스크립트를 사용합니다. 이 구성 스크립트는 --prefix
소프트웨어가 설치된 위치를 재정의할 수 있는 매개변수를 사용하는 스위치를 사용합니다 . 일반적 /usr/local
으로 쓰기 권한이 있는 디렉터리로 기본 위치(일반적인 경우)를 재정의할 수 있습니다.
이것은 소프트웨어 응용 프로그램의 예입니다.node.js. node.js
아래와 같이 소프트웨어를 다운로드하고 압축을 풉니다 .
[saml@grinchy node-v0.8.12]$ ls
AUTHORS BSDmakefile common.gypi config.mk deps lib Makefile node.gyp README.md test vcbuild.bat
benchmark ChangeLog config.gypi configure doc LICENSE node out src tools
포함된 구성 스크립트를 실행하면 다음과 같습니다.
[saml@grinchy node-v0.8.12]$ ./configure --help
Usage: configure [options]
Options:
-h, --help show this help message and exit
--debug Also build debug build
--prefix=PREFIX Select the install prefix (defaults to /usr/local)
--without-npm Don't install the bundled npm package manager
--without-waf Don't install node-waf
--without-ssl Build without SSL
--without-snapshot Build without snapshotting V8 libraries. You might
want to set this for cross-compiling. [Default: False]
...
...
기본 위치를 변경하려면 다음과 같이 구성을 호출하면 됩니다.
[saml@grinchy node-v0.8.12]$ ./configure --prefix=/home/saml/my_node.js
생성된 Makefile은 이제 기본 /usr/local
.
답변2
man chmod
:
chmod는 기호 링크의 권한을 변경하지 않습니다. chmod 시스템 호출은 해당 권한을 변경할 수 없습니다. 심볼릭 링크의 권한은 절대 사용되지 않으므로 이는 문제가 되지 않습니다. 그러나 명령줄에 나열된 모든 기호 링크에 대해 chmod는
이를 가리키는 파일에 대한 권한을 변경합니다.
대신 chmod는 재귀 디렉터리 탐색 중에 발견된 기호 링크를 무시합니다.