Không thể tạo tệp tạm thời cho tài liệu ở đây: Quyền bị từ chối


11

[Lưu ý: Q tương tự này liên quan đến thông báo lỗi bash tương tự. Nó được đánh dấu là bản sao của Q khác này . Nhưng vì tôi đã tìm thấy một nguồn rất khác cho lỗi này, tôi sẽ trả lời Q của riêng tôi bên dưới.]

Dòng script bash hoạt động trước đây

while ... do ... done <<< "$foo"

một ngày bắt đầu tạo ra thông báo lỗi này:

không thể tạo tệp tạm thời cho tài liệu ở đây: Quyền bị từ chối


Trong trường hợp của tôi, nó đã được kích hoạt IMA ( ima_policy=appraise_tcbtham số kernel) với sự kết hợp /tmpkhông tồn tại tmpfs. Nhưng đây không thực sự là một trường hợp phổ biến :).
pevik

Câu trả lời:


10

Tôi đã thêm umask 777trước chuỗi ở đây. Sau khi loại bỏ các ô, lỗi đã biến mất. Vì vậy, bài học rút ra: Có một tệp tạm thời được tạo cho chuỗi ở đây ( <<<) và điều này có liên quan đến tài liệu ở đây ( <<) và bạn phải có một bộ ô phù hợp để chúng hoạt động.



Nó cũng ảnh hưởng đến zsh và mksh, không phải ksh93 cũng không phải tcsh. Không phải dash, RC, es, cũng không phải yash mà là vì họ sử dụng các đường ống thay vì các tệp tạm thời.
Stéphane Chazelas

Trong trường hợp ksh93 và tcsh, nó hoạt động vì chúng chỉ mở tệp một lần trong chế độ đọc + ghi, ghi dữ liệu và sau đó tìm kiếm lại từ đầu.
Stéphane Chazelas

6

Trong trường hợp của tôi, tôi đã thay đổi các /tmpquyền mặc định của thư mục (Tôi nghĩ rằng tôi đã thay đổi do nhầm lẫn thành 0777).

Giải pháp là hoàn nguyên nó về /tmpquyền mặc định , đó là 1777 theo số bát phân (1 = bit dính, 7 = R + W + X).

Vì vậy, trong một tóm tắt sudo chmod -R 1777 /tmpnên khắc phục vấn đề.


Tôi có thể thấy nơi mà thực sự sẽ gây ra vấn đề. Có, bit dính rất quan trọng đối với / tmp.
Chế độ xem hình elip

2
Bạn có thể không muốn -Rcờ. Không có lý do để thay đổi các tập tin của mọi người dưới đây /tmpđể mọi người có thể đọc-ghi-thực thi. Một số trong những tệp đó nhạy cảm với bảo mật của người dùng của bạn.
keithpjcar

1

kinh nghiệm cá nhân của tôi với vấn đề này là với umaskký hiệu nhị phân, giống như @ eliptical-view. Tôi cho rằng viết:

umask 0644 

sẽ cho tôi đọc và ghi quyền truy cập vào các tệp tôi đã tạo, có gì sai

Sau khi tôi thay đổi umaskthành

umask 0022

lỗi biến mất.

Trên thực tế, ký hiệu nhị phân nên được hiểu là phần bù nhị phân.

Vì vậy, trong umaskmặt nạ bên dưới khi một người viết 0cho chủ sở hữu tệp, người dùng này sẽ có toàn quyền truy cập vào các tệp mà họ tạo. Giá trị 2có nghĩa là bit thứ 2 bị che, nghĩa là trong trường hợp này, theo mặc định, những người dùng khác sẽ không được phép ghi vào các tệp mà chủ sở hữu tệp tạo.


1
Cảm ơn bạn đã chỉnh sửa và chỉnh sửa, @Paulo Tomé. Thật vậy, thông thường (và rõ ràng) là sử dụng ký hiệu bát phân umask, vì chính xác ba bit có liên quan đến quyền truy cập tệp Posix - cho chủ sở hữu, một trong các nhóm của anh ấy và mọi người khác.
Hilton Fernandes

Không có gì. ;)
Paulo Tomé
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.