Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.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
system():为什么在EMACS中使用R时,我没有与在bash终端中相同的权限? 更新:该错误仅在从emacs内登录到R时发生 工作原理:_Bash_R_Emacs_Ess - Fatal编程技术网

system():为什么在EMACS中使用R时,我没有与在bash终端中相同的权限? 更新:该错误仅在从emacs内登录到R时发生 工作原理:

system():为什么在EMACS中使用R时,我没有与在bash终端中相同的权限? 更新:该错误仅在从emacs内登录到R时发生 工作原理:,bash,r,emacs,ess,Bash,R,Emacs,Ess,当我ssh到远程服务器并运行 $ ./foo.rb 在bashshell中,它可以工作。此外,如果我启动R并执行 $R 系统('./foo.rb') 我所在的小组有权读取/写入/执行该文件。文件权限为-rwxrwx--- 什么不起作用: 启动emacs并启动R会话: M-xr ssh myserver: 系统('./foo.rb') 我得到以下错误: ruby: Permission denied -- foo.rb (LoadError) 为什么会这样?有办法解决这个问题吗 我在?系

当我ssh到远程服务器并运行

$ ./foo.rb
在bashshell中,它可以工作。此外,如果我启动R并执行 $R

系统('./foo.rb')


我所在的小组有权读取/写入/执行该文件。文件权限为
-rwxrwx---

什么不起作用: 启动emacs并启动R会话:

  • M-xr
  • ssh myserver:

    系统('./foo.rb')

我得到以下错误:

ruby: Permission denied -- foo.rb (LoadError)
为什么会这样?有办法解决这个问题吗

我在
?系统
?系统2
中找不到任何信息


以下是sessionInfo()的输出


根据@sarnold的注释,从ssh和emacs输出'id'和'env'(更改的用户名、组名和ip地址) 1.服务器 1.1“身份证” 1.2“环境” emacs/ess R会议 2.1系统(id) 2.2系统(“环境”)
假设您以同一用户的身份启动了R,那么您可以。但是,您的错误并非来自
foo.rb
的权限问题,否则您的shell将给出错误。(即
sh:./test.rb:权限被拒绝
;参见下面的示例)。在这里,ruby本身给出了错误。在不确切知道您的
foo.rb
中有什么内容的情况下,我建议深入其中查看它试图加载/源代码的内容,并检查这些内容的权限

#/usr/bin/env ruby
把“你好,世界”
现在在R

> system('ls -l test.rb')
-rw-r--r--  1 jcolby  staff  40 Oct 21 08:23 test.rb
> system('./test.rb')
sh: ./test.rb: Permission denied
> system('chmod a+x test.rb')
> system('./test.rb')
Hello world

我假定Emacs派生输出中的
M模块路径
只是一个复制粘贴输入错误

两个
env
输出之间的差异比我预期的要大得多;我选择了一些我觉得有点可疑的:

$ diff -u works fails
--- works   2011-10-24 15:04:02.000000000 -0700
+++ fails   2011-10-24 15:12:36.000000000 -0700
...
+LD_LIBRARY_PATH=/usr/lib64/R/lib:/usr/local/lib64:/usr/lib/jvm/jre/lib/amd64/server:/usr/lib/jvm/jre/lib/amd64:/usr/lib/jvm/java/lib/amd64:/usr/java/packages/lib/amd64:/lib:/usr/lib
...
-PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/opt/dell/srvadmin/bin
-PWD=/home/dleb
...
+PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin
...
+PWD=/home/a-m/dleb/pecan
...
在emacs派生会话中,您的
LD\u LIBRARY\u PATH
环境变量可能正在更改执行
ruby
时使用的动态链接库的具体信息。如果您
ssh
进入您的服务器,并使用更改的
LD\u LIBRARY\u路径执行
foo.rb
,它是工作还是失败

LD_LIBRARY_PATH=/usr/lib64/R/lib:/usr/local/lib64:/usr/lib/jvm/jre/lib/amd64/server:/usr/lib/jvm/jre/lib/amd64:/usr/lib/jvm/java/lib/amd64:/usr/java/packages/lib/amd64:/lib:/usr/lib ./foo.rb
两个会话之间的
PATH
环境变量不同;也许您有权执行
/usr/local/bin/ruby
(或
/usr/local/lib/ruby/
中的库),但没有
/usr/bin/ruby
(或
/usr/lib/ruby/
中的库)。您的脚本是否使用
#!env ruby
还是使用
#/usr/bin/ruby
(或其他固定路径)

您的
pwd
在一个实例中是
/home/dleb
,另一个
/home/a-m/dleb/pecan
——但是
home
在两个系统上都设置为
/home/a-m/dleb
/home/dleb
是一个符号链接,还是它实际上与
/home/a-m/dleb
分开存在?(这确实是在抓救命稻草——我不认为是这样,但这个问题令人困惑。)


最后要考虑的一点是:您的服务器是否受限于诸如、或之类的工具?这些工具中的任何一个都可以防止应用程序在特定位置写入,可能它们还没有为您的站点配置。检查
dmesg(1)
输出以查看是否有任何拒绝消息,如果
auditd(8)
未运行,则大多数或所有这些工具都会登录到
dmesg(1)

明显的问题:文件是否每个人都可以执行?也就是说,确切的权限是什么?权限是
-rwxrwx--
,我已经更新了问题,好的,所以不是每个人都可以执行。如果将文件权限设置为
-rwxrwx--x
,是否有效?如果是这样,运行R的用户可能不在具有执行权限的组中。foo.rb做什么?ruby中的一个简单hello world在系统中为我工作,即使有这些权限。我怀疑ruby正在做一些事情,所以答案将是特定于其中发生的任何事情……此外,请尝试system(“id”)查看它认为您是什么id。可能有人安装了R来运行setuid,或者其他人。。。或者运行系统(“sh”)并从该外壳中尝试您的ruby谢谢您的回答。我不知道为什么,但这个错误只发生在emacs内部。尽管如此,您的测试脚本仍然运行良好(我既是所有者又是团队成员)。啊,至少可以排除一些事情。我不知道emacs,但我相信有人会想出点子。也许可以调整你的标题以吸引更多emacs的注意?
uid=1668(dleb) gid=1668(dleb) groups=117(ebusers),159(lab_admin),166(lab),1340(pal_web),1668(dleb)
LN_S=ln -s
R_TEXI2DVICMD=/usr/bin/texi2dvi
LC_PAPER=en_US.UTF-8
SED=/bin/sed
LC_ADDRESS=en_US.UTF-8
R_PDFVIEWER=/usr/bin/xdg-open
LC_MONETARY=en_US.UTF-8
HOSTNAME=ebi-forecast
R_INCLUDE_DIR=/usr/include/R
R_PRINTCMD=lpr
SHELL=/usr/local/bin/system-specific
TERM=dumb
AWK=gawk
HISTSIZE=1
R_RD4DVI=ae
SSH_CLIENT=888.888.888.88 51159 22
KDE_NO_IPV6=1
R_RD4PDF=times,hyper
R_PAPERSIZE=a4
NCARG_FONTCAPS=/usr/lib64/ncarg/fontcaps
PERL=/usr/bin/perl
LC_NUMERIC=en_US.UTF-8
SSH_TTY=/dev/pts/14
LC_ALL=C
EMACS=t
USER=dleb
LC_TELEPHONE=en_US.UTF-8
LS_COLORS=
LD_LIBRARY_PATH=/usr/lib64/R/lib:/usr/local/lib64:/usr/lib/jvm/jre/lib/amd64/server:/usr/lib/jvm/jre/lib/amd64:/usr/lib/jvm/java/lib/amd64:/usr/java/packages/lib/amd64:/lib:/usr/lib
TAR=/bin/gtar
ENV=
R_ZIPCMD=/usr/bin/zip
KDEDIR=/usr
PAGER=/usr/bin/less
NCARG_GRAPHCAPS=/usr/lib64/ncarg/graphcaps
R_GZIPCMD=/usr/bin/gzip
PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin
LC_COLLATE=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
EGREP=/bin/grep -E
PWD=/home/a-m/dleb/pecan
INPUTRC=/etc/inputrc
R_LIBS=/home/a-m/dleb/lib/R
NCARG_ROOT=/usr
R_SHARE_DIR=/usr/share/R
WHICH=/usr/bin/which
EDITOR=vi
LANG=en_US.UTF-8
KDE_IS_PRELINKED=1
R_LIBS_SITE=/usr/local/lib/R/site-library:/usr/local/lib/R/library:/usr/lib64/R/library:/usr/share/R/library
M    ODULEPATH=/usr/share/Modules/modulefiles:/etc/modulefiles
NCARG_DATABASE=/usr/lib64/ncarg/database
LC_MEASUREMENT=en_US.UTF-8
LOADEDMODULES=
PS3=
R_BROWSER=/usr/bin/xdg-open
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
NCARG_LIB=/usr/lib64/ncarg
HOME=/home/a-m/dleb
SHLVL=1
NCARG_NCARG=/usr/share/ncarg
R_ARCH=
TR=/usr/bin/tr
MAKE=make
R_UNZIPCMD=/usr/bin/unzip
LOGNAME=dleb
CVS_RSH=ssh
LC_CTYPE=en_US.UTF-8
SSH_CONNECTION=888.888.888.88 51159 999.999.999.99 22
R_BZIPCMD=/usr/bin/bzip2
MODULESHOME=/usr/share/Modules
LESSOPEN=|/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=
R_HOME=/usr/lib64/R
DISPLAY=localhost:22.0
R_PLATFORM=x86_64-redhat-linux-gnu
INSIDE_EMACS=23.2.1,tramp:2.1.18-23.2
R_LIBS_USER=~/R/x86_64-redhat-linux-gnu-library/2.12
LC_TIME=en_US.UTF-8
R_DOC_DIR=/usr/share/doc/R-2.12.2
R_SESSION_TMPDIR=/tmp/RtmpqA6bpJ
HISTFILE=/home/a-m/dleb/.tramp_history
G_BROKEN_FILENAMES=1
LC_NAME=en_US.UTF-8
_=/bin/env
> system('ls -l test.rb')
-rw-r--r--  1 jcolby  staff  40 Oct 21 08:23 test.rb
> system('./test.rb')
sh: ./test.rb: Permission denied
> system('chmod a+x test.rb')
> system('./test.rb')
Hello world
$ diff -u works fails
--- works   2011-10-24 15:04:02.000000000 -0700
+++ fails   2011-10-24 15:12:36.000000000 -0700
...
+LD_LIBRARY_PATH=/usr/lib64/R/lib:/usr/local/lib64:/usr/lib/jvm/jre/lib/amd64/server:/usr/lib/jvm/jre/lib/amd64:/usr/lib/jvm/java/lib/amd64:/usr/java/packages/lib/amd64:/lib:/usr/lib
...
-PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/opt/dell/srvadmin/bin
-PWD=/home/dleb
...
+PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin
...
+PWD=/home/a-m/dleb/pecan
...
LD_LIBRARY_PATH=/usr/lib64/R/lib:/usr/local/lib64:/usr/lib/jvm/jre/lib/amd64/server:/usr/lib/jvm/jre/lib/amd64:/usr/lib/jvm/java/lib/amd64:/usr/java/packages/lib/amd64:/lib:/usr/lib ./foo.rb