Tetapkan grup default untuk pengguna ketika mereka membuat file baru?

37

Saya sering menemukan diri saya chating-ing file ketika saya membuatnya melalui SSH dan mereka dimiliki oleh jm:jmmisalnya.

Kemudian untuk mengizinkan Apache mengaksesnya, saya perlu misalnya lakukan chown jm:www-data.

Saya yakin dapat menentukan bahwa saat saya membuat file, alih-alih menggunakan grup dengan nama saya, tentukan yang lain?

Atau adakah cara yang lebih baik untuk mengelola pengguna / grup?

JM di Tempat Kerja
sumber

Jawaban:

75

Jika Anda ingin semua file baru di direktori tertentu dimiliki oleh grup tertentu, cukup terapkan setgidbit di dalamnya:

chgrp www-data /some/dir
chmod g+s /some/dir

Jika Anda memiliki pohon direktori yang ingin Anda terapkan perilaku ini, Anda dapat melakukannya dengan find:

find /some/dir -type d -exec chgrp www-data {} +
find /some/dir -type d -exec chmod g+s {} +

(jika direktori sudah dimiliki oleh grup yang relevan, maka Anda dapat menghilangkan perintah pertama dalam kedua contoh ini).

James Henstridge
sumber
1
Jawaban bagus! Bisakah Anda menjelaskan apa arti simbol ... {} +?
Alexander Lomia
3
Mereka adalah argumen untuk findperintah, tercakup dalam halaman manual. Untuk doa pertama, itu akan menjalankan perintah chgrp www-data, menambahkan sejumlah hasil sebagai argumen (daripada memanggil perintah satu kali untuk setiap hasil seperti yang Anda dapatkan {} \;).
James Henstridge
6
Kenapa tidak digunakan chmod g+s /some/dir -R? Baru diuji dan sepertinya berhasil.
Cragmonkey
13
@Cragmonkey: itu juga akan mengatur bit setgid pada file biasa. Jika ada di antara mereka yang dapat dieksekusi, ini akan memungkinkan pengguna lain pada sistem untuk mendapatkan hak istimewa dari grup yang memiliki file.
James Henstridge