Âm thanh này giống như người dùng bạn đang chạy có nhóm mặc định được đặt thành yuri
. Bạn có thể xác nhận điều này như vậy:
$ id -a
uid=1000(saml) gid=1000(saml) groups=1000(saml),10(wheel),989(wireshark)
UID của tài khoản của bạn là thế này: uid=1000(saml)
trong khi nhóm mặc định là git=1000(saml)
và bất kỳ nhóm thứ cấp nào sau đó.
LƯU Ý: Nếu bạn muốn bản sao git có quyền sở hữu cụ thể, thì bạn có ít nhất 2 tùy chọn.
Lựa chọn 1
Đặt thư mục mẹ với các quyền như bạn muốn:
$ mkdir topdir
$ chgrp http topdir
$ chmod g+s topdir
$ cd topdir
$ git clone ....
Điều này buộc thư mục topdir
phải thực thi bất kỳ thư mục con nào bên dưới nó để http
áp dụng nhóm . Điều này sẽ hoạt động với quy mô lớn nhưng có thể dẫn đến các vấn đề, vì nếu bạn di chuyển tệp vào không gian làm việc git clone này, các tệp đó sẽ không có các nhóm của chúng được thực thi bởi các thay đổi được thực hiện ở trên.
Lựa chọn 2
Trước khi thực hiện công việc, hãy thay đổi nhóm mặc định của bạn thành http
như vậy:
$ newgrp http
$ git clone ...
Phương pháp này sẽ buộc bất kỳ tệp mới nào được tạo để đặt nhóm của chúng http
thay vì nhóm mặc định thông thường của bạn yuri
, nhưng điều này sẽ chỉ hoạt động miễn là bạn nhớ thực hiện newgrp
trước khi làm việc trong không gian làm việc này.
Sự lựa chọn khác
Nếu cả hai điều này có vẻ chấp nhận được, bạn có thể thử sử dụng ACL thay vào thư mục git workspace. Những điều này được thảo luận trong nhiều câu hỏi và trả lời trên trang web này, chẳng hạn như trong câu hỏi và trả lời này có tiêu đề: Bắt các tệp mới để kế thừa quyền của nhóm trên Linux .
newgrp
. Sau đó, nó có thay đổi nhóm cho vỏ hiện tại không? Và cuối cùng, vấn đề là chỉ tạo các tệp / thư mục cụ thể có thể truy cập để ghi bởi máy chủ web. Rốt cuộc, tôi có lẽ nên sửa chúng bằng tay, hoặc thiết lập một sốgit
hook ...