Unix & Linux

Linux、FreeBSDおよび他のUn * xのようなオペレーティングシステムのユーザーのためのQ&A

1
「自発的コンテキストスイッチ」とは何ですか?
バイナリファイルを取得し、そのパスワード(宿題)を解読することになっています。また、指定された関数(バイナリファイルの一部である関数)もありました。その関数は、入力文字列が文字ごとに正しいパスワードと比較され、文字が間違っていたときに即座に偽を返したことを示しました(それは安全な方法ではありません例)。しかし、教師は結果を返すランダムタイマーを追加しました(正しい/間違った)。 とにかく、私はすでにリバースエンジニアリングで正常に実行し、正しいパスワードを取得しました。今、私はコマンドラインでそれを遊んでいます: /usr/bin/time -v ./program_name enter_password このコマンドを使用すると、システム時間、スワップ、実行時間などの多くの情報が得られます。しかし、私にとって最も興味深いのは、「任意のコンテキストスイッチ」です。 「わかった! 間違った文字を入力するほど、「任意のコンテキストスイッチ」が表示されます。 そのコマンドを入力し、文字を入力し、「任意のコンテキストスイッチ」を観察するだけで、パスワードを解読するのに2時間近くかかりました。1つのキャラクターが正しかったときはいつでも、「自発的なコンテキスト切り替え」は1つ減少しました。 私の質問、「自発的コンテキスト切り替え」とは正確に何であり、なぜパスワードを解読するのに役立つのですか?

1
どうやって !!バッシュで働く?
コマンドの先頭でsudoを忘れた場合に非常に便利!!で、前のコマンドのエイリアスのように機能します。例: $ mv /very/long/path/for/a/protected/sensible/file/caution.h . (...) Permission denined $ sudo !! sudo mv /very/long/path/for(...) . [sudo] password : このダブル!!トリックをどのように呼び出すのですか?そのトークンのため、インターネットでの研究は困難です。 どのように機能しますか?historyコマンドとのリンクが疑われます。 定義されている場所 他に自分で定義できますか? 編集:いくつかの興味深いイベント指定子 !!:* 前のコマンドの引数を参照します。使用事例 : cat /a/file/to/read/with/long/path nano !!:* :p コマンドを実行せずに印刷するだけで、イベント指定子の最後に配置する必要があります。 $ !-5:p sudo rm /etc/fstab -f 詳細はこちら。

3
プロキシの背後でapt-keyを使用してgpgキーを追加できない
apt-keyUbuntu 17.04に切り替えたため、体系的にgpgキーを追加できません(ただし、直接関連しているとは思いません)。Spotifyのレポキーを使用した例: $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886 Executing: /tmp/apt-key-gpghome.wRE6z9GBF8/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886 gpg: keyserver receive failed: No keyserver available hkp://プレフィックスを削除しても同じです。 コンテキスト:CNTLMを使用して、ローカルの企業プロキシに対処します。環境変数が設定されます(/etc/environment): $ env | grep 3128 https_proxy=http://localhost:3128 http_proxy=http://localhost:3128 ftp_proxy=http://localhost:3128 /etc/apt/apt.conf設定されています(aptコマンドは正常に機能しています): $ cat /etc/apt/apt.conf Acquire::http::Proxy "http://localhost:3128"; Acquire::https::Proxy "http://localhost:3128"; Acquire::ftp::Proxy "http://localhost:3128"; 最後に、指定されたキーサーバーに到達できるようです: $ curl keyserver.ubuntu.com:80 <?xml version="1.0"?> <!DOCTYPE …
34 debian  apt  proxy  gpg 

4
LinuxシステムのSpectreおよびMeltdownの脆弱性を緩和する方法は?
セキュリティ研究者は、Project Zeroで、Specter and Meltdownと呼ばれる新しい脆弱性を公​​開しました。これにより、プログラムは他のプログラムの記憶から情報を盗むことができます。Intel、AMD、およびARMアーキテクチャに影響します。 この欠陥は、JavaScript Webサイトにアクセスすることによりリモートで悪用される可能性があります。技術的な詳細は、redhatウェブサイト、Ubuntuセキュリティチームで見つけることができます。 投機的実行サイドチャネル攻撃による情報漏洩(CVE-2017-5715、CVE-2017-5753、CVE-2017-5754別名SpecterおよびMeltdown) 新しいクラスのサイドチャネル攻撃は、Intel、AMD、ARMのプロセッサを含むほとんどのプロセッサに影響を与えることが発見されました。この攻撃により、悪意のあるユーザースペースプロセスがカーネルメモリを読み取り、ゲストの悪意のあるコードがハイパーバイザーメモリを読み取ることができます。この問題に対処するには、Ubuntuカーネルとプロセッサマイクロコードの更新が必要になります。これらのアップデートは、利用可能になった後のUbuntuセキュリティ通知で発表されます。 JavaScriptでの実装例 概念実証として、JavaScriptコードが作成され、Google Chromeブラウザーで実行すると、JavaScriptが実行プロセスからプライベートメモリを読み取ることができます。 私のシステムは、幽霊の脆弱性の影響を受けているようです。この概念実証(spectre.c)をコンパイルして実行しました。 システムインフォメーション: $ uname -a 4.13.0-0.bpo.1-amd64 #1 SMP Debian 4.13.13-1~bpo9+1 (2017-11-22) x86_64 GNU/Linux $ cat /proc/cpuinfo model name : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz $gcc --version gcc (Debian 6.3.0-18) 6.3.0 20170516 LinuxシステムのSpectreおよびMeldownの脆弱性を緩和する方法は? さらに読む:Meltdownを使用して、リアルタイムでパスワードを盗みます。 更新 debian Stretchのcve-2017-5754を緩和するセキュリティアップデートが利用可能であるため、@ Carlos Pasqualiniの回答に続いSpectre …

4
Vim-1つの新しい行\ nを2つの\ nに置き換える方法
vimエディターで、vimコマンドモードを使用して、改行文字(\ n)を2つの改行文字(\ n \ n)に置き換えます。 入力ファイルの内容: This is my first line. This is second line. 私が試したコマンド: :%s/\n/\n\n/g 文字列を不要な文字に置き換えます This is my first line.^@^@This is second line.^@^@ 次に、次のコマンドを試しました :%s/\n/\r\r/g 正常に動作しています。2番目のコマンドで問題なく動作する理由を説明できますか?

1
「tail -f」は「less + F」よりも効率的ですか?
この記事では、を使用less +Fする理由をいくつか指摘しましたtail -f。理由のほとんどは機能に関するものであり、技術的な理由ではありません:less +Fファイルを強調表示、検索、ナビゲートできます。 どの程度の技術的な理由? 私の知る限りでは、lessファイルを更新するために、各1秒しばらくポーリングを使用するtailように、POSIXは、定義された 1秒間スリープコピー利用可能である任意のバイトそのループを使用します。これで十分ですが、POSIXは実装でより効率的な方法を使用することも推奨しました。少なくともGNU tailはinotifyを使用するため、より効率的です。 less また、ファイルの内容をメモリに保持するため、数ギガバイトのような巨大なファイルでは、コンピューターの速度が低下する可能性があります。 だから、他のものがあり、技術を使用する理由はtail -fオーバーはless +F?
34 tail  less 

13
ルート権限を拒否できるユーザーを実際に持つことができるように、スーパーユーザーを作成することはできますか?
ルートユーザーよりも高いアクセス許可を持つユーザーがいると有利だと考えていました。 ご覧のとおり、すべてのアクティビティと既存のほぼすべてのルートユーザー権限を現在の状態のままにしておきたいと思います。 ただし、非常に孤立したケースごとに、rootへの特権を拒否する機能が必要です。 この利点の1つは、更新中に特定の不要なファイルがインストールされるのを防ぐことです。これは、考えられる利点の一例です。 apt-getの更新はrootまたはsudo特権で実行されるため、apt-getには更新中に特定の不要なファイルを置き換える機能があります。 これらの個々の特定のファイルに対するこれらの特権を拒否できる場合は/dev/null、更新中にファイルの置き換えを拒否するアクセス許可を持つ可能性のある空白のプレースホルダーファイルへのsimlinkとして設定できます。 さらに、Ubuntuクリエイターの1人とのインタビューで、ユーザーが「私たち」(Ubuntu開発者を参照)をよりよく信頼する方法について彼が言ったときに言われた行について思い出せずにはいられませんこれは、システムの更新がルート権限で実行される方法への参照でした。 この問題を回避するためにインストール手順を変更するだけでは、私がここで興味を持っていることは絶対にありません。私の心はルートアクセスを拒否する力を持っているという考えを持っているので、それを行うためだけにこれを実現する方法を見つけたいと思います。 私はこれについて考えただけで、これまでこのアイデアに時間を費やしたことはありませんでしたが、これが理解できると確信しています。しかし、これが既に行われたかどうか、またはこれが新しいアイデアや概念ではないかどうかを知りたいです。 基本的に、システムの許可を1度しか超えない許可を持つスーパースーパーユーザーを確保する方法があるはずです。 注:受け入れられた回答は基準に最も適合すると感じていますが、@ CRの回答は本当に気に入っています。また。 ツリー(私)の上位に実際のユーザーを作成したいと思いますが、それを理解する時間ができたら、いつか座らなければならないと思います。 また、ここではUbuntuを選択しようとはしていません。私はそれについて否定的に感じた場合、私のメインのディストリビューションとしてそれを使用しません。
34 permissions  sudo  users  root 

5
mv -fのポイントは何ですか?
以下のためのGNUのCoreutilsマニュアルはmv言います: -f --force Do not prompt the user before removing a destination file. ただし、これはすでにのデフォルトの動作のmvようですので、この-fオプションは不要なようです。例えば、GNU Bashバージョン4.3.11の場合: $ ls -l total 0 $ touch 1 2; mv -f 1 2; ls 2 $ touch 1 2; mv 1 2; ls 2 -fフラグの意図がオーバーライドする可能性は低いようですalias mv="mv -i"。なぜなら、より簡潔に、コマンド間で一貫性のある方法でこれを行うエイリアスをオーバーライドする(たとえば、使用する)標準的な方法がいくつかあるため\mvです。 マニュアルでは、「-i、-f、-nオプションのうち複数を指定すると、最後のオプションのみが有効になります」と書かれていますが、-fフラグの意図は-i一般的にフラグをオーバーライドすることではないようです。同等の挙動は、単に使用することによって達成することができるので、mvはるかに簡潔で使用するよりも分かりやすいがあります、mv -if。 その場合、-fフラグの目的は何ですか?なぜ存在するのですか?
34 files  history  mv 

5
あるサーバーから別のサーバーへのSCP?
ローカルコンピューターをバイパスして、あるサーバーから別のサーバーにファイルを直接コピーしようとしています。 やった scp -r usrname@server1.com:~/data/* usrname@server2.com:~/data/ Password: Host key verification failed. lost connection これも可能ですか?どうすれば修正できますか?
34 scp 

3
i686パッケージとx86_64パッケージの違いは何ですか?
glibc i686とx86_64の両方を搭載したマシンがあり、glibcに非常に迷惑な問題があります。 1台のコンピューターに同じ名前の2つのライブラリをインストールするのは正常ですか?実行されているライブラリを確認するにはどうすればよいですか? 最近まで、x86_64はi686であると信じていました。まあ、私は間違っているはずですが、なぜですか? [root@machin ~]# yum info glibc Loaded plugins: rhnplugin, security This system is not registered with RHN. RHN support will be disabled. Excluding Packages in global exclude list Finished Installed Packages Name : glibc Arch : i686 Version : 2.5 Release : 42 Size : 12 M …

9
C ++コードを印刷するためのテキストエディター
C ++コードを(紙に)印刷するエディターを探しています。私は現在工学学校にいますが、インストラクターはコードを紙で提出するように私たちに依頼しました。 彼は、名前+姓、クラス番号(ヘッダー上)、下部のページ数、およびすべてのページに太字の予約語が必要です! Windowsでは、で実行できますnotepadd++。しかし、私はLinuxを使用していますが、動作するIDEやテキストエディターが見つかりません。(私はすでに試したSCITE、geditとSyntaxic)
34 editors  c++  ide 

3
新しいコンピューターにはこのようなシリアルポートがないのに、なぜ一部のLinuxディストリビューションには/ dev / ttyS0、ttyS1などがまだあるのですか?
多くの新しいラップトップおよびデスクトップコンピューターには、9ピン/ 25ピンシリアルポートがありません。なぜ、多くのLinuxディストリビューションにはまだ含まれていない/dev/ttyS0、dev/ttyS1デバイスファイルを? 以来udev、動的にデバイスファイルを作成することができ、なぜされている/dev/ttyS0、/dev/ttyS1まだ静的に作成されましたか?たびに私が起動し、/dev/ttyS0そして/dev/ttyS1そこにあります。 ところで:私はDebian 7.0を使用しています。

5
hddからhddへのフルDDコピー
元の質問: 次の特性を持つ2つの同一のハードドライブがある場合: SATA 6.0 Gb / s 5400 rpm 3TB 完全なddコピーが完了するまでどのくらいかかりますか? これまでのところ、5時間稼働し続けています... Linux Ubuntu 12.04 64ビットを使用していますが、使用しているコマンドは次のとおりです。 dd if=/dev/sdb of=/dev/sdc 更新:1 進捗を確認できるようになり、コピー430GBで6時間以上かかりました。HDDは3TBです... これを行うより速い方法はありませんか? 更新:2 これは以前よりもはるかに優れているようです(提案についてはGroxxdaに感謝します)。 sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K ETAは3TBで約9時間ですが、6時間後に430GBに達する前なので、前のコマンドを使用すると約36時間かかっていたと思います。
34 hard-disk  dd  cloning 



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.