셸에는 권한이 있지만 스크립트에는 권한이 없습니다(Sudo를 사용하지 않는 한).

셸에는 권한이 있지만 스크립트에는 권한이 없습니다(Sudo를 사용하지 않는 한).

나는 매우 기본적인 혼란을 겪고 있습니다. 어떻게 sudo작동하나요?

스크립트를 실행했을 때 다음 권한이 있는 디렉터리에 파일을 쓰려고 했기 때문에 실패했다는 것을 알았습니다.

$ ls -l thedir
drwxr--r-- usr grp

하지만 스크립트를 실행하면 sudo -u usr작동합니다.

sudo를 사용하여 스크립트를 성공적으로 실행할 수 있다면 애초에 스크립트가 실패하는 이유는 무엇입니까?

즉, 해당 사용자로 실행할 수 있는 충분한 권한이 있으면 처음부터 스크립트를 성공적으로 실행할 수 있어야 한다고 생각합니다.

답변1

다른 사용자로 행동할 수 있는 능력이 있다고 해서 현재 사용자와 동일한 권한이 부여되는 것은 아닙니다. 다른 사용자 역할을 하는 현재 사용자 계정의 능력에 따라 권한이 현재 사용자에게 전달되지 않습니다. sudo그리고 su귀하는 다른 사용자가 "되거나" "역할"할 수 있습니다. 즉, sudo를 사용하면 실제로 일시적으로 해당 사용자가 됩니다.

rootsudo다른 사용자로 컴퓨터에 로그온 하더라도 su시스템에 관한 한 귀하는 해당 사용자이지 가 아니기 때문에 해당 사용자와 동일한 제한 사항(및 사용 권한)을 갖게 됩니다 root.

답변2

내 생각에 가장 먼저 해야 할 일은 스크립트가 당신의 스크립트처럼 실행되는지 알아내는 것입니다.

#!/bin/bash
whoami

작업 중인 스크립트(예: cronjob)를 호출하는 것과 같은 방식으로 호출합니다. 이는 스크립트가 다른 사용자로 실행되고 있는지에 대한 단서를 제공할 수 있습니다.

관련 정보