sdkman 对 root 用户可用,但对其他用户不可用

Posted

技术标签:

【中文标题】sdkman 对 root 用户可用,但对其他用户不可用【英文标题】:sdkman available to root user but not to other users 【发布时间】:2016-12-25 14:18:16 【问题描述】:

我在 CentOS 6.8 中使用 curl 作为 root 用户安装了 sdkman 我使用 sdkman 安装了 Grails,它只对 root 用户可用。

我是否需要以其他普通用户身份安装 sdkman 才能使 Grails 工作,或者有没有办法使用我以 root 用户身份安装的 Grails?

谢谢。

【问题讨论】:

如果您将其安装在 /root/bin/ 例如那么它只存在于root。将其放入/usr/local/bin 例如适用于所有用户。 "...或者有没有办法使用我以 root 用户身份安装的 Grails" - 以 root 用户身份运行 Grails 是个坏主意。 @JeffScottBrown,不,不。我的意思是作为普通用户使用 Grails,但不知何故可以访问 Grails。 @cfrick,所以我注意到我的 Grails、PostgreSQL、pgAdmin3 都对普通用户不可用...我还需要将它们移动到 /usr/local/bin 吗? 如果您的工具(如 psql)并非对所有用户都可用,那么该系统上的许多事情都可能出错(或正确:例如权限设置限制)。如果您有具体的编程问题,请制定它们。如果您对系统管理有任何疑问,那么超级用户 SE 可能是一个更好的提问场所。 【参考方案1】:

我鼓励您将 sdkman 提供给其他用户(查看其文档,自定义安装段落,添加从 $SDKMAN_DIR/bin 目录获取 init 文件的 init 脚本)。

然后让需要 Grails 的用户安装它。

或通过其存储库安装 Grails(接受,这将是比 SDKMAN 中的版本更旧的版本)。

就我而言,我使用的是:

    export SDKMAN_DIR="/usr/local/sdkman" && curl -s "https://get.sdkman.io" | bash - 在安装 sdkman 之前确保 $SDKMAN_DIR 不存在,否则它将被覆盖

    .bashrc 的用户文件中,我希望能够使用 sdkman。否则,在这些的最后,它可能不起作用

    导出 SDKMAN_DIR="/usr/local/sdkman" [[ -s "/usr/local/sdkman/bin/sdkman-init.sh" ]] && source "/usr/local/sdkman/bin/sdkman-init.sh"

文档:http://sdkman.io/install.html

【讨论】:

【参考方案2】:

    对于非交互式 shell 添加到 .profile

    导出 SDKMAN_DIR="/usr/local/sdkman"

    [[ -s "/usr/local/sdkman/bin/sdkman-init.sh" ]] && source "/usr/local/sdkman/bin/sdkman-init.sh"

【讨论】:

以上是关于sdkman 对 root 用户可用,但对其他用户不可用的主要内容,如果未能解决你的问题,请参考以下文章

file_get_contents('php://input') 为一个用户返回空,但对其他人工作正常

创建一个捕捉点击但对所有其他手势透明的 UIView

用户对目录有写权限,但对目录下的文件没有写权限时,能否修改此文件的内容?能否删除此文件?

rsync 内容作为 sudo 用户

添加非 root 用户通常不可用的“有用”系统调用

ssh root用户开放指定ip登录,不影响其他用户