Memastikan file baru dalam direktori milik grup

67

Saya ingin membuat direktori bersama ketika sejumlah pengguna (semua milik mengatakan mygroup) dapat membuat dan mengedit file. Saya ingin semua file dalam direktori dan subdirektori ini milik mygroup

Saya telah mengubah file yang ada untuk memiliki kelompok mygroup menggunakan chgrp, tetapi file baru masih bisa dibuat milik kelompok utama pengguna. Apakah ada cara untuk memastikan file baru milik grup tanpa berulang kali menjalankan chgrp.

tepat waktu
sumber

Jawaban:

108

Anda ingin mengatur bit SetGID.

chmod g+s dir

Semua file baru yang dibuat dalam direktori akan mengatur grup ke grup direktori.

Posting blog superuser menjelaskan tentang bit sticky dan bit izin Linux lainnya:

Namun, SetGID adalah permainan bola yang sepenuhnya berbeda. Ketika sebuah direktori memiliki bit set SetGID dan sebuah file dibuat di dalam direktori tersebut, kepemilikan grup dari file tersebut secara otomatis diubah menjadi grup direktori tersebut.

lesmana
sumber
1
Terima kasih. Referensi bermanfaat. menjelaskan perintah umask yang merupakan bagian dari gambar
justintime
4
Bagaimana dengan membuat subdirektori dalam direktori awal yang juga milik grup direktori induk? Apakah ini mungkin?
daaxix
@ LukePH's jawaban di bawah ini sangat penting untuk tidak menjadi bingung ketika ini gagal diam-diam: gunakan sudo
Rhubarb
11

Atur setgidbendera izin pada folder.

chmod g+s dirname
Daniel Beck
sumber
11

Ini mungkin membuat beberapa orang terjebak dengan setgid, jika grup folder berbeda dari milik Anda, Anda mungkin perlu menjalankan chmod sebagai root tetapi Anda tidak akan mendapatkan kesalahan yang mengindikasikan Anda perlu melakukan ini.

tanpa sudo

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir

$ chmod g+s dir                                     # no errors

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir   # but nothing changed

$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar  9 10:51 nosudo        # and the group is set wrong

dengan sudo

$ sudo chmod g+s dir

$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar  9 10:44 dir   # the setgid bit is now on

$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke      0 Mar  9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar  9 10:51 withsudo # and the group is set right
LukePH
sumber