Tại sao các tập tin trong thư mục nhà của tôi được tạo ra có thể ghi được trên thế giới mặc dù có nhiều hạn chế hơn?


10

Tôi đã nhận ra rằng các quyền cho các tệp và thư mục mới hoạt động hơi lạ. Trước hết, umask dường như trả lời đúng:

$ umask
0002

Điều này có nghĩa là quyền truy cập đầy đủ cho người dùng của tôi và nhóm của tôi, không có quyền truy cập ghi cho phần còn lại của thế giới, không có quyền truy cập. Nhưng nếu tôi tạo một tệp trong $ HOME của mình, thì đây là giao diện:

$ ls -l testfile 
-rw-rw-rw- 1 robe robe 0 mar 16 12:58 testfile

tức là, cho phép truy cập viết cho tất cả mọi người. Điều tương tự cũng xảy ra với các thư mục:

$ ls -ld testdir
drwxrwxrwx 2 robe robe 6 mar 16 13:00 testdir

Tôi nghĩ rằng điều này giống như có umask 0000, không phải 0002. Tôi đã tìm kiếm tất cả / etc cho một số trường hợp thay đổi mặc định 0002 hoặc 0022, nhưng không tìm thấy. Đây là bản cài đặt CentOS 5.5 mặc định. Bất kỳ gợi ý về lý do tại sao điều này xảy ra?


3
Loại hệ thống tập tin là thư mục nhà của bạn trên?
mattdm

4
Và bạn đang tạo ra như thế nào testfiletestdir?
mattdm

3
@mattdm, bạn đã đúng khi nhấn mạnh: đó là XFS. Tôi quên chúng tôi có khối lượng riêng cho / nhà, / var và nhiều hơn nữa. Mặc dù tôi sử dụng XFS thường xuyên và đã không thấy hành vi này. Làm thế nào nó có thể liên quan?
rsuarez

2
acl có thể ghi đè umask cục bộ. Có thể thư mục của bạn đang được gắn kết với acl?
Faheem Mitha

3
Hmm, rõ ràng xfs luôn được kích hoạt acl. vì vậy nó có thể không hiển thị trong / etc / fstab của bạn. Hãy thử chạy getfacl trên các phân vùng / thư mục của bạn.
Faheem Mitha 17/03/2016

Câu trả lời:


3

Tôi không biết có đúng không khi trả lời câu hỏi của mình. Các biên tập viên, xin vui lòng, tư vấn về điều này nếu đây không phải là trường hợp. Cảm ơn trước.

Tôi nghĩ rằng tôi đã giải quyết được bí ẩn này: vấn đề là thiếu ACL mặc định trên các tập XFS. Đây là mục ACL cho / srv / sao lưu, một trong những thư mục bị ảnh hưởng:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Bất cứ khi nào tôi thực hiện "mkdir test" hoặc "touch testfile", nó sẽ đưa ra các quyền 777. Vì vậy, tôi đã làm điều này:

setfacl -m d:u::rwx /srv/backups

Rời khỏi ACL như thế này:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x

Trước đây (được cho là) ​​không có ACL, nhưng bây giờ thì có. Tôi có thể thấy dấu "+" được đính kèm với các quyền khi tôi thực hiện "ls -l". Và thật kỳ diệu, giờ đây "mkdir test" và "touch testfile" hoạt động với các quyền dự kiến:

# ls -l testfile 
-rw-r--r-- 1 root root 0 Dec 20 10:00 testfile
# ls -ld testdir
drwxr-xr-x+ 2 root root 6 Dec 20 10:00 testdir

Tôi không biết tại sao điều này xảy ra. Tôi đoán XFS không thích không có ACL mặc định và hành xử kỳ lạ khi nó xảy ra. Ngoài ra, tôi đã thấy điều này chỉ xảy ra trong CentOS, không phải trong Debian / Ubuntu. Có lẽ nó liên quan đến phiên bản XFS trong kernel hoặc đại loại như thế. Không ý kiến.

Dù sao, điều đó giải quyết trường hợp cho tôi. Cảm ơn rất nhiều cho tất cả các đề xuất :-)


Trả lời câu hỏi của riêng bạn là hoàn toàn chấp nhận được .
Keith Thompson

0

Cuộc gọi tạo có thể chỉ định rõ ràng các quyền được ưu tiên hơn umask.

Bạn chưa trả lời cách bạn tạo testfile,testdir.

Tạo tập tin bằng cách sử dụng touch testfile, sau đó liệt kê và đăng các quyền


Xin lỗi về sự chậm trễ. Tôi đã thử nghiệm bằng cách sử dụng "touchfile" và "mkdir testdir", với kết quả tương tự. umask dường như được đặt thành "0000", bởi vì chúng được tạo với quyền 777.
rsuarez

0

Hãy thử một getfacl .trong thư mục bạn đang tạo tệp thử nghiệm của mình, để xem liệu có một acl mặc định ảnh hưởng đến các quyền hay không.


1
Không, không có ACL mặc định. Nó dường như có liên quan đến XFS bằng cách nào đó, bởi vì nó chỉ xảy ra trong các khối XFS. Nhưng dù gì cũng cảm ơn.
rsuarez

-1

Chỉ cần tìm biến USERGROUPS_ENAB trên /etc/login.defs

Họ nhận xét để vô hiệu hóa nó # USERGROUPS_ENAB có

Nếu bạn cũng muốn thay đổi ô của người dùng hiện tại của mình, trước tiên bạn nên bỏ quy trình trước đó và họ thực hiện như sau.

ví dụ cho 027

tiếng vang "umask 027" >> ~ / .bashrc && pkill -KILL -u your_username_here

echo "umask 027" >> ~ / .bashrc lệnh này sẽ đặt giá trị mặc định umask cho hồ sơ của bạn

điều này sẽ buộc bạn phải đăng xuất

sau khi đăng nhập lại

chỉ cần chạy lại comand umask và xem nếu nó hoạt động cho bạn

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.