更改Linux中文件的权限

更改Linux中文件的权限

我最近开始使用 Linux 开发一个项目,目前面临目录中文件权限的一些问题。

我有一些.so需要从文件夹访问的库文件/usr/local/lib。当我手动检查文件夹中的文件时,文件显示我不是所有者,并且root是所有者。

但是,在另一个目录中,我随后尝试在 处安装相同的库/home/jade/cb/lib/,如果我检查这些库,我确实拥有权限。

我的 C++ 程序被卡住了,因为它无法访问这些库。我尝试使用sudo chmod 777 -R *.*while inside更改权限,usr/local/lib但权限或任何内容都没有改变。我该如何摆脱这个问题? (发行版:Ubuntu 12.10)

答案1

大多数需要您构建它的源都使用配置脚本。此配置脚本采用一个名为 的开关,--prefix该开关采用一个参数,您可以覆盖该软件的安装位置。通常,您/usr/local可以使用具有写入权限的目录覆盖默认位置(通常是)。

这是软件应用程序的示例节点.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 会忽略递归目录遍历期间遇到的符号链接。

相关内容