GNU/Linux >> Belajar Linux >  >> Linux

Buat File Sebagai Pengguna Dan Grup Yang Berbeda?

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
Linux
  1. Bagaimana Cara Membuat File Dan Memasangnya Sebagai Sistem File?

  2. Buat dan hapus pengguna CentOS

  3. Buat pengguna baru dan berikan izin di MySQL

  1. Buat dan edit pengguna di MySQL

  2. Buat dan hapus file swap di Ubuntu

  3. Apa perbedaan antara root dan sudo?

  1. Cara membuat dan menghapus grup pengguna di Linux

  2. Diutamakan Pengguna Dan Pemilik Grup Dalam Izin File?

  3. Mengapa Disarankan Membuat Grup Dan Pengguna Untuk Beberapa Aplikasi?