Mengatur nama pengguna dan grup default untuk file dalam direktori

13

Dengan menggunakan postingan yang bermanfaat ini saya dapat mengatur hak grup dan file dalam folder.

Saya mengalami masalah dalam menetapkan pemilik default (teamlead uid 1234).

setfacl -d -m g::rwx /my/test/folder
setfacl -d -m o::rx /my/test/folder

getfacl /my/test/folder

# file: /my/test/folder
# owner: teamlead
# group: web_prod
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

Dengan itu:

[mary@boxen]# touch /my/test/folder/somefile
[mary@boxen]# ll /my/test/folder/somefile
-rw-rw-r--. 1 mary web_prod 0 Nov  6 08:58 somefile

Jadi grup yang tepat ditugaskan, tetapi file baru memiliki kepemilikan pengguna yang membuat file. Saya ingin file yang baru dibuat memiliki timlead: web_prod pemilik / grup.

Tampaknya setfacldapat digunakan untuk mengatur pengguna default juga. Dengan folder acl config yang sudah ada (di atas):

[mary@boxen]# setfacl -d -m u:1234:rwx /my/test/folder

Sekarang untuk membuat file sebagai pengguna yang berbeda. Saya mengharapkan timlead: kepemilikan web_prod.

[mary@boxen]# touch /my/test/folder/anotherfile
[mary@boxen]# ll /my/test/folder/anotherfile
-rw-rw-r--+ 1 mary web_prod 0 Nov  6 08:58 somefile

File baru masih memiliki kepemilikan dari pemilik yang membuat file, bukan 1234 (timlead).

Apakah yang saya kejar mungkin, atau apa yang saya lakukan salah?

seorang programmer
sumber

Jawaban:

18

Dengan setfacl Anda dapat mengatur izin default tetapi bukan pemilik / grup default untuk file yang baru dibuat.

Untuk mendapatkan file baru yang harus dimiliki oleh pengguna tertentu, Anda memerlukan bit setuid yang berfungsi seperti bit setgid pada direktori. Sayangnya itu tidak diimplementasikan.

Dengan setfacl Anda dapat melakukan sesuatu yang hampir setara di sebagian besar skenario: Anda dapat mengatur seperti ACL default:user:teamlead:rwx. Dengan cara itu pengguna yang disebutkan dapat menulis file baru, bahkan jika orang lain memilikinya.

Michael Suelmann
sumber
Harap perbarui jawaban ini dengan perintah untuk menerapkan 'default: user: teamlead: rwx' ke direktori '/ foo'
user319862
10

File baru selalu dibuat milik pengguna yang menjalankan proses pembuatan file tersebut. (ID pengguna yang efektif, tepatnya.) Ini tidak dapat diubah, karena memungkinkan pengguna untuk membuat file milik pengguna lain akan menjadi lubang keamanan, mirip dengan memungkinkan pengguna non-root untuk memberikan file .

Apa pun yang Anda coba lakukan, Anda tidak perlu melakukan ini. ACL cukup untuk memastikan bahwa apa pun yang perlu untuk membaca file nanti akan memiliki izin yang memadai. Biarkan file milik pengguna yang membuatnya.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
"ACL cukup untuk memastikan bahwa apa pun yang perlu untuk membaca file nanti akan memiliki izin yang memadai." Salah. Grup file baru Anda akan menjadi grup default pengguna Anda. Jika pengguna yang berkolaborasi memiliki grup default yang berbeda, Anda tidak akan dapat mengakses file masing-masing. Anda perlu setgid untuk membuat grup folder induk "menempel" ke semua anak.
bviktor
@ Bviktor Anda dapat mencapai efek yang sama dengan ACL.
Gilles 'SANGAT berhenti menjadi jahat'
Bagaimana Anda menentukan pemilik dan grup untuk file baru dengan ACL?
bviktor
@ Bviktor Pemiliknya adalah siapa pun yang membuat file, itu tidak berubah. Grup yang memiliki file dalam izin tradisional tidak relevan. ACL pada file baru adalah ACL default direktori, dengan cara yang sama bahwa grup yang memiliki file baru adalah grup yang memiliki direktori dengan semantik BSD ( g+s).
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles nggak. Grup file baru akan menjadi "grup login awal" pengguna, bukan grup folder induk. Perilaku yang Anda jelaskan (yaitu file baru mendapatkan grup dir induk) mengharuskan setgid ditetapkan pada induk. Dan grup ini sangat relevan karena ketika pengguna berkolaborasi, mereka tidak dapat mengakses file satu sama lain jika grup tersebut berbeda. Kecuali jika file Anda dapat diakses dunia yang bukan ide bagus.
bviktor
1

Jika Anda ingin file baru akan dibuat dengan grup baru, Anda perlu mengubah grup utama.

Untuk ini, Anda dapat menggunakan usermod dan parameter -g

   -g, --gid GROUP
       The group name or number of the user's new initial login group. The group must exist.
       Any file from the user's home directory owned by the previous primary group of the user will be owned by this new group.
       The group ownership of files outside of the user's home directory must be fixed manually.

misalnya

test2@kinakuta:/tmp$ id
uid=1002(test2) gid=1002(test2) grupos=1002(test2),1003(testgroup)
test2@kinakuta:/tmp$ touch test2
test2@kinakuta:/tmp$ ls -la test2
-rw-r--r-- 1 test2 test2 0 nov 23 22:26 test2
root@kinakuta:/tmp# usermod -g testgroup test2
root@kinakuta:/tmp# su test2
test2@kinakuta:/tmp$ touch test2_1
test2@kinakuta:/tmp$ ls -la test2_1 
-rw-r--r-- 1 test2 testgroup 0 nov 23 22:27 test2_1
sinkmanu
sumber
0

Di Linux Anda harus memiliki sgid pada dir induk untuk mewarisi grup untuk file. (Meskipun Anda tidak perlu sgid di direktori pada sistem BSD.)

jirib
sumber
Pertanyaannya adalah tentang menetapkan kepemilikan ke file yang baru dibuat. Grup sudah ditetapkan dengan benar.
seorang coder