1

我是 linux 新手,目前必须执行一项任务,我必须检查特定用户是否是目录及其子目录的所有者,如果不是,则将他分配为所有者。我需要在 bash 脚本中执行此操作,因此如果任何人都可以为我提供示例,那将非常棒。

场景: path = "/opt/dev/myapp"

此目录包含更多子目录和文件

需要检查用户“devuser”是否是所有者,如果不是,则将他分配为所有者。

提前致谢!

4

2 回答 2

5

您可以将用户分配到该目录,无论在检查之前是否存在:

chown -R bob bobs-directory

其中-R意味着递归地沿着目录树向下移动,bob是用户的名称,并且bobs-directory是您要授予所有权的根目录。

于 2013-07-08T08:30:22.330 回答
2

正如Alberto Zaccagni所说的那样,您可以立即更换所有者。如果你想检查,你可以这样做:

dir="/opt/dev/myapp"
username=devuser

[ "$(stat -c "%U" "$dir")" == "$username" ] || chown -R $username "$dir"

stat是一个实用程序,用于显示有关文件的信息(所有者、权限、时间……)。

=请注意,在分配变量时,您不能在周围放置空格。另外,我建议不要使用变量名,path因为它很容易与 environment variable 混淆$PATH

编辑: Mac OS X 附带 BSD stat,它有不同的选项,所以你必须像这样更改命令:

[ "$(stat -f "%Su" "$dir")" == "$username" ] || chown -R $username "$dir"
于 2013-07-08T08:48:33.627 回答