Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用sudo安装全局包在安装后例程期间产生权限错误_Linux_Docker_Root_Sudo_Chown - Fatal编程技术网

Linux 使用sudo安装全局包在安装后例程期间产生权限错误

Linux 使用sudo安装全局包在安装后例程期间产生权限错误,linux,docker,root,sudo,chown,Linux,Docker,Root,Sudo,Chown,我正在尝试在CircleCI上运行此命令: sudo npm install -g --loglevel=warn @oresoftware/r2g 我得到这个错误: #!/bin/bash -eo pipefail sudo npm install -g --loglevel=warn @oresoftware/r2g /usr/local/bin/r2g -> /usr/local/lib/node_modules/@oresoftware/r2g/cli/r2g.sh /usr/

我正在尝试在CircleCI上运行此命令:

 sudo npm install -g --loglevel=warn @oresoftware/r2g
我得到这个错误:

#!/bin/bash -eo pipefail
sudo npm install -g --loglevel=warn @oresoftware/r2g
/usr/local/bin/r2g -> /usr/local/lib/node_modules/@oresoftware/r2g/cli/r2g.sh
/usr/local/bin/r2g_run -> /usr/local/lib/node_modules/@oresoftware/r2g/cli/r2g_run.sh
/usr/local/bin/r2g_copy_smoke_tester -> /usr/local/lib/node_modules/@oresoftware/r2g/assets/copy_smoke_tester.sh

> @oresoftware/r2g@0.0.132 postinstall /usr/local/lib/node_modules/@oresoftware/r2g
> ./assets/postinstall.sh

mkdir: cannot create directory ‘/root’: Permission denied
could not create directory => '/root/.r2g/temp/project'...
mkdir: cannot create directory ‘/root’: Permission denied
could not create oresoftware/bash dir.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @oresoftware/r2g@0.0.132 postinstall: `./assets/postinstall.sh`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @oresoftware/r2g@0.0.132 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-06-17T04_41_24_461Z-debug.log
Exited with code 1
这个问题不是CircleCI特有的-这发生在Docker或任何设置了错误权限的地方

我的问题是-如果我是root用户-我的
$HOME
是/root,为什么在运行以下命令时会出现权限错误:

mkdir -p /root/.r2g/temp/project
如您所见,它在第一个目录中失败-我无法创建
/root
。尽管它已经存在,但几乎可以肯定,我应该是root用户,其中/root是我的
$HOME
dir

有人知道Linux系统上是否有修复程序吗?我是否可以运行一些命令来获得作为root用户访问自己主目录的权限

我正试图找到一个通用而不是有力的解决方案

在执行
npm install
命令之前,我尝试运行此命令:

sudo chown -R $(whoami) $HOME
那没什么用,同样的错误

一个简单的两行Dockerfile将产生相同的问题:

FROM node:10
RUN npm install -g @oresoftware/r2g
对于此3行Dockerfile,它也会失败,并出现相同的错误:

FROM node:10
RUN apt-get update && apt-get install -y sudo
RUN sudo npm install -g @oresoftware/r2g
这是你的电话号码


我必须访问CircleCI帮助论坛。

似乎npm安装没有对任何人执行
setuid
setgid
。因此,基本上在运行postinstall脚本之前,它会将用户更改为nobody—当然,该用户没有写入/root的权限

要防止出现这种情况,可以设置:


之后,它与docker示例一起工作。

似乎npm install对任何人都不执行
setuid
setgid
。因此,基本上在运行postinstall脚本之前,它会将用户更改为nobody—当然,该用户没有写入/root的权限

要防止出现这种情况,可以设置:


在这之后,它与docker示例一起工作。

您可以运行
mount
并查看
/root
是否作为只读文件系统装载吗?@vstm将尝试这样做,但即使使用简单的docker文件,我也会遇到相同的错误,我更新了问题,查看底部可以运行
挂载
并查看
/root
是否作为只读文件系统挂载吗?@vstm将尝试这样做,但即使使用简单的Dockerfile,我也会遇到相同的错误,我更新了问题,查看底部我想知道是否有npm配置设置将不安全的perm设置为始终为true
npm config set unsafe perm true
?@AlexanderMills:是的,似乎就是这样
npm-config-set-unsafe-perm-true
在我的测试中也起了作用。我验证了
npm-set-unsafe-perm-true
的有效性,所以很好你比我快了一两秒,谢谢
npm配置集
npm集
应该是相同的。这对于一般Docker使用来说是一个很好的解决方案,但对于CircleCI,我仍然会收到一个相关错误(EACCES)。我想知道是否有npm配置设置将不安全的perm设置为始终为真
npm config set unsafe perm true
?@AlexanderMills:是的,似乎就是这样
npm-config-set-unsafe-perm-true
在我的测试中也起了作用。我验证了
npm-set-unsafe-perm-true
的有效性,所以很好你比我快了一两秒,谢谢
npm配置集
npm集
应该是相同的。这对于一般Docker使用来说是一个很好的解决方案,但对于CircleCI,我仍然会收到一个相关错误(EACCES)。如果我弄明白了,我会向你汇报的。
npm install --unsafe-perm=true -g @oresoftware/r2g