Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 文件和目录的Chmod权限_Bash_Permissions_File Permissions_Chmod_User Permissions - Fatal编程技术网

Bash 文件和目录的Chmod权限

Bash 文件和目录的Chmod权限,bash,permissions,file-permissions,chmod,user-permissions,Bash,Permissions,File Permissions,Chmod,User Permissions,我有一个二进制脚本和一个密钥文件,并在shell的一个文件夹中有所需的libs。shell上目前有3个用户,我希望允许他们运行二进制脚本。运行它的每个用户都将其作为单独的实例/进程运行。为了启动脚本,使用一个.sh文件运行脚本,该文件指定二进制文件及其libs的位置。例如,./script.sh是命令 我的脚本当前位于/home/script/user中,它也将为其他用户创建名为/user2的目录,其中脚本是我为它创建的新用户。用户从其homedir运行.sh,然后它会自动在/home/scri

我有一个二进制脚本和一个密钥文件,并在shell的一个文件夹中有所需的libs。shell上目前有3个用户,我希望允许他们运行二进制脚本。运行它的每个用户都将其作为单独的实例/进程运行。为了启动脚本,使用一个.sh文件运行脚本,该文件指定二进制文件及其libs的位置。例如,./script.sh是命令

我的脚本当前位于/home/script/user中,它也将为其他用户创建名为/user2的目录,其中脚本是我为它创建的新用户。用户从其homedir运行.sh,然后它会自动在/home/script/User中写入一个配置文件。我一直在玩弄chmod,因为我不希望任何人被允许窃取该脚本或其目录中的任何内容。总之,我只希望用户能够执行二进制文件,读取libs和key文件,并将其配置写入/home/script/中相应的用户目录。我不想允许他们删除、编辑、复制或下载/script目录中的任何内容。目前只有二进制文件无论如何都不能修改,但密钥文件和lib可以复制或下载。我不知道如何对密钥和libs进行chmod,以便它们不能被复制,等等,只有读取才能成功运行二进制文件


请让我知道如何实现我的许可目标和/或是否有其他或更简单的方法。谢谢。

我相信通过chmod和小组,你可以实现你想要的大部分目标。因此,要允许一组用户运行一个脚本,您需要创建一个组,将他们添加到其中。创建一个组并向其中添加用户,如下所示:

groupadd <groupname>
usermod -a -G <groupname> <username>
然后,使文件仅可由您运行的组执行

chgrp <groupname> <file>
chmod g+x <file>

不幸的是,由于chmod的工作方式,您不能允许读取但不复制文件。这是因为chmod具有读取、写入和执行权限,如果可以读取,就可以进行复制。

基本上,这是我想主要保护的关键文件。我已经保护了二进制文件,所以现在只保护密钥文件。物理上是否有任何可能的方法仍然允许读取访问?通常,您会将密钥设置为仅由需要它的用户读取。问题不在于有多少用户被允许使用复制它的密钥。当用户根本不允许使用复制或读取密钥时,问题就更大了。您需要确保这些用户没有读取权限。