izin apa untuk menulis file PID di / var / run


51

Ubuntu

sentuh: tidak dapat menyentuh `/var/run/test.pid ': Izin ditolak

Saya mulai start-stop-daemon dan suka menulis file PID di / var / run start-stop-daemon dijalankan sebagai pengguna-program-saya

Pengaturan / var / run adalah root root drwxr-xr-x 9

Saya suka menghindari menempatkan pengguna-program-saya di grup root.

Jawaban:


71

Secara default, Anda hanya dapat menulis ke / var / run sebagai pengguna dengan ID pengguna 0 yang efektif (yaitu sebagai root). Ini untuk alasan yang baik, jadi apa pun yang Anda lakukan, jangan pergi dan mengubah izin / var / run ... Alih-alih, sebagai root, buat direktori di bawah / var / run:

# mkdir /var/run/mydaemon

Kemudian ubah kepemilikannya ke pengguna / grup tempat Anda ingin menjalankan proses:

# chown myuser:myuser /var/run/mydaemon

Sekarang tentukan untuk menggunakan / var / run / mydaemon daripada / var / run.

Anda selalu dapat menguji ini dengan menjalankan tes sebagai pengguna yang dipermasalahkan.


5
Ini bekerja dengan baik untuk saya tetapi ketika saya me-restart server saya maka /var/run/mydaemondirektori itu hilang.
— myborobudur

17
Ini bukan jawaban yang lengkap, / var / run adalah tmpfs secara default di Ubuntu. Setiap kali server dijalankan, perintah mkdir dan chown harus dijalankan kembali.
— Tim

1
@Tim, bagaimana dengan mengedit jawaban dan melengkapinya?
— kaiser

Jika Anda berurusan dengan daemon maka solusi bersih adalah menambahkan path / var / run / mydaemon ke file systemd unit seperti yang dijelaskan di sini . Solusi hacky yang lebih mudah adalah dengan menambahkan perintah mkdir dan chown ke skrip init.d (jika ada)
— odedfos

1
Jawaban luas yang lebih baik ada di sini: superuser.com/a/1127720/71795 jawaban yang salah yang tampaknya sangat elegan ada di sini: stackoverflow.com/a/5174433 . Ringkasan: gunakan salah satu /tmpatau ~.
— Tim

13
mkdir /var/run/mydaemon
chown myuser:myuser /var/run/mydaemon

ini tidak akan berfungsi, karena akan hilang pada reboot berikutnya ( /var/runadalah tmpfs di Ubuntu).

Satu-satunya solusi yang layak adalah menjalankan mkdir dan chmod sebagai bagian dari skrip startup.


3

Anda bisa mencoba ini. Buat direktori / var / run / test / dan kemudian ubah izin direktori ini ke pengguna yang sama dengan program Anda berjalan. "chown / var / run / test /". Sekarang di aplikasi Anda, ubah lokasi file PID ke /var/run/test/test.pid. Ini akan membuat semuanya bekerja untuk Anda.


2

Bagaimana dengan menggunakan bit "sticky" di / var / run?

chmod + t / var / run?

Mungkin mengacaukan beberapa aplikasi lain, tetapi sepertinya itu akan menjadi solusi lain.

Saya akan tetap dengan membuat folder / var / run terpisah untuk saat ini.


1

Entri di dalam /etc/permissionsbersifat permanen. Buat entri di sana untuk membuat kepemilikan dan izin untuk direktori permanen.


-6

Untuk menghindari menempatkan pengguna program Anda di grup root, izinkan orang lain menulis akses:

# chmod 757

3
Jangan pernah melakukan chmod 757 di / var / run! Ini akan menyebabkan masalah keamanan yang serius
— michel

1
Ini ide yang buruk. Ini akan menyebabkan masalah keamanan yang berpotensi besar
— Tom O'Connor

Bahkan jika kita mengabaikan masalah keamanan, chmod 757juga hanya akan berfungsi sampai reboot berikutnya. Maaf tentang membuat jawaban baru, tetapi sepertinya tidak ada cara untuk membalas komentar lainnya.
— Vladimir Nicolici

@michel, penulis pernah mengatakan untuk melakukan chmodpada /var/run. Penulis mungkin bermaksud untuk subdirektori aplikasi. Tidak yakin apa yang terjadi.
— Acumenus
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.