2010-07-14 3 views
3

다른 하위 스크립트를 실행하는 쉘 스크립트가 있다고 가정 해 보겠습니다. 루트로 실행해야하는 첫 번째 하위 스크립트가 있기 때문에 내 스크립트를 루트로 실행해야한다고 결정했습니다. 그러나 루트로 실행할 수없는 수퍼 스크립트에 의해 실행되는 두 개의 하위 스크립트가 있습니다. 내 스크립트가 루트로 실행되었다고 가정하면, 마지막 두 개의 하위 스크립트를 위해 어떻게 해지해야합니까? 이것은 가능한가?루트로 실행되는 쉘 스크립트의 중간에서 루트가 아닌 방법은 어떻게됩니까? 가능한?

답변

1

su을 사용하여 다른 사용자로 실행하려는 명령을 실행하십시오.

su nobody ls /tmp 
+0

이것은 반드시 잘못된 것은 아니지만 확률은 하위 스크립트가 파일을 작성해야한다는 것입니다 어떤 시점에서 (AIUI) 사람은 아무도 사용해서는 안됩니다. – zwol

+0

그는 그렇게 구체적인 것은 아니 었습니다. 그는 루트가 아닌 사용자로 스크립트를 실행하는 방법을 물었습니다. 나는 대답했다. 나는 그 예를 제시했다. 쳇. – nsayer

+1

나는 약을 의미하지는 않지만, 아무도 잘못 사용하면 보안상의 허점이 생겨 "아무도 사용하지 않는"예제를 사용합니다. – zwol

4

하위 스크립트를 실행할 수있는 특정 루트가 아닌 사용자가 필요합니다. 해당 사용자의 전화 번호는 fred입니다. 그런 다음 루트 권한으로 스크립트는 단순히 nobody의 전체 포인트는 아무것도에 쓰기 권한을 가지고 있기 때문에 당신은 아마,이에 대한 nobody을 사용할 수 없습니다

su fred /path/to/subscript-A 
su fred /path/to/subscript-B 

콘트라 nsayer의 답변을 할 수 있습니다. 때로는 그게 정확히 당신이 원하는,하지만 하위 스크립트를 파일 시스템에 쓸 필요가 내기 해요 ...

+0

Zack이 얻고있는 요점은 사용자가 유용 할 수있는 셸을 가진 '인간'사용자 여야한다는 것입니다. 예를 들어'nobody' 또는'www-data'가 작동하지 않습니다. 좋은 지적이지만 매번'su fred (어떤 명령) '을 할 필요는 없습니다.'su fred' 만하고, 다른 명령으로 fred로 명령을 내린 다음'exit' 명령을 내리십시오. –

+2

@no : 대화 형 셸이있는 경우에만 작동합니다. 스크립트 내에서'su fred' 명령을 주어야합니다. 물론 서브 스크립트에 많은 명령을 넣고'su'에 넘겨 줄 수는 있지만, OP가 이미 그랬던 것처럼 들립니다. 또한'fred'가'/ etc/passwd'에 쉘을 가지고 있지 않더라도 fyi,'su -s/bin/sh fred - -c exec/path/to/subscript'는' fred' 그 방법은 그 계정이 스크립트 (아마 좋은 생각입니다)에서 사용되는 경우 – zwol

+0

잭, 그거 지워 줘서 고마워 :) –

관련 문제