Używam Ubuntu na komputerze 1 i komputerze 2. Skompilowałem program C ++ na komputerze 1 i mogę go uruchomić z terminala za pomocą ./program_name
. Działa dobrze.
Jednak gdy próbuję to zrobić na komputerze 2, pojawia się komunikat: bash: ./program_name: permission denied
Co jest nie tak i co mogę z tym zrobić?
progam_name
?bash program_name
.sh
plik. Odmówił wykonania z tym komunikatem o błędzie. Powiedziałbym, że jest to zdecydowanie temat na temat StackOverflow. Nominowałem do ponownego otwarcia.Odpowiedzi:
chmod u+x program_name
. Następnie wykonaj to.Jeśli to nie zadziała, skopiuj program z urządzenia USB na natywny wolumin w systemie. Następnie
chmod u+x program_name
na lokalnej kopii i uruchom ją.Systemy uniksowe i podobne do systemu Unix generalnie nie wykonają programu, dopóki nie zostanie oznaczony uprawnieniem do wykonania. Sposób, w jaki skopiowałeś plik z jednego systemu do drugiego (lub zamontowałeś wolumin zewnętrzny) mógł wyłączyć uprawnienia do wykonywania (jako funkcja bezpieczeństwa). Polecenie
chmod u+x name
dodaje uprawnienia do wykonania pliku przez użytkownika, który jest właścicielem pliku.To polecenie zmienia tylko uprawnienia związane z plikiem; nie zmienia kontroli bezpieczeństwa związanych z całym woluminem. Jeśli kontrolki bezpieczeństwa woluminu przeszkadzają w wykonywaniu (na przykład
noexec
dla woluminu wfstab
pliku Unix można określić opcję , która mówi, że nie zezwalaj na wykonywanie uprawnień do plików na woluminie), możesz ponownie zamontować wolumin z opcjami umożliwiającymi wykonanie. Jednak skopiowanie pliku na wolumin lokalny może być szybszym i łatwiejszym rozwiązaniem.źródło
/tmp
. Okazuje się, że mój tmpfs/tmp
ma ten sam problem i muszę skopiować plik wykonywalny na prawdziwy wolumin natywny, tj. Mój folder domowy ~ na partycji ext4.chmod
wprowadza trwałą zmianę. Jeśli uprawnienia zmienią się po ich użyciu,chmod
aby je włączyć, coś innego je zmienia. (Może to obejmować usunięcie lub ponowne utworzenie pliku lub wolumin, w którym plik jest demontowany i montowany ponownie. Jeśli wolumin jest montowany ponownie, istnieją sposoby określenia domyślnych uprawnień do plików w woluminach zewnętrznych, ale to jest poza zakresem Mogę teraz odpowiedzieć.)Spróbuj tego:
źródło
sudo
nie jest generalnie konieczne, chyba że program znajduje się w katalogu, w którym nie masz uprawnień do zapisu (w takim przypadku, w jaki sposób go tam zainstalowałeś?)Wygląda na to, że nie masz ustawionej flagi wykonywania dla uprawnień do plików, spróbuj:
źródło