2012-03-30 1 views
4

나는 Ryan의 RailsCast 에피소드 339를 따라갔습니다. 나는 rbenv를 설치했고 ruby -v을 실행할 수있었습니다. 내 세션을 종료하고, 내가 root에서 (통해 su deployer에 돌아올하려고 할 때, 나는 여기에rbenv : 사용 권한이 거부되었습니다

/home/deployer/.rbenv/bin/rbenv: line 20: cd: /root: Permission denied 

rbenv 파일이 오류가 발생했습니다 :

#!/usr/bin/env bash 
set -e 
[ -n "$RBENV_DEBUG" ] && set -x 

resolve_link() { 
    $(type -p greadlink readlink | head -1) "$1" 
} 

abs_dirname() { 
    local cwd="$(pwd)" 
    local path="$1" 

    while [ -n "$path" ]; do 
    cd "${path%/*}" 
    local name="${path##*/}" 
    path="$(resolve_link "$name" || true)" 
    done 

    pwd 
    cd "$cwd" 
} 

if [ -z "${RBENV_ROOT}" ]; then 
    RBENV_ROOT="${HOME}/.rbenv" 
else 
    RBENV_ROOT="${RBENV_ROOT%/}" 
fi 
export RBENV_ROOT 

if [ -z "${RBENV_DIR}" ]; then 
    RBENV_DIR="$(pwd)" 
else 
    cd "$RBENV_DIR" 2>/dev/null || { 
    echo "rbenv: cannot change working directory to \`$RBENV_DIR'" 
    exit 1 
    } >&2 
    RBENV_DIR="$(pwd)" 
    cd "$OLDPWD" 
fi 
export RBENV_DIR 


shopt -s nullglob 

bin_path="$(abs_dirname "$0")" 
for plugin_bin in "${RBENV_ROOT}/plugins/"*/bin; do 
    bin_path="${bin_path}:${plugin_bin}" 
done 
export PATH="${bin_path}:${PATH}" 

hook_path="${RBENV_HOOK_PATH}:${RBENV_ROOT}/rbenv.d:/usr/local/etc/rbenv.d:/etc/rbenv.d:/usr/lib/rbenv/hooks" 
for plugin_hook in "${RBENV_ROOT}/plugins/"*/etc/rbenv.d; do 
    hook_path="${hook_path}:${plugin_hook}" 
done 
export RBENV_HOOK_PATH="$hook_path" 

shopt -u nullglob 


command="$1" 
case "$command" in 
"" | "-h" | "--help") 
    echo -e "rbenv 0.3.0\n$(rbenv-help)" >&2 
    ;; 
*) 
    command_path="$(command -v "rbenv-$command" || true)" 
    if [ -z "$command_path" ]; then 
    echo "rbenv: no such command \`$command'" >&2 
    exit 1 
    fi 

    shift 1 
    exec "$command_path" "[email protected]" 
    ;; 
esac 

라인 (20)가 cd "$cwd"

입니다

세션으로 돌아 가려고 할 때이 오류가 발생하는 이유에 대한 아이디어가 있습니까?

+6

으로 이동합니다. 사용자를 "배포자"로 전환하면/root에있는 것처럼 보입니다. "배포자"가 액세스 할 수있는 디렉토리에 있는지 확인하십시오. – d11wtq

+0

네 말이 맞아. 내가'/ root'에 있었는데 배포자가 admin 그룹에 있기 때문에 배포자가 액세스 할 수 있다고 생각했습니다. 당신은 옳았습니다. 디렉토리의 간단한 전환으로'su '가 올바르게 허용되었습니다. 이것을 답으로 쓰고 싶으면 받아 들일 것입니다. 감사. –

답변

11

/root 사용자를 "배포자"로 전환합니다. "배포자"가 액세스 할 수있는 디렉토리에 있는지 확인하십시오.

신용은 d11wtq