Bagaimana cara menyalin file ke `/ var / www` dengan WinSCP?

11

Ketika saya mencoba untuk menempatkan file web saya /var/wwwdi dalam apache pada contoh ec2 Ubuntu saya itu memberi saya kesalahan yang menyatakan bahwa saya tidak memiliki izin.

Permission denied.
Error code: 3
Error message from server: Permission denied
Request code: 3

Bagaimana saya memberi diri saya izin untuk melakukan ini atau apa cara terbaik untuk menyalin file /var/wwwdengan WinSCP?

andrew
sumber

Jawaban:

15

Saya mendapatkan kesalahan yang sama di WinSCP. Salah satu solusinya adalah mengubah kepemilikan folder '/ www /' menggunakan chown. Dengan begitu, Anda dapat membuat pengguna yang Anda masuki ke dalam pemilik alih-alih menjadi 'root' menjadi pemilik. Saya menggunakan instance dari Amazon Linux daripada Ubuntu, tetapi perintah ini bekerja untuk saya:

sudo chown -R -v ec2-user /var/www/

Pengguna 'ec2-user' adalah pengguna yang saya masuki.

Tautan yang berpotensi bermanfaat

  • alestic.com : Menggunakan sudo, ssh, rsync pada Gambar Resmi Ubuntu untuk EC2
  • apache.com : Daftar Perintah
chrisfargen
sumber
Permintaan bantuan Anda sebagai bagian dari jawaban untuk pertanyaan orang lain kemungkinan tidak akan mendapatkan respons atau umpan balik yang membantu. Untuk mendapatkan itu, Anda mungkin lebih baik mengajukan pertanyaan Anda sendiri dengan detail yang tepat yang Anda butuhkan.
killermist
9

Aktifkan izin menulis untuk pengguna yang masuk melalui WinSCP. Ada dua cara untuk melakukan ini.

Cara pertama adalah mengubah izin pada folder untuk mengizinkan siapa saja menulisnya. Ini bukan keamanan terbaik.

chmod 777 /var/www


Cara kedua adalah menambahkan pengguna Anda ke grup yang memiliki direktori, dan kemudian mengatur izin untuk grup untuk menulis ke direktori.

Cari tahu siapa yang memiliki direktori:

ls -l /var | grep www

Anda akan melihat sesuatu seperti: drwxr-x --- 9 www-data www-data 4096 14 Jul 2009 www Yang penting untuk dicatat adalah dua nama root dan root. Dalam hal ini, pemilik direktori adalah data-www, dan kelompok direktori adalah data-www. Jadi sekarang Anda akan menambahkan pengguna Anda ke grup www-data.

usermod -G www-data user

Sekarang cukup tambahkan izin menulis ke grup.

chmod 770 /var/www

Sekarang

ls -l /var | grep www

harus kembali: drwxrwx --- 9 www-data www-data 4096 14 Jul 2009 www

Dengan ini Anda akan dapat menulis ke direktori, sambil tidak membuka hak istimewa menulis untuk semua orang.

Chris Ting
sumber
1
sedikit koreksi untuk ketepatan - sudo chmod 777 / var / www - sudo usermod -G www-data (nama pengguna) - sudo chmod 770 / var / www - Ini dapat bekerja tergantung pada siapa Anda dalam contoh Anda, tetapi 'sudo' harus bekerja tidak peduli siapa Anda (dengan asumsi login Anda ada di / etc / sudoers untuk root / admin tentu saja).
bshea
1

pada EC2 ini bekerja untuk saya. login ke box via dempul dengan pengguna "ec2-user" dan gunakan perintah:

sudo root
chmod 777 <NAME_OF_FOLDER>

Catatan: ini memberikan akses tulis untuk semua pengguna.

Seharusnya sekarang bisa menulis menggunakan WinScp.

langit biru
sumber
1

Tutorial berikut ini berfungsi untuk saya dan memberikan tangkapan layar yang bermanfaat. Masuk sebagai pengguna biasa dengan izin sudo hanya perlu mengubah beberapa opsi WinSCP: http://cvlive.blogspot.de/2014/03/how-to-login-in-as-ssh-root-user-from.html

Setel Sesi / Protokol file ke: SCP, masukkan ip host / instance, port - biasanya 22, dan nama pengguna biasa. Masukkan kredensial kata sandi jika login mengharuskannya. Tambahkan file kunci pribadi yang sesuai pengguna di Advanced / SSH / Authentication.

Menghapus centang Advanced / SSH / Authentication / usaha "keyboard interaktif" otentikasi harus memungkinkan Advanced / Environment / SCP Shell / Shell / Shell: sudo su - untuk memberikan izin sudo untuk mengakses direktori server web sebagai pengguna yang bukan pemilik.


Pembaruan: 08/03/2017

Pencatatan WinSCP dapat membantu memecahkan masalah.

winscp.net/eng/docs/logging:

[WinSCP] Logging dapat diaktifkan dari halaman Logging pada dialog Preferensi. Logging juga dapat diaktifkan dari command-line masing-masing menggunakan parameter / log dan / xmllog, apa yang sangat berguna dengan scripting. Dalam .NET assembly, sesi logging diaktifkan menggunakan Session.SessionLogPath1).

Bergantung pada kesalahan koneksi WinSCP, beberapa instalasi server mungkin perlu direktif ditambahkan ke file (Ubunto, CentOS, lain-Linux-Server) / etc / sudoers untuk tidak memerlukan TTY untuk pengguna yang ditentukan. Membuat file di /etc/sudoers.d/ (menggunakan alat seperti Amazon Command Line Interface atau PuTTY) mungkin merupakan opsi yang lebih baik daripada mengedit / etc / sudoers. Beberapa versi / etc / sudoers merekomendasikannya:

File ini HARUS diedit dengan perintah 'visudo' sebagai root. Silakan pertimbangkan untuk menambahkan konten lokal di /etc/sudoers.d/ daripada langsung memodifikasi file ini. Lihat halaman manual untuk detail tentang cara menulis file sudoers.

Saat mengedit file sudoers (sebagai root) melalui baris perintah, perintah 'visudo' harus digunakan untuk membuka file karena akan mengurai file untuk kesalahan sintaks. File /etc/sudoers.d/ biasanya dimiliki oleh root dan chmoded dengan izin minimal. File default / etc / sudoers dapat dirujuk karena seharusnya secara otomatis merekomendasikan izin chmod saat instalasi. misal: 0440 r - r -----.

superuser.com/a/869145:

visudo -f /etc/sudoers.d/somefilename

Defaults:username !requiretty 

Tautan Bermanfaat:

  • Stackoverflow: stackoverflow.com/questions/25688850/cloud-init-how-to-add-default-user-to-sudoers-d
    • www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file-on-ubuntu-and-centos

Forum WinSCP: - winscp.net/forum/viewtopic.php?t=3046 - winscp.net/forum/viewtopic.php?t=2109

WinSCP Doc: https://winscp.net/eng/docs/faq_su

Dengan protokol SCP, Anda dapat menentukan perintah berikut sebagai shell khusus pada halaman SCP / Shell pada dialog Pengaturan Situs Tingkat Lanjut:

sudo -s

[...]

Perhatikan bahwa karena WinSCP tidak dapat mengimplementasikan emulasi terminal, Anda harus mematikan opsi sudoers.

Instruksi dalam Ubuntu Apache / etc / sudoers merekomendasikan untuk menambahkan arahan ke /etc/sudoers.d daripada mengedit / etc / sudoers secara langsung. Bergantung pada instalasi, menambahkan arahan ke /etc/sudoers.d/cloud-init juga bisa berfungsi.

Mungkin bermanfaat untuk membuat pengguna uji SSH dengan izin sudo dengan mengikuti langkah-langkah yang disediakan dalam dokumentasi contoh untuk memastikan bahwa pengguna telah merekomendasikan pengaturan instance dan setiap pembaruan ke file server sudoer dapat dilakukan dan dihapus tanpa mempengaruhi pengguna lain.

1keown
sumber
0

Anda harus memberikan izin menulis kepada pengguna, ingat izin yang digunakan sebelumnya stat /var/www.

Kemudian Anda dapat mengubahnya dengan sudo chmod 666 /var/wwwdan mengubahnya kembali nanti saat dibutuhkan.

Konsultasikan man chmoddan di man sudosamping manual izin file lainnya di internet untuk info lebih lanjut ...

Tamara Wijsman
sumber