Linuxでファイルの権限を変更する

Linuxでファイルの権限を変更する

私は最近、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.jsnode.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は再帰ディレクトリの探索中に見つかったシンボリックリンクを無視します。

関連情報