2012-04-19 33 views
58

Tôi đang làm việc trong phòng thí nghiệm nơi chúng tôi đang chạy Linux (Debian và Ubuntu). Tên người dùng và tên nhóm được xử lý bởi NIS và yp. Chúng tôi có một số người dùng phổ biến mà mọi người đều có quyền truy cập vào đó chạy thử nghiệm và sau đó chúng tôi đều có người dùng riêng của mình ngoài ra còn có một nhóm chung mà tất cả chúng tôi đều là thành viên.Cách đặt umask rộng của hệ thống?

Làm thế nào tôi có thể thực hiện sao cho tất cả các tệp và thư mục trên ổ đĩa chia sẻ /home/ (NFS) được đọc/ghi (/ thực thi) bởi người dùng/nhóm? Về cơ bản những gì tôi muốn là

chmod -R 664 /home 
chgrp -R commongroup /home 

hoặc tương đương umask 0002.

Nhưng việc chạy các lệnh trên chỉ sửa các tệp hiện tại trong các thư mục và umask chỉ hoạt động đối với người dùng đơn lẻ và phải được chạy mỗi lần người dùng đăng nhập tức là. trong tập tin .bashrc (và điều này sẽ làm việc cho các chế độ thay đổi thông qua gnome?). Có một lệnh hoặc thiết lập rộng của hệ thống mà tôi có thể sử dụng để đảm bảo rằng nhóm commongroup của chúng tôi có quyền ghi vào các tệp phổ biến không?

+2

tôi tin rằng bạn có thể sử dụng 'setfacl' đệ quy set (và duy trì) thiết lập quyền truy cập vào một thư mục. http://linuxcommand.org/man_pages/setfacl1.html – tMC

+2

Bạn * không * muốn 'chmod -R 644/home': điều này sẽ loại bỏ bit eXecute khỏi các thư mục, khiến chúng không thể tìm kiếm được. – ephemient

+0

Theo dõi nhận xét của tMC: Nếu bạn muốn điều này trên các thư mục cụ thể (và tùy chọn subdirs) và không ràng buộc nó với tất cả (!) Tập tin và thư mục thuộc về một người dùng cụ thể, sau đó sử dụng ACLs. Dưới đây là [câu trả lời hay] (http://stackoverflow.com/a/6550059/923794) cho một câu hỏi tương tự – cfi

Trả lời

90

Cả Debian và Ubuntu đều có pam_umask. Điều này cho phép bạn cấu hình umask trong /etc/login.defs và họ đã áp dụng trên toàn hệ thống, bất kể như thế nào người dùng đăng nhập.

Để kích hoạt nó, bạn có thể cần thêm một dòng vào /etc/pam.d/common-session đọc

session optional pam_umask.so 

hoặc nó có thể đã được kích hoạt. Sau đó chỉnh sửa /etc/login.defs và thay đổi dòng UMASK để

UMASK   002 

(mặc định là 022).

Lưu ý rằng người dùng vẫn có thể ghi đè lên umask tại của mình ~/.profile hoặc ~/.bashrc hay tương tự, nhưng (ít nhất là trên Debian và Ubuntu cài đặt mới) không nên có bất kỳ trọng của umask trong /etc/profile hoặc /etc/bash.bashrc. (Nếu có, chỉ cần xóa chúng.)

+3

Trong 12.04 nó được kích hoạt theo mặc định. –

+6

debian 7 không ** không ** tùy chọn này được bật theo mặc định. – earthmeLon

+0

cách đặt umask tùy chỉnh cho một người dùng cụ thể? – brauliobo

20

Trước tiên, hãy đảm bảo rằng gói pam-modules được cài đặt. Điều đó làm cho mô-đun pam_umask có sẵn. Sau đó, hãy chắc chắn rằng /etc/pam.d/common-session có một dòng có dạng

session optional pam_umask.so 

để pam_umask được kích hoạt.

Bây giờ, theo trang pam_umask người, umask mặc định được xác định lúc đăng nhập bằng cách kiểm tra từng địa điểm sau, theo thứ tự:

  1. Một mặc định cho toàn hệ thống cứng đặt trong /etc/pam.d/common-session. Để thiết lập nó theo cách này, thay thế dòng từ tập tin nêu trên với điều này:

    session optional pam_umask.so umask=002 
    
  2. Một mục nhập trong lĩnh vực GECOS của người dùng cá nhân trong /etc/passwd ghi đè một mặc định mềm trên toàn hệ thống cho người dùng cụ thể.Tạo mục nhập bằng cách sử dụng lệnh có dạng:

    chfn --other='umask=002' username 
    
  3. Một dòng có dạng UMASK=002 trong /etc/default/login (bạn có thể cần phải tạo tập tin đó) thiết lập mặc định cho toàn hệ thống phần mềm.

  4. Giá trị UMASK từ /etc/login.defs. Giá trị đó cũng được sử dụng cho một cái gì đó khác (tính các quyền trên thư mục chính của người dùng mới đang được tạo; xem các nhận xét trong /etc/login.defs để biết thêm chi tiết). Vì vậy, tốt nhất nên tránh dựa vào điều này để đặt umask mặc định cho thông tin đăng nhập thông thường, để giữ mọi thứ riêng biệt.

Vì vậy, trong trường hợp của bạn, bạn nên cấu hình này hoặc trong /etc/default/login nếu bạn muốn nó có thể ghi đè lên các thiết lập cho người dùng cá nhân, hoặc thiết lập nó trong /etc/pam.d/common-session như đã mô tả ở trên nếu bạn muốn nó được như vậy Cho tất cả người dùng.

Lưu ý rằng ngay cả với cài đặt mặc định cứng, người dùng vẫn có thể ghi đè theo mặc định umask theo cách thủ công bằng cách sử dụng lệnh umask tại dấu nhắc trình bao hoặc trong tập lệnh .profile.

Cũng lưu ý rằng cách Unix truyền thống để đặt mặc định này là thêm lệnh umask vào /etc/profile và điều đó cũng sẽ vẫn hoạt động. Nhưng nó không phải là cách được đề nghị để cấu hình những thứ như thế này trên Ubuntu, bởi vì đó là khó khăn để quản lý đáng tin cậy bằng cách sử dụng kịch bản và GUI.

Lưu ý, rất tiếc, điều này stopped working for any application which has been converted to launch via systemd --user.

+1

Có các tùy chọn 'USERGROUPS_ENAB' có thể thay đổi' 022' thành '002' trong một số trường hợp. –

+0

Trong Ubuntu Server 16.04.1, gói 'libpam-modules' chứa mô đun' pam_umask'. (Lệnh 'dpkg-query --search/lib/x86_64-linux-gnu/security/pam_umask.so' in' libpam-modules: amd64:/lib/x86_64-linux-gnu/security/pam_umask.so'.) –

+3

'/ etc/defaults' không tồn tại trong Ubuntu Server 16.04.1. Đường dẫn chính xác có thể là '/ etc/default/login' không? –

0

Để khớp với quyền của nhóm, trên máy chủ, bit gid được đặt (một trong các "bit dính") có thể được coi là tùy chọn bổ sung.

Nếu thư mục chia sẻ được liên kết với nhóm, tung ra (sử dụng root): chmod -R 2775 folder_for_the_group có thể thú vị.

Đối với bất kỳ tệp mới nào được tạo trong thư mục, người tạo sẽ là chủ sở hữu nhưng nhóm sẽ tự động được chỉ định (miễn là người sáng tạo là một phần của nhóm). lưới

Quyền bây giờ xuất hiện như -rwxrwsr-x +