WinSCP で一般ユーザで接続後に root に変更する
WinSCP には接続後にユーザーを切り替える(su する)機能はありません。一般ユーザーで接続した状態から root 権限でファイルを扱う場合は、サーバー側の /etc/sudoers で SFTP サーバーをパスワードなしで実行できるようにし、WinSCP から sudo 経由で SFTP サーバーを起動する方法があります。以下は、その方法を調べたときの情報を整理したものです。
WinSCP で接続後に root へ切り替えられるか(結論)
/etc/sudoersにsftp-serverをパスワード無しで実行できるようにして、rootユーザーにsuさせる方法しかないようです。
参考にした情報
sudoers を使う方法の概要(WinSCP 公式 FAQ より)
以下は WinSCP 公式 FAQ「How do I change user after login (e.g. su root)?」に記載されている方法の要約です(手元で実行確認した手順ではありません。詳細・最新の内容はリンク先を参照してください)。
- WinSCP の「高度なサイト設定 → SFTP」で、SFTP サーバーのコマンドを
sudo /bin/sftp-serverのように指定する。 sftp-serverの場所は環境によって異なるため、whereis sftp-serverなどで確認する。- サーバー側の
/etc/sudoersで、対象ユーザーにNOPASSWD: /bin/sftp-serverを許可する。 requirettyが有効な環境では、その調整が必要になる。- この方法は SFTP / SCP 向けであり、FTP では使えない。
root 権限で操作するときの注意点
NOPASSWDの対象は必要なsftp-serverだけに限定する。ALL=NOPASSWD: ALLのような広い許可にはしない。- この設定では、その接続ユーザーが SFTP 経由で root 権限相当のファイル操作を行えるようになる。接続アカウントや SSH 鍵の管理に注意する。
FAQ
Q. WinSCP で root 権限のファイルを編集したい
WinSCP 自体にユーザーを su で切り替える機能はありません。WinSCP から起動する SFTP サーバーを sudo 経由で実行することで、SFTP 経由で root 権限相当のファイル操作ができます(接続ユーザー自身が root に切り替わるわけではありません)。
Q. sudo を使うには何を設定すればいいか
サーバー側の /etc/sudoers で対象ユーザーに NOPASSWD: /bin/sftp-server を許可し、WinSCP 側の SFTP サーバーコマンドを sudo /bin/sftp-server に変更します。/bin/sftp-server のパスは環境依存のため、実際のパスに読み替えてください。

