![스크립트의 권한을 변경하는 방법은 무엇입니까?](https://linux55.com/image/69477/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98%20%EA%B6%8C%ED%95%9C%EC%9D%84%20%EB%B3%80%EA%B2%BD%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
일부 디스크에 직접 액세스할 수 있는 VMWare 가상 머신이 있습니다. (자체 문제가 있는 su로 vmware를 실행하지 않고) 실행하려면 장치의 소유권을 변경해야 합니다. 나는 이것을 수동으로 사용하여 수행했습니다.니모, 그래서 무엇을 해야 하는지 알고 있습니다.
이를 위해 쉘 스크립트를 작성했습니다.
chown john:john /dev/disk/by-id/blahblah /dev/anotherblah /dev/lastoneblah
파일로 저장 drive-owner
하고 실행 비트를 설정한 다음 루트 쉘에서 소유자를 루트로 변경하고 +s 특수 모드 플래그를 설정했습니다.
ls의 결과에 따르면 결과는 입니다 -rwsr-sr-x
.
루트가 아닌 일반 쉘에서 실행하면 chown에서 오류가 발생합니다.허용되지 않는 작업. 루트 셸에서 불만 없이 실행됩니다.
스크립트를 루트로 자동 실행하는 부분이 누락된 것 같습니다. 이것이 "setuid" 권한의 목적이자 기능이라고 생각하며,+s를 지정하는 방법.
내가 무엇을 놓치고 있나요?
답변1
보안상의 이유로 쉘 스크립트는 setuid 및 setgid 플래그를 무시합니다.
답변2
다음 단계를 따르십시오.
- 노력하다
sudo
- 노력하다
chmod +x script_path
- 보안이 중요하지 않은 경우 다음을 실행하십시오.
chmod 777 script_path
답변3
@hildred는 위의 댓글에서 이를 지적했습니다. 이것이 정확하고 적극 권장되는 답변이라고 생각하기 때문에 이것을 답변으로 확장하겠습니다.
이것훌륭한주문하다
...지정된 사용자가 루트로 스크립트(또는 다른 명령)를 실행할 수 있도록 허용하거나 명령을 실행하기 전에 명령별로 uid, gid 및/또는 보조 그룹을 설정할 수 있습니다.이는 스크립트를 루트로 설정하는 것에 대한 안전한 대안으로 고안되었습니다.. 또한 Super를 사용하면 일반 사용자가 다른 사용자가 실행할 명령을 제공할 수 있습니다. 이러한 명령은 명령을 제공하는 사용자의 uid, gid 및 그룹을 사용하여 실행됩니다.
(강조).