私は最近、Linuxを使用してプロジェクトの開発を始めており、現在のディレクトリのファイル権限に関するいくつかの問題に直面しています。
.so
フォルダからアクセスする必要があるいくつかのライブラリファイルがあります/usr/local/lib
。フォルダ内のファイルを手動で確認すると、ファイルには自分が所有者ではなく、所有者であるとマークされますroot
。
ただし、別のディレクトリに同じライブラリをインストールしようとしていて、/home/jade/cb/lib/
ライブラリを確認すると権限があります。
私のC ++プログラムはこれらのライブラリにアクセスできないため中止されました。sudo chmod 777 -R *.*
内部で権限を変更しようとしましたが、usr/local/lib
権限や変更はありません。この問題をどのように解決できますか? (配布:Ubuntu 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は再帰ディレクトリの探索中に見つかったシンボリックリンクを無視します。