실행 권한으로 실행할 수 있는 바이너리를 찾기 위해 압축을 풀 수 있는 tarball(.tar.gz)을 사용자에게 제공하여 전체 프로그램을 시작하는 데스크톱 응용 프로그램이 있습니다. 이는 사용자의 홈 디스크에서 작동하지만 USB 또는 외부 HD와 같은 이동식 미디어에 있는 경우 작동하지 않습니다(Windows의 경우 작동함). "r"과 "w"로 시작하여 권한을 변경하려고 할 때마다 다음을 사용합니다.chmod
루트에 대해서도 권한이 실행 권한 제외로 되돌아갑니다..
마운트 포인트의 현재 마운트 정보/dev/sda1 on /media/me/78E1-495A type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
이 문제에 대한 다른 게시물이 있습니다:우분투 관련 질문다음과 같은 몇 가지 흥미로운 솔루션이 있습니다.권한 변경을 통한 설치, 그러나 다른 위치에 다시 설치해야 하지 않습니까(불완전한 답변)? 이 질문에 대한 답변은 해결책을 제공합니다mount -o -exec로 응답, 새로운 마운트 지점을 사용합니다.구현하다옵션이지만 기본 비실행 옵션은 변경되지 않습니다.
사용자 시스템의 구성 파일을 변경하지 않는 솔루션이 있습니까?
답변1
파일 시스템 유형 vfat
(일반적인 USB 스틱)은 chmod가 수정하려는 권한 저장을 지원하지 않습니다. vfat
Windows 파생 파일 시스템이므로 UNIX 파일 의미를 완전히 지원하지 않는다는 것은 놀라운 일이 아닙니다.
또한 이 showexec
옵션은 실행 비트를 차단합니다. 마운트 매뉴얼 페이지에 따르면,
설정된 경우 파일의 실행 권한 비트는 이름 확장자가 .EXE, .COM 또는 .BAT인 경우에만 허용됩니다. 기본적으로 설정되지 않습니다.
showexec 설치 옵션이 없으면 모든 파일이 실행 파일로 표시되고 chmod -x
명령이 여전히 아무 작업도 수행하지 않을 수 있습니다.
답변2
파일 시스템 UDF
디렉토리를 쓸 수 있고 프로그램을 실행할 수 있도록 소유권과 권한을 상당히 자유롭게 관리할 수 있는 파일 시스템 UDF를 사용할 수 있습니다.
UDF에는 파일 시스템을 복구하는 도구가 부족할 수 있는데 이는 단점이지만 몇 가지 장점이 있습니다.
무료 소프트웨어
복구 도구는 다음 링크를 통해 Windows에서 찾을 수 있습니다.UDF용 fsck 도구, 소스 코드로 사용할 수 있는 도구가 있습니다.
우분투에서 생성 가능
Linux 스타일 링크와 호환됩니다.
Linux 스타일 권한 및 소유권과 호환됩니다. 개별 파일의 소유권과 권한을 생성하고 수정할 수 있습니다(FAT 및 NTFS에서는 불가능).
UDF 파티션은 Windows 10에서 포맷하라는 메시지를 표시하지 않습니다(Linux ext4 파일 시스템은 영향을 받고 실수로 삭제될 수 있음).
UDF를 만들고 사용하는 방법:USB 스틱 FAT의 후속 제품으로 UDF 사용
따라서 이를 사용하려면 USB 스틱이 다음과 같다고 가정합니다
/dev/sdx
.패키지 설치
udftools
(Ubuntu 및 Debian)sudo apt-get install udftools
파티션을 나눈 테이블과 파티션 만들기
gparted
또는gnome-disks
대상 파티션의 첫 번째 mibibyte를 위험하게 삭제
dd
(명령줄을 주의 깊게 확인하세요!)sudo dd if=/dev/zero of=/dev/sdx1 bs=1M count=1
달리기
mkudffs
,sudo mkudffs -b 512 --media-type=hd --lvid=my-label /dev/sdx1
UDF로 포맷한 후 USB 드라이브가 FAT로 감지되는 것을 방지하기 위해 파티션의 첫 번째 MiB 바이트를 지워 이전 파일 시스템 정보(또는 기타 나머지 데이터)를 지웁니다.
이는
-b 512
UDF 사양에서 요구하는 대로 파일 시스템 블록 크기를 USB 스틱의 물리적 블록 크기와 동일하게 만들기 위한 것입니다. 운이 좋게도 더 적합한 블록 크기의 USB 스틱을 갖고 있다면 이를 조정하세요.그러면 USB 스틱을 GNU/Linux는 물론 현재 버전의 Windows(이전 버전 XP의 경우 읽기 전용)에서 읽고 쓰는 데 사용할 수 있습니다. 안타깝게도 Linux에서 생성된 이 UDF 버전은 MacOS에서 관리할 수 없습니다(2020년 11월 여러 MacOS 버전에서 테스트됨).
테스트 예시
USB 플래시 드라이브에 다음 시스템을 만들었습니다.
$ lsblk -o name,size,fstype,label,mountpoint /dev/sdc
NAME SIZE FSTYPE LABEL MOUNTPOINT
sdc 57,3G
└─sdc1 3,5G udf work-here /media/olle/work-here
UDF가 있는 파티션이 내 컴퓨터에 자동으로 마운트됩니다.
UDF 파일 시스템의 최상위 수준에 디렉터리를 생성하고(sudo를 사용하여) 첫 번째 일반 사용자가 소유권과 전체 권한을 갖도록 해당 소유권과 권한을 수정했습니다.
sudodus@bionic64 /media/sudodus/work-here/cd-2-this-dir $ ls -l /media/sudodus/work-here
totalt 0
drwxr-xr-x 2 sudodus sudodus 196 aug 2 23:14 cd-2-this-dir
그런 다음 작은 bash 쉘 스크립트를 만들고 실행 권한을 부여했습니다.
chmod +x run-this-file
sudodus@bionic64 /media/sudodus/work-here/cd-2-this-dir $ ls -l
totalt 0
-rwxrwxr-x 1 sudodus sudodus 49 aug 2 23:14 run-this-file
해당 위치(USB 드라이브)에서 실행할 수 있습니다.
sudodus@bionic64 /media/sudodus/work-here/cd-2-this-dir $ ./run-this-file
Hello World, I am sudodus
이 연습을 기본 컴퓨터(Ubuntu 18.04.6 LTS)에서 실행한 후 Ubuntu 22.04 LTS 및 Windows 11에서 테스트했습니다. 파일을 만들었고 bat
다음을 통해 실행할 수 있습니다.
.\run.bat
최종 의견
UDF를 사용하는 이러한 접근 방식을 통해 Linux 및 Windows에서 패키지를 사용할 수 있다고 생각합니다.
불행히도 MacOS에 대한 원활한 방법은 없습니다. MacOS에서 작동하는 방법이 필요한 경우 사용자는 FAT32 또는 exFAT가 필요하며 이번에는 exec
추가된 설치 옵션 에 따라 제거하고 다시 설치해야 할 것 같습니다.이 링크. "예 2(파일에 대한 실행 권한 포함...)"까지 아래로 스크롤합니다.
[보다 사용자 친화적으로 만들기 위해] 수행할 수 있는 작업은 작은 파티션에서 이러한 명령을 실행하고 동일한 드라이브의 더 큰 파티션에 대한 마운트 옵션을 수정할 수 있는 작은 쉘 스크립트를 갖는 것입니다.
sudo bash make-execution-possible
이것은 실행 권한 없이 작동합니다(그러나 쉘스크립트의 경우에만 컴파일된 프로그램이 있는 것 같습니다).