it-swarm-vi.com

Làm thế nào để áp dụng thay đổi của các nhóm người dùng mới được thêm vào mà không cần phải khởi động lại?

Giả sử tôi đã đăng nhập với người dùng takpar:

[email protected]:/$

Với quyền root, tôi đã thêm takpar với tư cách là thành viên của nhóm webdev bằng cách sử dụng:

# usermod -a -G webdev takpar

Nhưng có vẻ như nó chưa được áp dụng, vì ví dụ tôi không thể vào thư mục của webdev có quyền đọc cho nhóm:

400169 drwxr-x--- 3 webdev webdev 4.0K 2011-08-15 22:34 public_html

[email protected]:/home/webdev/$ cd public_html/
bash: cd: public_html/: Permission denied

Nhưng sau khi khởi động lại, tôi có quyền truy cập như tôi mong đợi. Vì loại thay đổi nhóm này là trong thói quen của tôi, có cách nào để áp dụng thay đổi mà không cần khởi động lại không?

Trả lời Dường như không có cách nào để làm cho phiên hiện tại biết nhóm mới, ví dụ: trình quản lý tệp sẽ không hoạt động với các thay đổi mới. Nhưng đăng nhập lại sẽ thực hiện công việc. Lệnh su cũng thích hợp cho các lệnh tạm thời trong phiên hiện tại.

41
Alexar

Giải pháp cục bộ: sử dụng su yourself để đăng nhập lại. Trong phiên mới, bạn sẽ được coi là thành viên của nhóm.


Các trang dành cho newgrpsg cũng có thể được quan tâm để thay đổi id nhóm hiện tại của bạn (và đăng nhập vào một nhóm mới):

  • Để sử dụng id nhóm (và đặc quyền) của webdev trong Shell hiện tại của bạn, hãy sử dụng:

     newgrp webdev
    
  • Để bắt đầu một lệnh với một số id nhóm (và giữ các đặc quyền hiện tại trong Shell của bạn), hãy sử dụng:

     sg webdev -c "command"
    

    (sg giống như su nhưng dành cho các nhóm và nó sẽ hoạt động mà không cần mật khẩu nhóm nếu bạn được liệt kê là thành viên của nhóm trong dữ liệu của hệ thống)

59
Stéphane Gimenez

Hệ thống khởi động lại là quá mức cần thiết, thậm chí đăng xuất và đăng nhập là không cần thiết nếu bạn sử dụng gpasswd.

Bạn có thể thêm nhóm takpar vào webdev bằng cách sử dụng:

$ gpasswd -a takpar webdev

Bạn có thể kiểm tra tư cách thành viên nhóm bằng cách sử dụng getent group {name} chỉ huy:

$ getent group webdev
webdev:x:1008:webdev,takpar

mà nên giống như cat /etc/group | grep webdev. Để hoàn thiện tại đây id đầu ra từ takpar Phiên Shell:

$ id takpar
uid=1007(takpar) gid=1007(takpar) groups=1007(takpar),1008(webdev)
3
Tombart
id webdev

dường như sai ở đây - bạn muốn biết về id, takpar, không phải webdev.

Nếu bạn so sánh kết quả đầu ra của idid takpar, bạn sẽ nhận thấy rằng cái trước chưa thể hiện sự thay đổi, trong khi cái sau cho thấy nó thay đổi. Tại sao? Điều này là do id hiển thị các nhóm của quy trình hiện tại. Nếu bạn đăng xuất và đăng nhập trở lại, hoặc thậm chí chỉ mở một cửa sổ đầu cuối mới, bạn sẽ thấy sự thay đổi mà không cần khởi động lại.

1
glglgl