CommentsTweetPocket時折、リモートサーバにある”ログインユーザでは読み取りができないファイル”をそのままローカルにコピーしたいことがある。ssh経由でファイルをコピーするといえばscpがよく使われる方法だと思うが、残念ながらscpではリモートサーバ側でsudoを使ってroot権限でファイルを読み込んだりといった事はできない。すればいいのだろうか。いったとき、sudoをNOPASSWDで実行可能な状態であれば、単体のファイルであればsshコマンドからsudoを使ってcatで、ディレクトリごとであれば一度tarでアーカイブ化してローカルでそのまま展開させる事ができる。RHEL系のデフォルトではsudo実行には擬似端末が必要になる(AWSやAzureのCentOSイメージでは手が加えてある様子)のだが、catコマンドはsshコマンド実行時に-ttの付与しておけば良いのだが、tarに関しては擬似端末を利用してのssh越しの実行ができない。このため、/etc/sudoersにてrequirettyを無効化しておく必要があるので注意。Linksなお、この時sudo実行時にパスワードが必要な場合、以下のように標準入力から受付けさせるようにする。この際標準エラー出力を/dev/nullに吐かせないと、sudoのパスワード入力プロンプトがリダイレクト先に出力されてしまうので注意。blacknonインフラエンジニア(...のつもり)。仕事で使うならクライアントはWindowsよりはUNIXの方が好き。Commentコメントをキャンセルメールアドレスが公開されることはありません。