Webファイルをec2 UbuntuインスタンスのApacheの/var/www
に配置しようとすると、権限がないことを示すエラーが表示されます。
Permission denied.
Error code: 3
Error message from server: Permission denied
Request code: 3
これを行う許可を自分に与えるにはどうすればよいですか、またはWinSCPを使用して/var/www
にファイルをコピーする最良の方法は何ですか?
WinSCPでも同じエラーが発生しました。 1つの解決策は、chown
を使用して「/ www /」フォルダーの所有権を変更することです。そうすることで、「root」が所有者になる代わりに、ログインに使用するユーザーを所有者にすることができます。 UbuntuではなくAmazon Linuxのインスタンスを使用していますが、このコマンドでうまくいきました。
Sudo chown -R -v ec2-user /var/www/
ユーザー「ec2-user」は、ログインに使用したユーザーです。
WinSCPを介してログインするユーザーの書き込み権限を有効にします。これを行うには2つの方法があります。
1つ目の方法は、フォルダへのアクセス許可を変更して、だれでもフォルダに書き込めるようにすることです。これは最高のセキュリティではありません。
chmod 777 /var/www
2つ目の方法は、ディレクトリを所有するグループにユーザーを追加し、グループにディレクトリへの書き込み権限を設定することです。
ディレクトリの所有者を確認します。
ls -l /var | grep www
次のようなものが表示されます。drwxr-x --- 9 www-data www-data 4096 2009年7月14日www注意すべき重要なことは、ルートとルートの2つの名前です。この場合、ディレクトリの所有者はwww-dataであり、ディレクトリのグループはwww-dataです。したがって、ユーザーをグループwww-dataに追加します。
usermod -G www-data user
次に、グループに書き込み権限を追加します。
chmod 770 /var/www
今
ls -l /var | grep www
戻り値:drwxrwx --- 9 www-data www-data 4096 2009年7月14日www
これにより、ディレクトリへの書き込みが可能になりますが、すべてのユーザーに書き込み権限を与えることはできません。
ec2では、これでうまくいきます。ユーザー「ec2-user」でPuTTYを介してボックスにログインし、コマンドを使用します。
Sudo root
chmod 777 <NAME_OF_FOLDER>
注:これにより、すべてのユーザーに書き込みアクセスが許可されます。
これで、WinScpを使用して書き込むことができるはずです。
次のチュートリアルは私にとってうまくいき、役立つスクリーンショットを提供します。 Sudoアクセス許可を持つ通常のユーザーとしてログインするには、いくつかのWinSCPオプションを微調整する必要がありました: http://cvlive.blogspot.de/2014/03/how-to-login-in-as-ssh-root-user -from.html
セッション/ファイルプロトコルをSCPに設定し、ホスト/インスタンスIP、ポート-通常22、および通常のユーザー名を入力します。ログインで必要な場合は、パスワード資格情報を入力します。 Advanced/SSH/Authenticationにユーザーの対応する秘密鍵ファイルを追加します。
Advanced/SSH/Authentication/attempt "keyboard interactive" authenticationのチェックを外すと、Advanced/Environment/SCP Shell/Shell/Shell:Sudo su-非所有者ユーザーとしてWebサーバーディレクトリにアクセスするためのSudoパーミッションを提供できます。
更新:2017年8月3日
WinSCPログは、問題のトラブルシューティングに役立ちます。
winscp.net/eng/docs/logging:
[WinSCP]ロギングは、[設定]ダイアログの[ロギング]ページから有効にできます。/logおよび/ xmllogパラメータをそれぞれ使用して、コマンドラインからロギングを有効にすることもできます。これは、スクリプトで特に役立ちます。 .NETアセンブリでは、Session.SessionLogPath1を使用してセッションロギングが有効になります。
WinSCP接続エラーによっては、一部のサーバーインストールで、(Ubunto、CentOS、その他のLinux-Server)/ etc/sudoersファイルにディレクティブを追加して、指定したユーザーのTTYを必要としない場合があります。 /etc/sudoers.d/にファイルを作成する(Amazon Command Line InterfaceまたはPuTTYなどのツールを使用する)ことは、/ etc/sudoersを編集するよりも優れたオプションです。/etc/sudoersの一部のバージョンでは、これが推奨されています。
このファイルは、ルートとして「visudo」コマンドを使用して編集する必要があります。このファイルを直接変更するのではなく、/ etc/sudoers.d /にローカルコンテンツを追加することを検討してください。 sudoersファイルの作成方法の詳細については、manページを参照してください。
コマンドラインを介してsudoersファイルを(ルートとして)編集する場合、構文エラーがないかファイルを解析するため、「visudo」コマンドを使用してファイルを開く必要があります。 /etc/sudoers.d/ファイルは通常rootが所有し、最小限の権限でchmodされています。デフォルトの/ etc/sudoersファイルは、インストール時に自動的に推奨chmod権限が付与されているため、参照することができます。例:0440 r--r -----。
superuser.com/a/869145:
visudo -f /etc/sudoers.d/somefilename
Defaults:username !requiretty
便利なリンク:
WinSCPフォーラム:-winscp.net/forum/viewtopic.php?t=3046-winscp.net/forum/viewtopic.php?t=2109
WinSCPドキュメント: https://winscp.net/eng/docs/faq_s
SCPプロトコルを使用すると、[サイトの詳細設定]ダイアログの[SCP /シェル]ページで、次のコマンドをカスタムシェルとして指定できます。
Sudo -s
[...]
WinSCPは端末エミュレーションを実装できないため、sudoersオプションrequirettyをオフにする必要があることに注意してください。
Ubuntu Apacheの手順/ etc/sudoersは、/ etc/sudoersを直接編集するのではなく、/ etc/sudoers.dにディレクティブを追加することを推奨しています。インストールによっては、/ etc/sudoers.d/cloud-initにディレクティブを追加しても機能する場合があります。
インスタンスのドキュメントに記載されている手順に従ってSudo権限を持つSSHテストユーザーを作成すると、ユーザーがインスタンス設定を推奨し、他のユーザーに影響を与えることなくサーバーのsudoerファイルへの更新を実行および削除できることを確認できます。
ユーザーに書き込み権限を与える必要があります。stat /var/www
を使用して以前の権限を覚えておいてください。
その後、Sudo chmod 666 /var/www
を使用して変更し、後で必要に応じて元に戻すことができます。
詳細については、インターネット上の他のファイル許可マニュアルとともにman chmod
およびman Sudo
を参照してください...