Làm thế nào để có toàn quyền kiểm soát umask / PAM / quyền?


11

// Cập nhật ngày 8 tháng 2 - Tóm tắt các vấn đề nổi bật:

  • Làm thế nào để umask thư mục khác nhau từ các tập tin?
  • Làm thế nào để umask trên Nautilus sao chép / dán?
  • Làm cách nào để đặt umask cho SSHFS?

TÌNH HÌNH CỦA CHÚNG TÔI

Một số người từ công ty chúng tôi đăng nhập vào một máy chủ và tải lên các tập tin. Tất cả đều cần có khả năng tải lên và ghi đè lên cùng một tệp. Họ có tên người dùng khác nhau, nhưng tất cả đều thuộc cùng một nhóm. Tuy nhiên, đây là một máy chủ internet, vì vậy người dùng "khác" nên có (nói chung) chỉ truy cập chỉ đọc. Vì vậy, những gì tôi muốn có là các quyền tiêu chuẩn:

tập tin: 664
thư mục: 771

Mục tiêu của tôi là tất cả người dùng không cần phải lo lắng về quyền. Máy chủ phải được cấu hình theo cách mà các quyền này áp dụng cho tất cả các tệp và thư mục, mới được tạo, sao chép hoặc ghi đè. Chỉ khi chúng tôi cần một số quyền đặc biệt, chúng tôi mới thay đổi thủ công.

Chúng tôi tải các tệp lên máy chủ bằng SFTP-ing trong Nautilus, bằng cách gắn máy chủ bằng sshfs và truy cập vào Nautilus như thể đó là một thư mục cục bộ và SCP-ing trong dòng lệnh. Điều đó về cơ bản bao gồm tình hình của chúng tôi và những gì chúng tôi nhằm làm.

Bây giờ, tôi đã đọc nhiều điều về chức năng umask đẹp. Từ những gì tôi hiểu umask (cùng với PAM) sẽ cho phép tôi thực hiện chính xác những gì tôi muốn: đặt quyền tiêu chuẩn cho các tệp và thư mục mới. Tuy nhiên, sau nhiều giờ đọc và dùng thử, tôi vẫn không làm cho nó hoạt động. Tôi nhận được nhiều kết quả bất ngờ. Tôi thực sự muốn có được một nắm vững của umask và có nhiều câu hỏi chưa được trả lời. Tôi sẽ đăng những câu hỏi dưới đây, cùng với những phát hiện của tôi và một lời giải thích về những thử nghiệm của tôi dẫn đến những câu hỏi này. Cho rằng nhiều điều có vẻ sai, tôi nghĩ rằng tôi đang làm một số điều sai. Vì vậy, có rất nhiều câu hỏi.

LƯU Ý: Tôi đang sử dụng Ubuntu 9.10 và do đó không thể thay đổi sshd_config để đặt ô cho máy chủ SFTP. Đã cài đặt SSH OpenSSH_5.1p1 Debian-6ubfox2 <yêu cầu OpenSSH 5.4p1. Vì vậy, ở đây đi các câu hỏi.

1. TÔI CÓ CẦN PHỤC HỒI CHO THAY ĐỔI PAM ĐỂ HIỆU QUẢ KHÔNG?

Hãy bắt đầu với điều này. Có rất nhiều tệp liên quan và tôi không thể tìm ra cái gì và cái gì không ảnh hưởng đến mọi thứ, bởi vì tôi không biết liệu tôi có phải khởi động lại toàn bộ hệ thống để thay đổi PAM có hiệu lực hay không. Tôi đã làm như vậy sau khi không thấy kết quả mong đợi, nhưng điều này có thực sự cần thiết? Hoặc tôi có thể đăng xuất khỏi máy chủ và đăng nhập lại không và các chính sách PAM mới có hiệu quả không? Hoặc có một số chương trình 'PAM' để tải lại?

2. CÓ MỘT NỀN TẢNG ĐỂ THAY ĐỔI R ANG ẢNH HƯỞNG ĐẾN TẤT CẢ CÁC NGƯỜI SỬ DỤNG CHO TẤT CẢ CÁC PHẦN?

Vì vậy, cuối cùng tôi đã thay đổi NHIỀU tệp, khi tôi đọc NHIỀU thứ khác nhau. Tôi đã kết thúc việc thiết lập ô trong các tệp sau:

~/.profile -> umask=0002
~/.bashrc -> umask=0002
/etc/profile -> umask=0002
/etc/pam.d/common-session -> umask=0002
/etc/pam.d/sshd -> umask=0002
/etc/pam.d/login -> umask=0002

Tôi muốn thay đổi này áp dụng cho tất cả người dùng, vì vậy một số loại thay đổi toàn hệ thống sẽ là tốt nhất. Nó có thể đạt được?

3. SAU TẤT CẢ, ĐIỀU NÀY UMASK, CÓ LÀM VIỆC KHÔNG?

Vì vậy, sau khi thay đổi umask thành 0002 ở mọi nơi có thể, tôi chạy thử nghiệm.

------------ SCP -----------

KIỂM TRA 1:

scp testfile (which has 777 permissions for testing purposes) server:/home/
testfile                                      100%    4     0.0KB/s   00:00   

Hãy kiểm tra quyền:

user@server:/home$ ls -l
total 4
-rwx--x--x 1 user uploaders 4 2011-02-05 17:59 testfile (711)

CẬP NHẬT: đã sửa bằng cách CHỈ cài đặt ô trong pam.d / phiên chung (xem bình luận)

--------- SSH ------------

KIỂM TRA 2:

ssh server
user@server:/home$ touch anotherfile
user@server:/home$ ls -l
total 4
-rw-rw-r-- 1 user uploaders 0 2011-02-05 18:03 anotherfile (664)

-------- SFTP -----------

Nautilus: sftp: // máy chủ / nhà /

Sao chép và dán tệp mới từ máy khách sang máy chủ (777 trên máy khách)

KIỂM TRA 3:

user@server:/home$ ls -l
total 4
-rwxrwxrwx 1 user uploaders 3 2011-02-05 18:05 newfile (777)

Tạo một tệp mới thông qua Nautilus. Kiểm tra quyền truy cập tệp trong thiết bị đầu cuối:

KIỂM TRA 4:

user@server:/home$ ls -l
total 4
-rw------- 1 user uploaders    0 2011-02-05 18:06 newfile (600)

Ý tôi là ... CÁI GÌ vừa xảy ra ở đây?! Chúng ta sẽ nhận được 644 mỗi lần. Thay vào đó, tôi nhận được 711, 777, 600, và sau đó là 644. Và 644 chỉ đạt được khi tạo một tệp mới, trống thông qua SSH, đây là tình huống ít xảy ra nhất.

Vì vậy, tôi đang hỏi, liệu umask / pam có hoạt động không?

CẬP NHẬT: kiểm tra cố định 4 bằng cách CHỈ cài đặt ô trong pam.d / phiên chung (xem bình luận)

4. VÌ SAO NÓ CÓ Ý NGH UMA ĐẾN UMASK SSHFS?

Đôi khi chúng tôi gắn kết một máy chủ cục bộ, sử dụng sshfs. Rất hữu ích. Nhưng một lần nữa, chúng tôi có vấn đề quyền.

Đây là cách chúng tôi gắn kết:

sshfs -o idmap=user -o umask=0113 user@server:/home/ /mnt

LƯU Ý: chúng tôi sử dụng umask = 113 vì rõ ràng, sshfs bắt đầu từ 777 thay vì 666, vì vậy với 113 chúng tôi nhận được 664 là quyền cho phép tệp mong muốn.

Nhưng điều bây giờ xảy ra là chúng tôi thấy tất cả các tệp và thư mục như thể chúng là 664. Chúng tôi duyệt trong Nautilus tới / mnt và:

  • Nhấp chuột phải -> Tệp mới (tệp mới) --- KIỂM TRA 5
  • Nhấp chuột phải -> Thư mục mới (newfolder) --- TEST 6
  • Sao chép và dán tệp 777 từ máy khách cục bộ của chúng tôi --- TEST 7

Vì vậy, hãy kiểm tra dòng lệnh:

user@client:/mnt$ ls -l
total 8
-rw-rw-r-- 1 user 1007    3 Feb  5 18:05 copyfile (664)
-rw-rw-r-- 1 user 1007    0 Feb  5 18:15 newfile (664)
drw-rw-r-- 1 user 1007 4096 Feb  5 18:15 newfolder (664)

Nhưng này, hãy kiểm tra cùng thư mục này ở phía máy chủ:

user@server:/home$ ls -l
total 8
-rwxrwxrwx 1 user uploaders    3 2011-02-05 18:05 copyfile (777)
-rw------- 1 user uploaders    0 2011-02-05 18:15 newfile (600)
drwx--x--x 2 user uploaders 4096 2011-02-05 18:15 newfolder (711)

Gì?! Các quyền của tệp REAL rất khác so với những gì chúng ta thấy trong Nautilus. Vì vậy, cái ô này trên sshfs chỉ tạo một 'bộ lọc' hiển thị quyền truy cập tệp không thực? Và tôi đã cố mở một tệp từ một người dùng khác nhưng cùng nhóm có 600 quyền thực sự nhưng 644 quyền 'giả' và tôi vẫn không thể đọc được, vậy bộ lọc này có gì hay ??

5. UMASK LÀ TẤT CẢ VỀ PHIM. NHƯNG GÌ VỀ GIÁM ĐỐC?

Từ các thử nghiệm của tôi, tôi có thể thấy rằng các ô đang được áp dụng bằng cách nào đó cũng ảnh hưởng đến các quyền của thư mục. Tuy nhiên, tôi muốn các tệp của mình là 664 (002) và các thư mục của tôi là 771 (006). Vì vậy, nó có thể có một umask khác nhau cho các thư mục?

6. PERHAPS UMASK / PAM LÀ THỰC SỰ COOL, NHƯNG UBUNTU CÓ CHỈ LÀ BUGGY?

Một mặt, tôi đã đọc các chủ đề của những người đã thành công với PAM / UMASK và Ubuntu. Mặt khác, tôi đã tìm thấy nhiều lỗi cũ hơn và mới hơn liên quan đến umask / PAM / fuse trên Ubuntu:

Vì vậy, tôi không biết những gì để tin nữa. Tôi có nên từ bỏ? ACL sẽ giải quyết tất cả các vấn đề của tôi? Hay tôi lại gặp vấn đề khi sử dụng Ubuntu?

Một lời cảnh báo với các bản sao lưu sử dụng tar. Các bản phân phối Red Hat / Centos hỗ trợ acls trong chương trình tar nhưng Ubuntu không hỗ trợ acls khi sao lưu. Điều này có nghĩa là tất cả các acls sẽ bị mất khi bạn tạo bản sao lưu.

Tôi rất sẵn lòng nâng cấp lên Ubuntu 10.04 nếu điều đó cũng giải quyết được vấn đề của tôi, nhưng trước tiên tôi muốn hiểu những gì đang xảy ra.

Câu trả lời:


3

Nhiều thứ có thể xảy ra ở đây.

Suy nghĩ đầu tiên:

  • có, thay đổi pam.d có hiệu lực ngay lập tức
  • /etc/pam.d/common-session là nơi tốt nhất để đặt mặc định umask
  • mọi pam.d umask sẽ bị ghi đè bởi bất kỳ mục nào trong .bashrc,
    nhưng .bashrcchỉ được đọc trong một số trường hợp nhất định (vỏ tương tác, không đăng nhập)
  • testfile (711) rất lạ
    • Làm thế nào được /homegắn kết, và bạn đang sử dụng ACL?
      (ví dụ: làm gì ls -ld /homegetfacl /homein?)
    • đã testfileđã tồn tại trước khi bạn đã làm bản sao, bởi vì scpsẽ không thay đổi các điều khoản trên một tập tin đã tồn tại (trừ khi bạn sử dụng các -pcờ)
  • Nautilus được biết là tạo các tệp theo một cách khác, không biết tại sao hoặc quy tắc là gì
  • umask=0113 có thể sẽ gây ra vấn đề
  • máy chủ và máy khách đang chạy cùng một hệ điều hành?
    ví dụ: nếu máy khách có ACL được kích hoạt hoặc là Cygwin, hành vi có thể khác
  • cách tốt nhất để buộc các quyền lành mạnh là sử dụng các ACL mặc định, chính xác bởi vì, như bạn đã khám phá, umaskcó thể bị ghi đè bởi người dùng trong .bashrc.bash_profile.

Cập nhật:

  • umask=0113 cho sshfs là sai.
    1. Hãy thử gắn mà không chỉ định một umask
    2. Tạo một tệp mới bên trong điểm gắn kết bằng cách sử dụng touch.
    3. Bạn sẽ thấy nó chỉ được ví dụ -rw-r--r--, không có xbit
    4. Bằng cách che giấu xcác bit, bạn có thể phá vỡ các thư mục
      và trình biên dịch có thể không thể tạo các tệp thực thi đúng cách

Cách giải quyết:

Nếu chúng tôi không thể nghĩ ra bất cứ điều gì tốt hơn, bạn có thể sử dụng famhoặc gaminđể xem các tệp mới được tạo và sửa các quyền trên chúng hoặc thậm chí chỉ là một tập lệnh chạy định kỳ và đặt quyền trên tất cả các tệp.


Cảm ơn! OK, vì vậy tôi đã xóa TẤT CẢ các cài đặt umask ngoại trừ pam.d / phiên chung. Điều này giải quyết một số vấn đề! Thử nghiệm 1 (SCP) và Thử nghiệm 4 (Tệp mới trong Nautilus) hiện hoạt động tốt. Rào cản hiện đang sao chép một tệp với bất kỳ quyền nào trong Nautilus sang máy chủ (Kiểm tra 3 - vẫn là 777 thay vì 664). Và các vấn đề thư mục. Cả máy chủ và máy khách đều là Ubuntu (9,10 so với 10,10) và không có ACL bổ sung nào được bật.

Âm thanh như sao chép với Nautilus đang duy trì các quyền như cp -phoặc scp -pmuốn.
Mikel

Bất cứ ý tưởng làm thế nào để thay đổi điều này ??

Bạn muốn có hành vi gì? Bạn có thể đặt quyền mặc định cho các tệp mới bằng cách sử dụng ACL mặc định. Nautilus sẽ tôn vinh ACL mặc định. Xem vanemery.com/Linux/ACL/linux-acl.html để biết tổng quan và suse.de/~agruen/acl/linux-acls/online để biết tất cả các chi tiết.
Mikel

Lưu ý rằng ACL mặc định không thực thi một bộ quyền tối đa, họ chỉ làm cho các quyền đó trở thành mặc định. cp -p, scp -pvà sao chép qua Nautilus vẫn sẽ cố gắng tạo các quyền của bản sao giống như tệp được sao chép.
Mikel

0

Điều này không liên quan đến PAM / umask, nhưng nó có thể hữu ích cho bạn.

Nếu bạn setgid một thư mục, sau đó tất cả các file và thư mục được tạo ra bên trong nó được tự động gán vào nhóm của mình.

root@ricarda ~ # mkdir hello      
root@ricarda ~ # chown :users hello 
root@ricarda ~ # chmod g+s hello
root@ricarda ~ # ls -l |grep hello 
drwxr-sr-x. 2 root users  4096 Feb  7 04:05 hello
root@ricarda ~ # touch hello/some_file
root@ricarda ~ # mkdir hello/some_dir
root@ricarda ~ # ls -l hello/       
total 4
drwxr-sr-x. 2 root users 4096 Feb  7 04:16 some_dir
-rw-r--r--. 1 root users    0 Feb  7 04:06 some_file

Cảm ơn! Tôi không biết về điều này. Nó không giải quyết các vấn đề cho phép, nhưng nó thực sự hữu ích!


0

ACL nên hoạt động tốt cho bạn.

Đặt ACL mặc định trên tất cả các thư mục cho nhóm, sau đó sẽ được kế thừa bởi tất cả các tệp và thư mục trong tương lai.

Một cái gì đó như setfacl -m d:g:uploaders:rwxnên làm việc.

Để sửa các quyền hiện có của bạn:

find /shared/folder -type d -exec setfacl -m d:g:uploaders:rwx {} \;
find /shared/folder -type f -exec setfacl -m g:uploaders:rw {} \;

Có vẻ như mặc dù nếu "bảo tồn" được đặt khi tệp được sao chép, ACL mặc định không hoạt động. Trong trường hợp đó, tôi chỉ có thể đề xuất chạy các lệnh find trong cron hoặc theo dõi hệ thống tập tin để thay đổi.

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.