Linux – how to grant execute permission without read permission

linuxpermissions

I want to grant execute permission for a script, but not read permission since I do not want user to read the content for the script. But it seems not working, I post what I am doing and seeking for advice,

sub-directory demo is owned by root user and root group,

Case 1, make execute+read permission, works

chmod 775 /home/yhd/demo/text

Then user yhd can execute text command without any issues

Case 2, make execute permission only, not working

chmod 771 /home/yhd/demo/text

Then user yhn cannot execute text command, and error message is permission denied

Best Answer

The problem with scripts is that the script is not what is running, but the interpreter (bash in this case).

The interpreter needs to read the script.

Since reading the file is forbidden then it can't be executed inside the interpreter.

This is different from a program, because programs are loaded directly into the kernel.

One solution is to use a compiler that will generate a C program equivalent to the script, like SHC, that you can download from here or from this guide.

Related Question