1. 在rsync的主配置文件 `/etc/rsyncd.conf` 中,`uid` 和 `gid` 参数的作用是什么?它们通常被设置为 `nobody`,这样做的目的是什么? 2. rsync的认证用户(如 `auth users = backupper`)与系统用户有何区别?其对应的密码应当存储在哪类文件中,且该文件需要设置什么权限? 3. 在使用rsync进行下行同步时,目标位置存在而源位置没有的文件应当如何处理?请说明对应的rsync选项及其作用。 4. rsync的 `hosts allow` 和 `hosts deny` 参数同时配置时,其生效的优先级顺序是怎样的?如果两者均未设置,默认的访问策略是什么? 5. 在rsync服务端以 `--daemon` 模式运行时,如果启动失败并提示 `failed to create pid file`,通常是什么原因导致的?应如何解决? 6. 在使用 `--password-file` 选项实现免交互同步时,该密码文件的内容格式要求是什么?文件权限应设置为多少以保证安全性? 7. inotify机制中,`inotifywait` 命令的 `-m`、`-r`、`-q` 选项分别代表什么含义?在实时同步脚本中,`-m` 选项为何是必需的? 8. 在编写rsync+inotify触发式同步脚本时,`inotifywait` 的输出通过管道传递给 `while read` 循环,其中 `DIRECTORY`、`EVENT` 和 `FILE` 三个变量分别代表什么信息? 第1题 在rsync的主配置文件 `/etc/rsyncd.conf` 中,`uid` 和 `gid` 参数的作用是什么?它们通常被设置为 `nobody`,这样做的目的是什么? 答案: - `uid` 和 `gid` 用于指定rsync服务运行时的用户和组身份,文件传输成功后,其属主和属组将变为该uid和gid所对应的用户和组。 - 设置为 `nobody` 的目的是降低权限,使rsync进程以最低权限运行,即使被攻破,攻击者也只能获得nobody用户的权限,从而提高系统安全性。 --- 第2题 rsync的认证用户(如 `auth users = backupper`)与系统用户有何区别?其对应的密码应当存储在哪类文件中,且该文件需要设置什么权限? 答案: - 区别:`auth users` 使用的是虚拟用户,不依赖系统账户(即 `/etc/passwd` 中不需要存在该用户),仅用于rsync的访问认证。 - 密码应存储在 `secrets file` 指定的文本文件中(如 `/etc/rsyncd_users.db`)。 - 该文件需要设置权限为 600(仅属主可读写),以防止密码泄露。 --- 第3题 在使用rsync进行下行同步时,目标位置存在而源位置没有的文件应当如何处理?请说明对应的rsync选项及其作用。 答案: - 应使用 `--delete` 选项。 - 该选项的作用是:删除目标位置有而原始位置没有的文件,使目标目录与源目录保持完全一致。 --- 第4题 rsync的 `hosts allow` 和 `hosts deny` 参数同时配置时,其生效的优先级顺序是怎样的?如果两者均未设置,默认的访问策略是什么? 答案: - 优先级顺序:先允许(hosts allow),后拒绝(hosts deny),最终默认是允许访问。 - 两者均未设置时,默认允许所有主机访问。 --- 第5题 在rsync服务端以 `--daemon` 模式运行时,如果启动失败并提示 `failed to create pid file`,通常是什么原因导致的?应如何解决? 答案: - 原因:之前rsync进程未正常退出,旧的pid文件(`/var/run/rsyncd.pid`)仍然存在。 - 解决方法:删除旧的pid文件(`rm -rf /var/run/rsyncd.pid`),然后重新启动rsync服务。 --- 第6题 在使用 `--password-file` 选项实现免交互同步时,该密码文件的内容格式要求是什么?文件权限应设置为多少以保证安全性? 答案: - 内容格式:文件中仅包含密码(例如 `123.com`),不需要用户名。 - 文件权限:应设置为 600(仅属主可读写),避免其他用户读取密码内容。 --- 第7题 inotify机制中,`inotifywait` 命令的 `-m`、`-r`、`-q` 选项分别代表什么含义?在实时同步脚本中,`-m` 选项为何是必需的? 答案: - `-m`:始终监控(monitor),不退出,持续监听事件。 - `-r`:递归监控子目录。 - `-q`:静默输出(quiet),简化输出信息。 - `-m` 必须使用的原因:如果不加 `-m`,`inotifywait` 在监控到第一次事件后就会退出,无法持续监听后续变化,实时同步脚本将失效。 --- 第8题 在编写rsync+inotify触发式同步脚本时,`inotifywait` 的输出通过管道传递给 `while read` 循环,其中 `DIRECTORY`、`EVENT` 和 `FILE` 三个变量分别代表什么信息? 答案: - `DIRECTORY`:发生变化的目录路径(即事件所在的目录)。 - `EVENT`:发生的事件类型(如 modify、create、delete 等)。 - `FILE`:发生变化的文件名(如果监控的是目录,则输出具体文件名;否则可能为空)。