셸에서 내 데이터 파티션에 있는 일부 스크립트를 실행하려고 하는데 권한 문제가 있습니다.
bash: /media/storage/ss/script.py: Permission denied
실행하기 전에 스크립트 실행 권한을 부여했습니다.
chmod +x script.py
문제는 내 fstab 파일의 설정과 관련이 있을 수 있습니다. /etc/fstab 설정을 편집해 보았습니다. 현재 그들은 다음과 같습니다:
UUID=F6C09DB5C09D7C95 /media/storage/ ntfs-3g uid=1000,gid=1000,umask=0022,auto,rw 0 0
그러나 다음을 실행할 때 업데이트된 uid 및 gid가 표시되지 않습니다.
편집하다:
~$ stat /media/storage
산출:
File: /media/storage/
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 804h/2052d Inode: 5 Links: 1
Access: (0777/drwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
그렇다면 ntfs 데이터 파티션의 스크립트에 대한 실행 권한을 갖도록 /etc/fstab 파일을 어떻게 변경합니까?
- 편집하다 -
~$ stat /media/storage/ss/script.py
산출:
File: /media/storage/ss/script.py
Size: 525 Blocks: 2 IO Block: 4096 regular file
Device: 804h/2052d Inode: 10208 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-03-13 13:17:31.980325600 +0000
Modify: 2019-03-13 13:14:11.690160100 +0000
Change: 2019-03-13 13:14:11.690160100 +0000
Birth: -
내가 실행할 때 :
~$ head -n 1 /media/storage/ss/script.py
산출:
#! /usr/bin/env python
내가 실행할 때 :
mount | grep /media/storage
산출:
/dev/sda4 on /media/storage type fuseblk (rw,nosuid,nodev,noexec,relatime,user_id=0,group_id=0,allow_other,blksize=4096,user)
감사해요!
답변1
/media/storage
으로 설치했습니다 noexec
. noexec
마운트된 파일 시스템에서는 바이너리 실행이 허용되지 않습니다(참고자료 참조 man 8 mount
).
귀하 exec
는 에 있어야 합니다 fstab
. fstab
항목에도 해당 defaults
옵션이 누락되어 있습니다( 참조 man 5 fstab
). 당신은 다음과 같은 것을 원할 수도 있습니다
UUID=F6C09DB5C09D7C95 /media/storage/ ntfs-3g defaults,uid=1000,gid=1000,umask=0022 0 0
man 5 fstab
또는 man 8 mount
의 의미를 확인하세요 defaults
. 적어도 내 시스템에서는 동일합니다
rw,suid,dev,exec,auto,nouser,async
그러나 이는 파일 시스템에 따라 다릅니다.
변경하지 않고 이것을 확인하고 싶다면 시도하십시오 fstab
.
mount -o remount,exec /media/storage/
먼저 /media/storage/
실행 권한으로 다시 설치하고 스크립트를 다시 확인하세요.
답변2
재부팅하면 편집된 /etc/fstab 설정에 따라 데이터 파티션이 마운트된다고 가정합니다. 그러나 이는 사실이 아닌 것 같습니다.
실행 후:
sudo mount -a
문제가 해결되었습니다. 이제 셸에서 데이터 파티션의 스크립트를 실행할 수 있습니다.
stat /media/storage의 결과는 이제 다음과 같습니다.
File: /media/storage
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 804h/2052d Inode: 5 Links: 1
Access: (0755/drwxr-xr-x) Uid: ( 1000/ floris) Gid: ( 1000/ floris)
적절한 /etc/fstab 구성을 찾아보겠지만 실행 문제가 해결되었습니다.
답변3
디렉터리에 대한 실행 권한을 제외하려고 할 때? 파일 마스크 fmask=0111(fmask는 디렉터리가 아닌 파일에만 적용됨) 및 디렉터리 마스크 dmask=0777(디렉토리에 적용됨)에 대해 별도의 값을 사용해 보세요.