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

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



最近、彼らは訪問者が無料で使用できるように小さなカフェの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はホームフォルダーには表示されませんが(少なくともすぐには)、プロセスのリストには表示され、このプロセスはゲストによって静かに強制終了されます(方法がわかっている場合)。これにより、原則としてセッションの時間制限が削除されます。



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



All Articles