2013-02-25 26 views
11

Tôi đã nhận thấy rằng khi tôi kéo từ repo github của tôi trên một máy chủ phát triển (Red Hat) quyền sở hữu các tập tin thay đổi sau khi kéo xong. Các tập tin .git được sử dụng để được sở hữu bởi tôi nhưng sau đó tôi nhận thấy rằng nó sẽ viết các tập tin như tôi và tôi cần nó để viết các tập tin như một người dùng khác nhau. Vì vậy, tôi đã thay đổi quyền sở hữu của thư mục .git.Làm thế nào để giữ git khỏi việc thay đổi quyền sở hữu tập tin

Tôi tình cờ gặp git config core.filemode điều đó đúng. Tôi kể từ khi đã đặt nó sai. Tôi đã không thấy một sự khác biệt sau khi thiết lập này thành sai. Tôi nên làm gì để giữ quyền sở hữu tệp của mình khỏi thay đổi.

Điều này không xảy ra với tôi cục bộ.

Trả lời

7

Git không phải là máy chủ triển khai. Nó viết các tập tin như bất cứ ai viết các tập tin, đó sẽ là bạn. Nếu bạn cần quyền và quyền sở hữu thiết lập, bạn có thể nấu một móc sau khi kiểm tra và có nó đọc một tập tin cấu hình hoặc một cái gì đó để quyết định phải làm gì tiếp theo.

+0

Từ kinh nghiệm của tôi với điều này tôi không thể nói đó là hoàn toàn đúng. Nếu tôi thay đổi quyền sở hữu của các tệp trong thư mục và sau đó chạy 'git pull', tôi sẽ nhận được các chủ sở hữu khác nhau cho các tệp khác nhau. Một số gốc và một số tôi và một số không cảm động. – user2108258

+2

git không lưu trữ quyền truy cập tệp để mọi hành vi bạn gặp phải không liên quan trực tiếp đến git dưới dạng VCS. – wRAR

+0

Thư mục .git nên thuộc sở hữu của ai? Người dùng của tôi trên máy chủ là người tôi sử dụng để kéo từ Github. Tuy nhiên nếu tôi sử dụng bản thân của tôi khi người dùng các tập tin được ghi vào đĩa như tôi. Nhưng tôi muốn chúng được sở hữu bởi máy chủ web. – user2108258

20

Nếu nó đủ để bảo vệ nhóm, bạn có thể đặt cờ setgid trên các thư mục. Xem http://en.wikipedia.org/wiki/Setuid

Thiết lập sự cho phép setgid trên một thư mục ("chmod g + s") gây ra file mới và thư mục con được tạo ra bên trong nó kế thừa ID nhóm của nó, chứ không phải là nhóm chính ID của người dùng tạo các tập tin (ID chủ sở hữu không bao giờ bị ảnh hưởng, chỉ ID nhóm). Các thư mục con mới được tạo ra kế thừa bit setgid. Do đó, điều này cho phép một không gian làm việc được chia sẻ cho một nhóm mà không có sự bất tiện khi yêu cầu các thành viên nhóm thay đổi rõ ràng nhóm hiện tại của họ trước khi tạo các tệp hoặc thư mục mới. Lưu ý rằng việc thiết lập quyền setgid trên một thư mục chỉ ảnh hưởng đến ID nhóm của các tệp mới và các thư mục con được tạo sau khi bit setgid được đặt và không được áp dụng cho các thực thể hiện có. Thiết lập các bit setgid trên thư mục con hiện có phải được thực hiện bằng tay, với một lệnh như sau:

[[email protected]]# find /path/to/directory -type d -exec chmod g+s '{}' \;

+2

Giải pháp tốt - Luôn muốn xem giải pháp cho vấn đề hơn là bình luận dựa trên những gì phần mềm cụ thể không - Sử dụng bit gid là chiến thắng dễ dàng ở đây. –