Thay đổi gid của một nhóm cụ thể


34

Tôi muốn thay đổi id nhóm của một nhóm cụ thể. Có rất nhiều giải pháp để thay đổi gid của một tập tin hoặc thư mục. Nhưng đó không phải là điều tôi muốn. Có cách nào làm được việc này không?

Câu trả lời:


42

GID là định danh chính của nhóm. Theo như hệ thống, một GID khác là một nhóm khác. Vì vậy, để thay đổi GID, bạn sẽ phải sửa đổi tất cả các vị trí mà GID được sử dụng.

Bạn nên tránh coi GID là quan trọng và sử dụng tên nhóm thay thế; bạn có thể thay đổi tên của một nhóm bằng một lệnh duy nhất (trên Linux groupmod -n NEW_GROUP_NAME OLD_GROUP_NAME:).

Tuy nhiên, nếu bạn thực sự muốn thay đổi GID, đây là cách:

  • Trước tiên, bạn có thể cần phải đăng xuất người dùng trong nhóm và tiêu diệt các quy trình có nhóm đó là nhóm hiệu quả, thực sự hoặc được lưu của họ.
  • Thay đổi mục trong cơ sở dữ liệu nhóm. Trên Linux, chạy groupmod -g NEWGID GROUPNAME. Trên các hệ thống khác, sử dụng công cụ quản trị của hệ thống đó hoặc vigrnếu có hoặc chỉnh sửa /etc/groupnếu có.
  • Thay đổi nhóm của tất cả các tệp trên hệ thống của bạn thuộc nhóm cũ.

    find / -gid OLDGID ! -type l -exec chgrp NEWGID {} \;
    
  • chgrp xóa cờ suid và sgid, khôi phục chúng.

  • Nếu bạn có bất kỳ kho lưu trữ nào sử dụng GID cũ, hãy xây dựng lại nó.
  • Nếu bạn có bất kỳ tệp cấu hình hoặc tập lệnh tham chiếu GID cũ, hãy cập nhật nó.
  • Khởi động lại tất cả các quy trình phải sử dụng GID mới.

2
Đề nghị sử dụng chgrp -h ...thay vì chgrp .... Nếu không -h, mục tiêu của bất kỳ liên kết tượng trưng nào sẽ thay đổi nhóm của nó.
Đánh dấu Plotnick

3
groupmodlấy tên làm đối số chính cho tôi ...groupmod -g NEWGID GROUPNAME
Matt

29

Cách dễ nhất là sử dụng groupmod -g <NEW_GID> <groupname>

Một cách khác là chỉnh sửa /etc/grouptrực tiếp. Trường thứ ba trong mỗi cột là gid.

Nếu nhóm thay đổi là nhóm chính của người dùng, cũng /etc/passwdcần phải được điều chỉnh : usermod -g <NEW_GID> <username>.


Điều này cũng sẽ ảnh hưởng đến gid của các tập tin? Ý tôi là, gid của tập tin và gid của nhóm sẽ thay đổi cùng một lúc?
mibzer

1
Không. Điều này sẽ chỉ thay đổi id của nhóm. Tệp / Thư mục giữ gid (hiện chưa được đặt tên) và cần được thay đổi riêng.
jofel

Ok cảm ơn bạn. Vì vậy, nếu tôi muốn thay đổi gid (tệp) của họ thành gid mới, tôi phải thực thi một lệnh khác. Có đúng không ? Điều đó sẽ tốt hơn nếu có cách thay đổi cả gid của tệp froup và gid của các tệp liên quan cùng một lúc.
mibzer

Tôi đã thêm lệnh khác vào câu trả lời của tôi. Nó không phải là vấn đề nếu tạm thời một gid được sử dụng mà không nằm trong / etc / group. Mỗi người dùng trong nhóm phải đăng nhập lại để có gid mới.
jofel

0

tìm / đường dẫn-nhóm foo -print0 | xargs -0 thanh chgrp


như tôi đã nói sẽ thay đổi gid của tập tin. Nhưng đó không phải là ý tôi. Tôi muốn thay đổi gid của một nhóm không phải là một tập tin.
mibzer

ok, tôi đã nhầm lẫn, sau đó 'vi / etc / group' :)
jirib
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.