Saya memiliki skrip bash yang harus rsync untuk mengunduh file yang menulisnya secara lokal, dan kemudian perlu mengatur pemiliknya ke Apache, dan grup ke grup pengguna tertentu (apache itu bukan anggota).
Apakah ada cara untuk membuat file tersebut dengan kepemilikan tersebut saat mereka sedang ditulis oleh proses rsync, tanpa harus melalui dan mengubahnya setelah fakta menggunakan chmod? Ada begitu banyak file sehingga waktu yang dibutuhkan untuk membukanya nanti sangat mahal.
Saya harus melakukan ini untuk beberapa grup pengguna, jadi saya tidak boleh menambahkan Apache ke grup ini, dan tentu saja tidak dapat menjadikan semuanya grup default.
Dengan kata lain:apakah ada cara root dapat membuat file sebagai pengguna X dan grup Y ketika X bukan anggota Y?
Saya sudah mencoba menggunakan runuser, tetapi saya tidak dapat mengatur grup (mungkin karena Apache bukan milik grup).
Saya tahu Anda dapat menggunakan chmod untuk mengubah izin dan menambahkan kombinasi pengguna/grup apa pun. Yang saya tanyakan adalah apakah ada cara untuk membuka file untuk menulis dan menggunakan kombo pengguna/grup apa pun saat membuatnya.
Coba gunakan sudo:
[[email protected] tmp]# groups angelo
angelo : angelo wheel
[[email protected] tmp]# groups apache
apache : apache
[[email protected] tmp]# sudo -u angelo -g apache touch angelo-file
Sorry, user root is not allowed to execute '/bin/touch angelo-file' as angelo:apache on centos7
[[email protected] tmp]# ls -ld angelo-file
ls: cannot access angelo-file: No such file or directory
[[email protected] tmp]# sudo -u angelo -g angelo touch angelo-file
[[email protected] tmp]# ls -ld angelo-file
-rw-r--r-- 1 angelo angelo 0 Nov 12 03:13 angelo-file
Jawaban yang Diterima:
Jika Anda ingin membuat file sebagai pengguna dan grup tertentu tanpa menggunakan chown
, Anda dapat menggunakan sudo
dan tentukan pengguna dan grup:
sudo -u #49 -g #58 touch /tmp/something
Perhatikan bahwa pengguna yang Anda tentukan harus memiliki izin untuk menulis ke direktori tempat Anda mencobanya.
Atau, Anda dapat memulai shell sebagai pengguna saat ini, dengan grup disetel ke sesuatu yang lain:
sudo runuser "$USER" -g somegroup
Saya mencoba ini di kotak Vagrant dengan sukses:
[[email protected] ~]$ sudo runuser "$USER" -g floppy
[[email protected] ~]$ touch testfile
[[email protected] ~]$ ls -l testfile
-rw-r--r--. 1 vagrant floppy 0 Nov 9 15:57 testfile
[[email protected] ~]$
Ini meskipun pengguna "gelandangan" tidak menjadi bagian dari grup "floppy".
Terkait:Php:image2wbmp — Output gambar ke browser atau file