如何授予脚本对 Linux 目录中文件的读取权限

如何授予脚本对 Linux 目录中文件的读取权限

我创建了一个 shell 脚本,用于删除给定目录中的重复项。如果无法读取某个文件,它会打印“访问被拒绝”后跟文件名。当我尝试./filename在某个目录下运行(shell 文件的名称)时,所有文件都会打印出来,旁边还有“访问被拒绝”。

已授予许可:

drwxr-xr-x     .
drwx------ 24  ..
-rw-r--r--  1  file1.cpp
-rw-r--r--  1  file2.cpp
-rwxr-xr-x  1  file3.cpp
-rwxr-xr-x  1  file2.txt
-rw-r--r--  1  script

./script在目录下运行命令时输出:

/file1.cpp: permission denied 
/file2.cpp: permission denied 
/file3.cpp: permission denied 
/file2.txt: permission denied 
/script.sh: permission denied

答案1

如果不看代码的话很难判断,但你的脚本可能正在做类似的事情

cp "$file" "$dir/$file"

其中$file设置为 ,file1.cpp$dir设置为 null。因此它正在执行

cp file1.cpp /file1.cpp

当然,您没有创建的权限/file1.cpp (即在根目录中创建文件)。

因此解决方案是设置$dir

答案2

您不能授予脚本的访问权限,只能授予用户和组访问权限。

如果运行脚本的用户无权访问这些文件,请以有访问权限的用户身份运行该脚本。

在目录中,运行这些命令并将输出添加到问题中:

id
ls -la

然后按照通常执行的方式运行该脚本并添加该脚本的输出。

相关内容