Tôi có thể đặt thời gian chờ bash chỉ cho các bảng điều khiển ảo (ctrl + alt + {f1-f6})


7

Tôi biết rằng tôi có thể đặt một TMOUTbiến để tự động kết thúc phiên bash sau một khoảng thời gian không hoạt động được chỉ định. Tuy nhiên, những gì tôi muốn là để áp dụng mà chỉ để tôi 6 built-in virtual console, được truy cập bởi ctrl+ alt+ { F1... F6}.

Tôi hầu như luôn sử dụng ứng dụng Terminal khi tôi muốn mở terminal. Khi tôi rời khỏi máy tính, tôi khóa màn hình, điều này ngăn mọi người truy cập vào các thiết bị đầu cuối đó. Vì vậy, tôi muốn không có thời gian chờ đợi trên những.

Tuy nhiên, trong những dịp hiếm hoi, tôi sẽ sử dụng một trong những máy chơi game ảo để làm việc trên máy tính của mình. Thông thường đó là do phiên Gnome chính của tôi bị đóng băng hoặc không sử dụng được. Tôi giết ứng dụng vi phạm, sau đó quay lại phiên chính của mình.

Trên hết, một vài lần tôi đã quên thoát ra khỏi bảng điều khiển ảo khi tôi khôi phục phiên Gnome của mình. Do đó, máy tính của tôi hoàn toàn không được bảo vệ nếu tôi bỏ đi, vì khóa màn hình trên Gnome chỉ khóa GUI; một người dùng có thể chuyển sang một bảng điều khiển ảo và giết chết màn hình khóa gnome của tôi hoặc nếu không thì gây rối với máy tính của tôi.

Tôi có thể chỉ đặt giá trị hết thời gian cho các bảng điều khiển ảo tích hợp trong khi cho phép phiên ứng dụng Terminal không hoạt động vô thời hạn không?

Câu trả lời:


9

Bạn có thể kiểm tra xem bạn có đang chạy trong thiết bị đầu cuối đồ họa không và chỉ được đặt TMOUTnếu bạn không. Một cách dễ dàng để làm điều này là ttylệnh:

   tty - print the file name of the terminal connected to standard input

Khi chạy từ trình giả lập thiết bị đầu cuối GUI:

$ tty
/dev/pts/5

Khi chạy từ bảng điều khiển ảo:

$ tty
/dev/tty2

Vì vậy, việc thêm các dòng này vào bạn ~/.profilesẽ giết phiên bash của bạn sau mười phút:

tty | grep tty >/dev/null && TMOUT=600

Bạn không muốn xuất khẩu TMOUT . Điều đó sẽ ảnh hưởng đến readnội dung của tất cả tập lệnh bash hoặc ksh93 bắt đầu từ phiên đăng nhập của bạn.
Stéphane Chazelas

@ StéphaneChazelas có, đó không phải là những gì OP muốn? Nếu họ muốn phiên của họ thoát sau 10 phút, thì có lẽ họ cũng muốn các tập lệnh của họ cũng thoát. Rốt cuộc, họ sẽ bị giết khi phiên kết thúc trong mọi trường hợp.
terdon

TMOUT trên readkhông làm cho tập lệnh kết thúc, nó gây ra readlỗi sau khi hết thời gian, điều này có thể làm cho tập lệnh thất bại theo mọi cách có thể. Không thể gây ra sự cố vì hiếm khi readbị treo trong 10 phút, nhưng vẫn xuất sai TMOUT(cũng lưu ý rằng một khi đã xuất, nếu một tập lệnh thực hiện, TMOUT=1nó sẽ ảnh hưởng đến tất cả các tập lệnh được gọi từ trong tập lệnh đó thay vì chỉ chính tập lệnh ).
Stéphane Chazelas

@ StéphaneChazelas OK. Đơn giản chỉ cần cài đặt nó sẽ ổn và vẫn nên làm những gì OP cần, phải không?
terdon

Có, mặc dù sau đó tôi có thể làm điều đó ~/.bashrcđể nó ảnh hưởng đến tất cả các shell tương tác, không chỉ là đăng nhập (và giả sử ~/.profilehoặc ~/.bash_profilecác nguồn ~/.bashrcnhư người ta cần phải làm để khắc phục lỗi bash đó). tty | grep -q 'tty[0-9]'để tránh xem xét ttyUSB3 hoặc ttyS1.
Stéphane Chazelas

1

Đây là một trường hợp tốt cho pam_env.somô-đun PAM. Đăng nhập bảng điều khiển ảo sử dụng loginchương trình, vì vậy bạn có thể mở /etc/pam.d/loginvà thêm một dòng như sau:

session  required  pam_env.so  readenv=1 envfile=/etc/vc-environment user_readenv=0

Với tệp mới đi kèm , /etc/vc-environment:

TMOUT=600

Hai lợi ích của việc sử dụng PAM cho việc này:

  • Nó áp dụng cho bất kỳ người dùng nào đăng nhập vào bảng điều khiển ảo (mặc dù điều đó không ngăn họ thay đổi TMOUTsau này).
  • Thời gian chờ cũng có thể được áp dụng cho các dịch vụ cụ thể khác, chẳng hạn như sudo.

Đọc ở đây để biết chi tiết về mô-đun này.


Bạn không muốn xuất khẩu TMOUT . Điều đó sẽ ảnh hưởng đến readnội dung của tất cả tập lệnh bash hoặc ksh93 bắt đầu từ phiên đăng nhập của bạn.
Stéphane Chazelas

Quản lý phiên của PAM xảy ra trước khi dịch vụ được cung cấp, vì vậy tôi không nghĩ rằng xuất khẩu biến của shell xuất hiện ở đây. Thử nghiệm của tôi cho thấy rằng việc thiết lập TMOUT theo cách này đã ảnh hưởng đến readnội dung bất kể sự hiện diện của từ khóa loại xuất trong tệp môi trường.
billyw

1
Xin lỗi, đó là một bản sao dán thẳng từ nhận xét của tôi vào câu trả lời của @ terdon, đáng lẽ tôi nên chỉnh sửa nó. Ý tưởng là như vậy mặc dù. TMOUT không nên nhưng trong môi trường như các shell đặc biệt khác như IFS, CDPATH hoặc FIGNORE, chúng không chỉ ảnh hưởng đến shell tương tác của bạn mà còn ảnh hưởng đến hành vi của các tập lệnh.
Stéphane Chazelas

1

Tôi không bao giờ thích giải pháp TMOUT. Đầu tiên, bởi vì nó chỉ hoạt động nếu bạn rời phiên của bạn tại dấu nhắc; nếu bạn để nó bên trong Vim hoặc thậm chí tại dấu nhắc mật khẩu sudo, nó sẽ không hết thời gian. Và thứ hai, tôi không muốn phiên bị đóng, tôi muốn nó bị khóa, giống như môi trường đồ họa vậy.

GNU Screen có thể khóa sau một khoảng thời gian nhàn rỗi, vì vậy tôi đã làm như sau. Ngay từ đầu ~/.bashrctôi đã thêm điều này:

if [ "$TERM" = "linux" ] && tty | egrep -q '^/dev/tty[[:digit:]]+$'
then
    exec screen -c ~/.ttyscreenrc
fi

Điều execnày rất quan trọng, vì nó đảm bảo screenthay thế Bash và khi kết thúc phiên TTY sẽ bị đóng.

Và trong ~/.ttyscreenrctôi đặt điều này:

startup_message off
idle 180 lockscreen

Để bỏ qua màn hình chào mừng của màn hình và khóa sau 3 phút không hoạt động.

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.