セッション時間制限のある一般的なラップトップ

ハブロフスク市民へのご挨拶

最近、彼らは訪問者が無料で使用できるように小さなカフェの1つにラップトップをセットアップするように私に頼みました、さらに、時間制限があり、データを心配しません。

したがって、 初期状況と必要な機能

インターネットカフェのプログラムのトピックに関する集中的なインターネット検索の後、私はスズメに銃を撃つ価値がないと判断し、問題を解決するために次のツールを選択しました。


順番に。

システムのインストール


「System-Management-Disk Management」のウィンドウで、メインパーティション(「Acer」というラベル)を200 GB減らし、ディスクの未フォーマットの空き領域(200 GB)を取得し、そこにubuntuを配置しました。

Ubuntuのインストールは標準で、cd / dvdから起動します。
インストール中に、「既存のオペレーティングシステムの隣」オプションを選択できます。手動パーティション分割を選択しました。

ユーザー名の管理者でシステムをインストールします(「admin」はすでにubuntuで予約されています)。

最初の再起動後、ネットワーク/ WIFIを接続し(まだ接続していない場合)、すべての更新プログラムと、通常の操作に必要ないくつかの追加をインストールします。

sudo apt-get update sudo apt-get dist-upgrade sudo apt-get install flashplugin-downloader sudo apt-get install gimp 

java(たとえば、オンラインバンキングなど)を使用する予定がある場合は、それも配置します。

 sudo apt-get install openjdk-7-jre icedtea-7-plugin 

このラップトップでは、最初のパーティション(/ dev / sda1)がWindowsリカバリパーティションであるため、GRUBブートメニューから有害な方法から削除することをお勧めします。
私はこれが好きでした:

/boot/grub/grub.confから目的のセクションを/etc/grub.d/40_customにコピーしました:

 #!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry "Windows 7 (loader) (on /dev/sda2)" --class windows --class os { insmod part_msdos insmod ntfs set root='(hd0,msdos2)' search --no-floppy --fs-uuid --set=root 70E253CBE25393E6 chainloader +1 } 

ファイルの最後に追加する/ etc / default / grub

 GRUB_DISABLE_OS_PROBER="true" 

ターミナルでGRUBメニューの更新を実行します

 sudo update-grub 

これで、リブートすると、Linuxに関連するアイテムと、インストールされたWindowsをロードする最後のアイテムのみがメニューに表示されます。

ブートメニューを非表示にする必要がある場合、ubuntu 12.04に存在する1つのバグ、つまり、 / etc / default / grubのパラメーターの変更だけをバイパスする必要があります。

 GRUB_HIDDEN_TIMEOUT="5" GRUB_HIDDEN_TIMEOUT_QUIET="false" 

起動時にメニューを非表示にすると失敗します。
これは、/ etc / grub.d / 00_headerファイルの最後にフラグメントを追加することで処理されます

 ### BEGIN Hidden Menu Test ### cat << EOF if [ ${timeout} != -1 ]; then if sleep --verbose --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then set timeout=0 fi fi EOF ### END Hidden Menu Test ### 

最終的に、ファイル/ etc / default / grubはこのようになります。

 GRUB_DEFAULT="0" GRUB_HIDDEN_TIMEOUT="5" GRUB_HIDDEN_TIMEOUT_QUIET="false" GRUB_TIMEOUT="5" GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`" GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="" # Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL="console" # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' GRUB_GFXMODE="640x480" # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID="true" # Uncomment to disable generation of recovery mode menu entries #GRUB_DISABLE_RECOVERY="true" # Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1" GRUB_DISABLE_OS_PROBER="true" 

そしてもちろん、再起動する前にgrubを更新することを忘れないでください:

 sudo update-grub 

BIOS画面が5秒間消えた後、ESCを押すと、GRUBメニューが表示されます。そうでない場合、最初のデフォルトメニュー項目(Ubuntu)が静かにロードされます。

ゲストセッションを構成する



ログアウトして、管理者として再度ログインします。
フォルダ/ etc / guest-session / skelを作成します。

 sudo mkdir -p /etc/guest-session/skel 

ユーザーのホームディレクトリをそこにコピーします。

 sudo cp -a /home/user/* /etc/guest-session/skel/ sudo cp -a /home/user/.* /etc/guest-session/skel/ 

ゲストとしてログインした場合、デスクトップと環境はユーザーユーザーとまったく同じに見えるはずです。

ゲストセッションの制限時間


管理者としてシステムにログインします。
remove_account()関数の最後にある/ usr / sbin / guest-accountファイルに次の行を追加します(ゲストのログアウト時に実行されます)。

 remove_account () { … … rm -f /tmp/*.guest touch /tmp/$(date -d "today" +"%Y%m%d%H%M").guest } 

次の内容で/etc/guest-session/skel/.guest.shファイルを作成します。

 #!/bin/sh if [ -f /tmp/*.guest ] then TIMEOUT=2 TIMESTAMP=`date -d "today" +"%Y%m%d%H%M"` for FNAME in /tmp/*.guest do OLDTIME="$(basename $FNAME .guest)" done if [ $(($TIMESTAMP-$OLDTIME)) -lt $TIMEOUT ] then sleep 10 notify-send -u critical "      !" "   (     )." sleep 10 gnome-session-quit --logout --no-prompt fi fi sleep 10 notify-send -u critical "  " "  30  .\n\n!" sleep 600 notify-send -u critical " 20 ..." sleep 600 notify-send -u critical " 10 ..." sleep 300 notify-send -u critical " 5       !\n     ." sleep 300 notify-send -u critical " " "   10 .\n     ." sleep 10 gnome-session-quit --logout --no-prompt 

そして実行可能にします:

 sudo chmod a+x /etc/guest-session/skel/.guest.sh 

/etc/guest-session/skel/.profileファイルの最後に行を追加するだけです

 $HOME/.guest.sh & 

そして実際にはそれだけです。

結果


その結果、警告なしでメニューを表示するラップトップを取得しました。管理者、ユーザー、および「ゲスト」の3人のユーザー、および「ゲスト」セッションの制限時間は30分、強制停止は2分です。 ラップトップを再起動すると、一時停止をリセットできます。 これが望ましくない場合は、.guestファイルを/ tmpではなく、たとえば/ var / log( / usr / sbin / guest-accountを参照)に保存する価値があります。
特定の間隔で、ユーザーには残りのセッション時間に関するメッセージが表示されます。
セッション中に、ユーザーを変更することができます(たとえば、ユーザーをシステムに完全に終了させることなく、ユーザーに戻したり、ゲストに戻したりすることができます)。

短所


スクリプト.guest.shはホームフォルダーには表示されませんが(少なくともすぐには)、プロセスのリストには表示され、このプロセスはゲストによって静かに強制終了されます(方法がわかっている場合)。これにより、原則としてセッションの時間制限が削除されます。

このソリューションを改善するための建設的な批判と提案を歓迎します!

Source: https://habr.com/ru/post/J179237/


All Articles