我是 linux 新手,目前必须执行一项任务,我必须检查特定用户是否是目录及其子目录的所有者,如果不是,则将他分配为所有者。我需要在 bash 脚本中执行此操作,因此如果任何人都可以为我提供示例,那将非常棒。
场景: path = "/opt/dev/myapp"
此目录包含更多子目录和文件
需要检查用户“devuser”是否是所有者,如果不是,则将他分配为所有者。
提前致谢!
您可以将用户分配到该目录,无论在检查之前是否存在:
chown -R bob bobs-directory
其中-R
意味着递归地沿着目录树向下移动,bob
是用户的名称,并且bobs-directory
是您要授予所有权的根目录。
正如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"