Không thể tạo thư mục '/ var / run / screen': Quyền bị từ chối


25

Đôi khi, thường là sau khi gặp sự cố hoặc tắt máy đột ngột, screentừ chối bắt đầu. Các lệnh như

screen
screen -ls
screen -r
screen -d

dẫn đến đầu ra sau

Không thể tạo thư mục '/ var / run / screen': Quyền bị từ chối

Vấn đề ở đây là gì? Làm thế nào tôi có thể sửa lỗi này?

Câu trả lời:


33

Tìm thấy một giải pháp không yêu cầu sudo thường xuyên khi khởi động lại

Từ 'Eric Z Ma' @ systutorials :

Thư mục /var/run/screen/là thư mục socket cho màn hình.

May mắn thay, màn hình đọc một biến môi trường SCREENDIRđể có được một thư mục socket thay thế.

Vì vậy, để làm việc xung quanh nó, bạn có thể tạo một thư mục, chẳng hạn như ~/.screen:

mkdir ~/.screen && chmod 700 ~/.screen

và xuất SCREENDIRđể trỏ đến thư mục đó:

export SCREENDIR=$HOME/.screen

Bạn cũng có thể đặt dòng này vào bạn ~/.bashrcđể nó cũng có hiệu lực sau đó.


25

Vấn đề này đã được ghi nhận ở đây . Nói ngắn gọn,

/etc/rcS.d/S70screen-cleanup đang chạy qua khởi động sớm hơn nhiều so với dự kiến ​​sẽ chạy và không thể dọn sạch thư mục đó một cách chính xác.

Nó có thể được sửa bằng lệnh sau

sudo /etc/init.d/screen-cleanup start

1
Điều này hoạt động, nhưng tôi phải chạy nó trên mỗi lần khởi động, nếu không tôi sẽ gặp lỗi nhiều lần.
Giảm

3

Tôi đã gặp phải điều này trong khi chạy một bản phân phối dựa trên Centos / RHEL 7 và nó không có bất kỳ thứ gì có tên là 'dọn dẹp màn hình' ở bất cứ đâu dưới / etc.

Một cách giải quyết tôi tìm thấy là chỉ cần chạy sudo screenvà sau đó ngay lập tức thoát khỏi nó.

Sau đó, tôi đã có thể chạy màn hình mà không có bất kỳ đặc quyền đặc biệt nào, vì vậy nó xuất hiện để dọn sạch / var / run ngay lập tức khi có cơ hội.


1

Tôi có thể khắc phục vấn đề này bằng cách thực hiện các lệnh sau.

sudo mkdir /var/run/screen
sudo chmod 777 /var/run/screen

1
Đây không phải là một giải pháp tốt. Mỗi khi bạn khởi động lại, bạn phải làm lại điều này.
arupgsh

0

TL; DR : Trong Debian Stretch và mới hơn, hãy đảm bảo rằng nó systemd-tmpfiles-setup.serviceđã được khởi động thành công:

$:> systemctl status systemd-tmpfiles-setup.service
● systemd-tmpfiles-setup.service - Create Volatile Files and Directories
   Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-setup.service; static; vendor preset: enabled)
   Active: active (exited) since Thu 2018-06-21 19:54:06 CEST; 41min ago
   ...

Nếu bị tắt ( Loaded: ... ;disabled; ...) thì bạn có thể muốn bật nó với systemctl enable systemd-tmpfiles-setup.service. Nếu bạn muốn sử dụng màn hình trong một container docker thì bạn phải chạy systemd trong hình ảnh container của bạn hoặc bạn phải chạy systemctl start systemd-tmpfiles-setup.servicehoặc /etc/init.d/screen-cleanup start( như được đề xuất bởi Huey ) mỗi lần sau khi đăng nhập vào container của bạn.

Chi tiết: Vì Debian Stretch, tập lệnh khởi động /etc/init.d/screen-cleanupkhông được thực thi, vì theo mặc định, dịch vụ này bị che ( /lib/systemd/system/screen-cleanup.service -> /dev/null), vì vậy systemd bỏ qua nó.

Thay vào đó systemd-tmpfiles-setup.servicetạo /run/screenkhi khởi động, như được cấu hình trong /usr/lib/tmpfiles.d/screen-cleanup.conf:d /run/screen 0775 root utmp


Có vẻ như bạn (cũng) đang đề xuất một quy trình mà OP sẽ cần phải thực hiện (thủ công) sau mỗi lần khởi động lại. Bạn có thể cung cấp một giải pháp lâu dài, mà sẽ chỉ cần được thực hiện một lần? Xin vui lòng không trả lời trong các ý kiến; chỉnh sửa câu trả lời của bạn để làm cho nó rõ ràng và đầy đủ hơn.
Scott

systemctl enable systemd-tmpfiles-setup.service@ Hủy bỏ mà @Jacob đề nghị vẫn tồn tại trên các lần khởi động lại.
Tagar
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.