rsyncを使用している際にpermission denied (13)エラーに遭遇することがあります.
原因は,rsyncを実行しているユーザの権限不足です.
権限不足を解消するために一番手っ取り早い方法は管理者権限(rootアカウント)を利用することです.
ただ,ここで問題となるのはRootアカウントのSSH接続は禁止されていることが多く,SSHを利用するrsyncではrootアカウントでログインできないことです.
RootアカウントのSSHを許可することも一つの方法ではありますが,セキュリティ上推奨できません.
そこで,別の方法としてSSH接続するユーザにsudo権限を与えます.
当然,sudo権限もセキュリティ上問題となる可能性があるため,最小限のsudo権限を与えることとします.最小限のsudo権限とは,すなわちrsyncに対してのみsudoを実行可能であることを意味します.
目次
rsyncに対しsudo権限を与える
rsyncのリモート側でrsyncに対してsudo権限を付与します.
/etc/sudoers
にsudo関連の設定ファイルが存在します.
/etc/sudoers
ファイルを編集するため,visudo
コマンドを実行します.ファイルを直接編集すると,構文エラーにより取り返しのつかない場合があります.visudo
は構文エラーをチェックして,そのようなミスを防ぐことが出来ます.
編集内容は下記の通りです.
...
+ <rsync_user> ALL= NOPASSWD:/usr/bin/rsync
<rsync_user>
は***@/path/to/rsyncの***
の部分であり,rsyncを実行するユーザを意味します.
あとはrsync実行コマンドをsudo rsync
にすれば管理者権限で実行可能です.