実力診断テストに挑戦いただきありがとうございます。 本テストは「IT教育プログラムへの参加」や「アルバイト採用」を希望される方を対象として、Linuxを中心とした実践的な問題を出題します。合格点は 70点 です。 試験は何度でも挑戦でき、また制限時間はありません。最初に問題を全部確認して調べても構いませんし、その場で調べながら回答しても構いません。実際にご自身でLinuxマシンを用意して試されることをお勧めします。 Linuxの基礎を学習されたい方は下記をご覧になるとよいでしょう。 LPI-Japan様: Linux標準教科書 LPI-Japan様: Linuxサーバー構築標準教科書 Linux Foundation様: Introduction to Linux 第1問 以下の操作を実施するための適切なコマンドを選択してください。 正解は複数の場合があります。 問1. sshに関連したヘルプドキュメントを表示する。 query ssh doc ssh man ssh help ssh 問2. CPU負荷を確認するために直近1分間のロードアベレージを表示する。 loadaverate cat /proc/cpuinfo stress top 問3. resultsディレクトリをアーカイブ化してgzipで圧縮する。 tar -xf results.tar.gz results tar -czf results.tar.gz results tar -cf results.tar.gz results tar -tf results.tar.gz results 問4. 下記の各行に曜日が記載されたファイル(weekday.txt)から火曜日と木曜日だけを抽出する。 Sunday Monday Tuesday Wednesday Thursday Friday Saturday grep -E '^T.*day$' weekday.txt grep -E 'T...day' weekday.txt grep -E 'T*day' weekday.txt grep -E 'T[a-z]+day' weekday.txt 第2問 社内システムの構築を担当しているAさんは、B主任の指導の下サーバの設定を進めることになりました。AさんがSSHサーバを設定しようとしています。 Aさん SSHを使ってサーバにログインする方法は複数あるのですね。 B主任 はい、パスワード認証を使ったログインと公開鍵認証を使ったログインですね。今回は社内システムですが、システムの運用者以外の人がアクセスできないようにパスワード認証ではなく公開鍵認証を採用します。 Aさん パスワード認証を無効化するには何を設定したらよいでしょうか。 B主任 SSHの設定ファイルである (A) を表示してください。設定ファイルの中に (B) という設定項目がありますね。この値を no に設定します。 問1. (A) に該当するSSHの設定ファイル名を記述しなさい。 問2. (B) に該当する設定キーワードを記述しなさい。 問3. SSHの公開鍵認証で使用するキーペアを作成するコマンドとして適切なものを選びなさい。 gpg --gen-key htpasswd -c filename username ssh-keygen -t rsa -b 2048 openssl genrsa -out priv.key 2048 問4. SSHのパスワード認証を許可する場合にセキュリティを高める方法としてふさわしいものをすべて選びなさい。 SSHでのログイン時にStrictHostKeyCheckingを有効にするオプションを付与する 複数回認証に失敗したユーザを一定期間ログイン不可にする 数字や記号などを含む長いパスワードとすることを必須とする 匿名でのログインを禁止する 問5. SSH公開鍵認証に関連した以下の行動のうち、セキュリティ上のリスクを生じうるものを選びなさい。 SSHキーペアの作成時にパスフレーズを設定する ssh-agentを使用して一度のパスフレーズ入力で複数のサーバにログインする ssh-copy-idコマンドを使用してリモートサーバにSSH公開鍵を登録する SSHキーペアをチームの共有フォルダにバックアップして失わないようにする 第3問 AさんがB先輩にrootユーザに関連した設計について尋ねています。 Aさん rootユーザにSSHでログインできないようにする設定はどうして必要なのでしょうか。 Bさん 理由はいくつかありますが、一つ上げるとすると(※問1)です。 Aさん rootユーザでマシンにログインできないのだとしたら、スーパーユーザの権限が必要な操作はどのように実施したらよいのでしょうか。 Bさん SSHでrootユーザに直接ログインしなくても、ほかのユーザでログインしてからsuコマンドを使ってrootユーザになることができます。またsudoコマンドを使ってrootユーザにならずにスーパーユーザの権限でコマンドを実行することもできます。 問1. rootユーザにsshでログインできないようにする理由として適切なものを選びなさい。 rootユーザには公開鍵認証を設定できないから どのLinuxマシンにも存在しているから 他のユーザと異なり設定できるパスワードに制限があるから 上記の選択肢はすべて正しい 問2. rootユーザへのSSHによるログインを許可しないための設定としてSSHサーバの設定ファイルに記載するキーワードを記述しなさい。 問3. あなたはuser1ユーザとしてLinuxマシンにログインしています。user1ユーザからsuコマンドでrootになる場合と、sudoコマンドを使用してrootユーザの権限でコマンドを実行する場合に必要なパスワードがそれぞれどのユーザのものか、適切な組み合わせを選びなさい。 su: root sudo: root su: root sudo: user1 su: user1 sudo: root su: user1 sudo: user1 問4. ユーザにsudoコマンドの実行を許可する方法の1つとしてユーザを事前定義されたあるグループに追加する方法があります。そのグループ名を記載しなさい。 第4問 マシンのディスク容量が不足すると、マシンが停止したりディスクへのデータ書き込みができなくなったりするため、システムが正常に動作しなくなる可能性があります。マシンのディスク容量が足りなくなる原因は様々にありますが、その1つとしてシステムがディスクに書き出すログの肥大化があります。(A)システムの設計時の想定よりもログが大量に出力されてしまうと、本来システムのために確保していたディスクがログのために使用されてしまうことになります。 問1. Linuxにおけるログの保存先となるディレクトリを記述しなさい。 問2. ディスク容量の不足が発生する傾向がみられるため、問題が発生する前に不要なログファイルの削除を実施する予定です。実際の削除を行う前に、まずは削除対象となるファイルを確認します。削除の候補となるファイルサイズが10GBを超えるログファイルを問1のディレクトリから探すためのコマンドとして、下線に入るオプションを記述しなさい。 $ sudo find ${LOG_DIR} ______ +10G ※${LOG_DIR}は問1のディレクトリを指す環境変数です。 問3. ログの肥大化を防止する方法としてログのローテーションがあり、Linuxではlogrotateが使用されています。logrotateの設定において、ローテーション時にログを圧縮してディスク容量の空きを増やすためのディレクティブを選びなさい。 maxsize format shrink compress 問4. (A)の問題が短期間で発生してしまった場合でもシステムへの影響を軽減するための設計として適切なものを選びなさい。 ディスクの空き容量不足を検知したらマシンを再起動する デバッグログを出力する ログの出力先を別パーティションに分離する ログローテーション時にログを圧縮する 第5問 Aさんは開発用に使っているLinux仮想マシンのディスク容量が足りなくなっていることに困り、B主任に相談しています。 Aさん 担当しているシステム開発のために使っている仮想マシンなのですが、ディスクの容量が不足しているようです。 B主任 ホームディレクトリなどにいらないファイルを置きっぱなしにしていたりしませんか。 Aさん はい、できる対処はしているのですが、テスト用のデータが大きいのでどうしても容量が足りなくなってしまいます。 B主任 分かりました。仮想マシンならディスクを追加してLVMで拡張すれば対応できそうですね。 Aさん データコピーだと容量は増えないのではないですか。 B主任 それはRAIDですね。 Aさん 間違えました。LVMなら追加したディスクから論理ディスクを拡張できますね。 問1. RAIDが提供する方式のうち、データを2枚のディスクに書き出すことで、一方のディスクが壊れてもデータを維持できるものを選びなさい。 RAID0 RAID1 RAID5 RAID6 問2. 追加ディスクを使ってファイルシステムの空き容量を増加させるために実行する次のコマンドの実行順として適切なものを選びなさい。ただし作業はrootユーザで実行するものとし、各コマンドに指定するデバイス名などは適切に指定されているものとします。 a) lvextend -L +10G /dev/vgroup1/root b) pvcreate /dev/sdb1 c) fdisk /dev/sdb d) vgextend vgroup1 /dev/sdb1 e) xfs_growfs / c → a → b → d → e c → a → d → b → e c → b → a → d → e c → b → d → a → e c → d → a → b → e c → d → b → a → e 第6問 Aさんは自分用の開発マシンのセットアップをしています。CentOS7のインストールといくつかの初期設定が完了したので問題がないか確認したところ、ログの時刻が現在時刻ではありませんでした。Aさんはログの時刻が合っていない原因を調査するために先輩のBさんに相談しました。 Aさん マシンのログの時刻がずれているので直したいのですが、協力いただけますでしょうか。 Bさん かまいませんよ。最初になんですが、マシンの時刻ってあっていますか。 Aさん 時刻の確認なのでdateコマンドですね・・・ずれていますね。 Bさん ではログの問題というよりは時刻設定の問題ですね。その観点から調査してみましょうか。 問1. Aさんが実行したdateコマンドの結果は次のものでした。 # dateMon Feb 1 01:50:00 EST 2021 この結果から考えられる、ログの時刻が現在時刻と異なる原因として最もふさわしいものを選びなさい。 ただし上記コマンドを実行したときの日本時刻は 2月1日 15:50 だったものとします。 間違った時刻が手動で設定されている 時刻同期先のNTPサーバとして誤ったサーバを設定している タイムゾーンが日本時刻になっていない 間違った時刻が設定されているNTPサーバと同期している 第7問 社内向けのコミュニティサイトの構築をBさんのチームで担当することになりました。コミュニティサイトを提供するWebサーバの設計が終わり、その構築をチームメンバであるAさんが実施しています。AさんはWebサーバの設定が完了したので、Bさんに作業の完了を伝えたところ、Bさんからサーバを一度再起動してサービスが動くか確認してみてほしいとお願いされました。依頼を受けてAさんがWebサーバを再起動したところ、コミュニティサイトが利用できなくなっていました。 問1. AさんはWebサービスが利用できない原因の調査を始めました。原因を確認するためいくつかコマンドを試したところ、原因と思しきものを見つけることができました。以下はAさんが実行したコマンドとその実行結果です。この結果から考えられるWebサービスが利用できなくなった原因を選びなさい。 # systemctl status httpd ● httpd.service - The Apache HTTP Serve Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Active: inactive (dead) Docs: man:httpd(8) man:apachectl(8) # firewall-cmd --list-services dhcpv6-client http ssh # firewall-cmd --list-services --permanent dhcpv6-client http ssh # nmcli con show enp0s8 | grep -E "connection.autoconnect:|ipv4.addresses|ipv4.method" connection.autoconnect: yes ipv4.method: manual ipv4.addresses: 192.168.10.101/24 ホストの自動時にhttpdサービスが起動するように設定されていない Webサービス用のファイアウォールの設定が永続化されていない ホストの起動時にインタフェースが起動していない ホストの起動時に再起動前と異なるIPアドレスが設定された 問2. Aさんが見つけた原因に対処するためのコマンドを記述しなさい。コマンドは必要最小限の指定とします。 第8問 Webサーバを設定しましたがクライアントからWebサービスにアクセスできない問題が発生しています。次のコマンドはクライアントとWebサーバ上でコマンドを実行して調査を行った結果です。なお、Webサーバはweb.example.comでアクセスするものとします。 クライアントから実行したコマンド $ curl http://web.example.com/index.htmlcurl: (7) Failed connect to web.example.com:80; No route to host$ ping -c 1 web.example.comPING web.example.com (192.168.128.30) 56(84) bytes of data.64 bytes from web.example.com (192.168.128.30): icmp_seq=1 ttl=64 time=0.285 ms--- web.example.com ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0msrtt min/avg/max/mdev = 0.285/0.285/0.285/0.000 ms Webサーバ上で実行したコマンド $ curl http://web.example.com/index.html Hello! $ ip --family inet addr show enp0s8 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 inet 192.168.128.30/24 brd 192.168.128.255 scope global noprefixroute enp0s8 valid_lft forever preferred_lft forever 問1. 調査の結果からWebサービスにアクセスできない原因として推測されるものを選びなさい。 クライアント側でweb.example.comに対するIPアドレスを正しく取得できていない Webサーバ上のWebサービスが起動していない WebサービスのコンテンツがWebサーバ上に配置されていない Webサーバ上のファイアウォールが正しく設定されていない 第9問 CentOS7.9のOSインストール後にパッケージアップデートを実行したところ、下記のエラーが表示されアップデータに失敗しました。 # yum update Loaded plugins: fastestmirror Determining fastest mirrors Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error" 問1. 上記実行結果から考えられる、アップデートに失敗した原因をすべて選びなさい。 名前解決に使用するDNSサーバが設定されていない リポジトリの使用が無効化されている デフォルトゲートウェイが設定されていない DHCPを使ってIPアドレスを取得している 問2. 以下のLinuxディストリビューションのうち、RPM形式のパッケージを使用するものをすべて選びなさい。 Ubuntu OpenSUSE Oracle Linux Debian 第10問 Aさんが本番サービスとして稼働しているシステムで作業をしています。Aさんがその日予定している作業はWebサーバにシステム監視用のパッケージを導入する作業です。Aさんが作業をしていると同じチームのBさんから来週予定している作業について相談があり、しばらく作業の中断を余儀なくされました。相談が終わって作業に戻ったAさんはそのまま監視用パッケージのインストール作業を続けていましたが、インストールが終わって改めてみてみると本来パッケージを導入する対象であるWebサーバと異なるサーバにパッケージをインストールしてしまっていました。どうやら相談を受けている間にWebサーバから自動ログアウトして別のサーバに移動していたようです。 問1. Aさんが採るべき行動としてあなたが最も適切と考えるものを選びなさい。 本来パッケージを導入する予定だったWebサーバにシステム監視用パッケージを導入されていないので、Webサーバにパッケージを導入する 間違ったサーバにパッケージが導入されたことによる影響を極力小さくするために、すぐにシステム監視用のパッケージのアンインストールを行う 次に採るべき行動について相談するために、上司に問題を報告する 間違ったサーバにパッケージが導入されたことによる影響について調査を行い、上司に報告する お疲れ様でした。実力診断テストはこれで終了です。 テストを終了して採点する場合は採点ボタンを押してください。 見直す場合は前へボタンから戻ることができます。 Time is Up! Time's up