【发布时间】:2013-07-08 08:24:58
【问题描述】:
我是 linux 新手,目前必须执行一项任务,我必须检查特定用户是否是目录及其子目录的所有者,如果不是,则将他分配为所有者。我需要在 bash 脚本中执行此操作,因此任何人都可以为我提供示例,这将非常棒。
场景: path = "/opt/dev/myapp"
这个目录包含更多的子目录和文件
需要检查用户“devuser”是否是所有者,如果不是,则将他分配为所有者。
提前致谢!
【问题讨论】:
我是 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 这样的变量名,因为这很容易与环境变量 $PATH 混淆。
编辑: Mac OS X 附带 BSD stat,它有不同的选项,因此您必须像这样更改命令:
[ "$(stat -f "%Su" "$dir")" == "$username" ] || chown -R $username "$dir"
【讨论】: