Ketika SCP'ing ke server Fedora saya, pengguna terus mendapatkan kesalahan tentang tidak dapat memodifikasi cap waktu file ("setel waktu: operasi tidak diizinkan"). Pengguna bukan pemilik file, tetapi kami tidak dapat chown
mengajukan file ke pengguna ini karena alasan keamanan. Pengguna dapat sudo
, tetapi karena ini terjadi melalui klien SCP / FTP, tidak ada cara untuk melakukannya juga. Dan akhirnya, kami tidak ingin harus memberikan akses root kepada pengguna ini, hanya untuk memungkinkannya menggunakan sinkronisasi seperti rsync atau WinSCP yang perlu mengatur cap waktu.
Pengguna adalah bagian dari grup dengan rw
izin penuh pada semua file dan dir yang relevan. Adakah pemikiran tentang bagaimana memberikan izin kepada pengguna untuk touch -t
file-file spesifik ini tanpa chown
memberikannya padanya?
Info Lebih Lanjut Ini semua berkaitan dengan mengaktifkan pengembangan PHP dalam skenario pengembang tunggal (yaitu: tanpa SCM). Saya mencoba untuk bekerja dengan Eclipse atau NetBeans untuk bekerja pada salinan lokal dari situs (WordPress) berbasis PHP, sambil memungkinkan pengguna untuk "langsung" melihat perubahannya di server pengembangan. Pengguna akan bekerja dari jarak jauh. Sejauh ini, semua upaya sinkronisasi otomatis telah gagal - bahkan menggunakan WinSCP dalam mode "watch folder", di mana ia memonitor folder lokal dan mencoba untuk mengunggah perubahan apa pun hingga kesalahan direktori jarak jauh karena selalu mencoba untuk mengatur tanggal / cap waktu .
Pengguna memang memiliki akses sudo, tetapi saya telah diberitahu bahwa itu benar-benar bukan ide yang baik untuk bekerja di bawah 'root', jadi saya tidak mau hanya login sebagai root untuk melakukan pekerjaan ini. Selain itu, seharusnya tidak perlu. Saya ingin yang lain, bukan pengguna super dapat melakukan hal yang sama - menggunakan informasi akun mereka, membuat koneksi FTP dan dapat bekerja dari jarak jauh melalui sinkronisasi. Jadi solusinya perlu bekerja untuk seseorang tanpa akses root.
Yang membuat saya bingung adalah seberapa banyak kesulitan yang saya alami. Semua perangkat lunak ini (NetBeans, Eclipse, WinSCP) dirancang untuk memungkinkan sinkronisasi, dan mereka semua mencoba untuk menulis stempel waktu. Jadi itu harus mungkin. WinSCP memiliki opsi untuk mematikan "set timestamp", tetapi opsi ini menjadi tidak tersedia (selalu "on") ketika Anda memilih monitor / sinkronisasi folder. Jadi itu harus menjadi sesuatu yang cukup standar.
Mengingat bahwa saya benar-benar idiot ketika datang ke Linux, dan saya adalah "admin server" dev, saya hanya dapat menganggap itu adalah sesuatu yang bodoh yang saya lakukan atau yang telah saya konfigurasi (salah).
Ringkasan Singkatnya, saya ingin setiap pengguna yang memiliki akses grup r / w ke direktori, untuk dapat mengubah cap waktu pada file dalam direktori tersebut melalui SCP.
sumber
root
grup:root
grup tidak memiliki izin khusus, hanyaroot
pengguna yang melakukannya.Jawaban:
Mengapa itu tidak berhasil?
Ketika Anda mencoba untuk mengubah waktu modifikasi file dengan
touch
, atau lebih umum dengan panggilan sistem yang mendasarinyautime
, ada dua kasus.Mengapa ini biasanya tidak masalah
--omit-dir-times
(-O
).Solusi
Oke, berhenti di situ. Hanya karena ada satu pengembang tidak berarti Anda tidak boleh menggunakan SCM. Anda harus menggunakan SCM. Mintalah pengembang memeriksa file, dan memberinya cara untuk menekan tombol “deploy” untuk memeriksa file dari SCM ke direktori langsung.
Sama sekali tidak ada alasan teknis mengapa Anda tidak boleh menggunakan SCM, tetapi mungkin ada alasan manusia. Jika orang yang mengerjakan file-file ini menyebut dirinya "pengembang", ia harus menggunakan SCM. Tetapi jika ini adalah orang non-teknis yang mendorong dokumen masuk, SCM mungkin terlalu rumit. Jadi terus mendorong file melalui FTP atau SSH. Ada tiga cara ini bisa berhasil.
rsync
memiliki opsi untuk tidak menyinkronkan waktu. Scp tidak kecuali Anda mengatakannya. Saya tidak tahu WinSCP tetapi mungkin juga bisa.apache
pengguna, maka pendekatan yang biasa dilakukan adalah mengizinkan akses SSH penggunaapache
. The mudah pendekatan adalah untuk memiliki pengguna membuat SSH kunci pribadi dan menambahkan kunci publik yang sesuai dengan~apache/.ssh/authorized_keys
. Ini berarti pengguna akan dapat menjalankan perintah sewenang-wenang sebagaiapache
pengguna. Karena Anda baik-baik saja dengan memberikan hak sudo kepada pengguna, tidak masalah dalam kasus Anda. Mungkin saja, tetapi tidak begitu mudah, untuk menempatkan lebih banyak pembatasan (Anda memerlukan entri basis data pengguna terpisah dengan nama yang berbeda, ID pengguna yang sama, shell yang dibatasi dan chroot jail; detail dalam pertanyaan terpisah, meskipun ini mungkin sudah dibahas) di situs ini atau di Server Fault ).¹ Atau, untuk file kosong, tulis satu byte dan kemudian potong.
² Cegah komplikasi tambahan, tetapi tidak ada yang saya tahu berlaku di sini.
sumber
apache
- maka mereka dapat mengatur waktu. Lihat jawaban saya yang telah direvisi untuk solusi yang tepat dan beberapa yang kurang optimal.Anda dapat mengatur rsync untuk menggunakan sudo di ujung jarak jauh seperti ini:
sumber
sudo rsync
sangat sulit untuk dibatasi. Saya hanya menyarankan itu karena OP mengatakan pengguna sudah memiliki akses sudo.