Bagaimana cara membagikan nginx log tanpa sudo ke pengguna lain?

10

Saya memiliki 2 pengguna di server saya. Satu dengan sudo mengakses yang lain tanpa. Bagaimana saya bisa memberikan akses ke log nginx

/var/log/nginx/error.log

Ke pengguna lain tanpa sudoizin untuk digunakan cat /var/log/nginx/error.log? Bisakah saya membuat sesuatu seperti symlink untuk login di direktori / home / username?

Jadi pertanyaan saya adalah - bagaimana pengguna tanpa sudoizin dapat memeriksa log nginx?

Alexander Kim
sumber
sudoakses ke apa? Tidak jelas dari pertanyaan Anda. Saya tahu beberapa orang membuat 'akses sudo' berarti 'akses root', tetapi secara teknis tidak akurat. Tolong ellaborate.
dawud
1
ya Anda bisa menggunakan sudountuk memberinya izin sebenarnya, tergantung bagaimana Anda ingin mengkonfigurasinya.
gparent
Anda bisa menggunakan ACL. mis setfacl -m 'user:someuser:r' /var/log/nginx/error.log. Saya tidak yakin bagaimana itu akan bekerja dengan logrotate. sudoakses ke cat / tail / etc log itu mungkin merupakan pilihan yang lebih baik.`
Greg Bowser
@GregBowser IMHO, menggunakan ACL tanpa memahami ACL adalah resep untuk masalah.
Paul

Jawaban:

16

Misalnya, seperti ini:

chmod 755 /var/log/nginx && chmod 644 /var/log/nginx/*.log && chmod 644 /var/log/nginx/*.gz

dengan cara ini siapa pun akan dapat membaca dan membaca isi dari direktori / var / log / nginx dan membaca file * .log.

Anda juga harus memeriksa konfigurasi rotating log sehingga izin tidak akan berubah lagi. Untuk beberapa versi Nginx terakhir, hingga dan termasuk 1.6.2, file /etc/logrotate.d/nginxtelah menggunakan baris create 0640 www-data admuntuk mengatur izin ketika memutar log. Ini harus diubah menjadi sesuatu seperti create 0644 www-data adm. Perlu dicatat bahwa solusi ini memungkinkan semua pengguna di server untuk membaca semua log Nginx.

Pembaruan: konfigurasi logrotate juga harus diperbarui untuk menyertakansu www-data admagar utilitas logadm berfungsi tanpa mengeluh tentang izin direktori yang salah.

drookie
sumber
3
Konfigurasi default Nginx /etc/logrotate.d/nginxadalah create 0640 www-data adm. Itu di 1.6.2, tapi saya pikir garis itu tidak berubah dalam beberapa waktu.
Paul
1
Jawaban ini sangat penting sehingga bersifat universal dan generik, bukan spesifik ubuntu-nginx-1.6.2-20141110.
drookie
1
nginx config di logrotate d sedang meresetnya. Memperbaikinya dengan mengubahnya.
SDK
Apakah tidak ada cara lain untuk menyelesaikan ini, seperti ketika pengguna lain mencoba memulai nginx sehingga ia menggunakan jalur log yang berbeda? Saya mencoba menambahkannya ke file nginx.conf baru saya tetapi ketika menjalankan nginx -c newnginx.conf pada pengguna baru ini, ia masih mencoba untuk mengakses / var / log / nginx ...
Poul K. Sørensen