2012-02-07 3 views
2

제한된 쉘에서 명령을 실행합니다/bin/rbash '를 입력하십시오.사용 패브릭 나는 다음과 같은 fabfile을했습니다

매개 변수가있는 명령을 실행하면 매개 변수없이 'ls'가 완벽하게 작동하는 반면 단일 명령으로 처리됩니다.

Fabric이 '/ bin/bash'를 사용하려고 시도 했으므로 빈 쉘을 넣었습니다.이 쉘은 제한된 쉘로는 허용되지 않습니다.

제한된 쉘에서 패브릭을 사용할 수 있습니까?

답변

2

이 문제는 rbash이 사용되고 있다는 사실과 관련이 없지만 env.shell의 빈 값입니다.

env.shell = '/bin/rbash -l -c' 

참고 :

  • env.shell에 대한 기본 값이 너무 /bin/rbash -l -c를 사용하여, /bin/bash -l -c입니다 감각
  • env.shell이 빈 문자열로 설정되어
  • 명령 ISN을 만드는 문제의 사용을 해결하려면 모든 쉘을 통해 실행되지 않습니다.
  • 쉘은 긴 문자열을 명령과 인수로 분할하는 역할을하며 쉘 없이는 모든 문자열이 단일 COM으로 해석됩니다 구문은 그게 .Hypothetically 당신이 얻을

    echo $SHELL 
    

    와 대상 기계의

+0

'rbash -l -c'를 지정하면 문제가 해결됩니다. 제한된 쉘이 절대 경로를 사용할 수 없으므로''/ bin/rbash ''를 넣을 수 없습니다. – alexyz78

1

- 체크 환경 일어나고으로 발견하지 않을 :

/bin/sh 

- 그렇다면 귀하의 파이썬 fabfile.py :

from fabric.api import env 

env.shell = "/bin/sh -c" 
2

제 환경에서는 Pure 배열의 일부로 제한된 셸을 부르는 경우에는 run 함수에 인수 shell = False를 전달하는 옵션이있는 것처럼 보입니다.