研究室のPCやサーバの管理を引き継ぐに当たって、必要になりそうなコマンドの使い方やPCの設定について簡単にまとめておきます。内輪向けに作ったメモでしたが、他所でも役に立てばと思い公開します。
この記事では以下の項目についてまとめました。
- PCの使用状況
- アカウントの管理
- パーミッションの設定
- ソフトウェアのアップデート
- SSH関連
- ネットワークの状態
各項目について簡単な使い方を字引き的に紹介するので、より詳細な内容を知りたい場合は別途調べてください。
使用環境:Mac OSX Mavericks~Sierra です。
#現在のPCの状態を見る
自分一人のパソコンでは気になりませんが、共用のコンピュータやサーバでは計算リソース
等をめぐって、他のユーザーの使用状況が気になることがあります。
ここでは、コンピュータの使用状況を調べるときに役立つコマンドを紹介します。
###現在Login しているユーザ−を見る
ログインしているユーザーを表示するコマンドはwho
やusers
、 finger
などがあります。
who
とusers
は、/var/run/utmpx (バイナリファイル)に書かれているログイン情報を表示します。
このファイルを更新しないプログラムを用いていると、ログインしていても表示されません。
% who
###ログイン履歴を見る
オプションで数字nをつけると、最近のn件を表示できます。
% last -10
###PC の使用状態を見る
% top
表示順は、デフォルトではPIDの順番に表示されますが、oを押した後にkeyを入力してreturn を押せば、指定した項目でソートできます。
また、オプション-oでソートする項目を選択することもできます。例えば、cpu使用率でソートしたければ、
% top -o cpu
###ストレージの仕様状況を見る
パーティションごとのサイズや使用量、空容量を集計して表示します。
% df -h
###ディレクトリやファイルのサイズを表示する
ディレクトリやファイルを指定すると、そのディレクトリの下にあるファイルやサブディレクトリについてサイズを集計します。
何も指定しなければ、カレントディレクトリについてサイズが計算されます。
% du -H directory_name
オプション
-h
bibyte(1024単位)で表示
-H
Byte(1000単位)で表示
#アカウントの管理
コンピュータの管理者の大きな仕事の一つとして、ユーザーのアカウント管理があります。
ここでは、ターミナルからアカウント設定を確認・変更する方法を紹介します。
###ユーザー情報を見る
% id user_name
###パスワードを変更する
% passwd user_name
自分のパスワードを変えるときは、ユーザー名は不要です。
パスワードの再発行など、他のユーザーのパスワードを変更するときはsudo
が必要です。
dscl
Mac ではユーザーやグループなどの情報はディレクトリ構造のデータベースになっており、そのディレクトリ参照・編集のためのツールとして、Directory Service command line utility; dscl コマンドが用意されています。
dsclコマンドの基本的なオプション:
-list
ディレクトリ下のサブディレクトリをリストアップする
-read
ディレクトリ内を表示する
-create
新しいグループ、ユーザー、属性などを作成する
-append
属性に値を追加する
-change
値を変更する
-delete
ディレクトリや属性、値を削除する
###ユーザーやグループをリストアップする
% dscl . -list /Users
% dscl . -list /Groups
さらに、PrimaryGroupID
などのキーを指定すると、その情報も表示されます。
% dscl . -list /Users PrimaryGroupID
###個々のユーザーやグループの情報を表示する
ユーザーやグループ個々の情報を調べるときは、-read
オプションを使います。
% dscl . -read /Users/user_name
UniqueID
など複数のキーを指定して表示することもできます。
% dscl . -read /Users/user_name UniqueID
###アカウントの設定変更
####ユーザーIDを変更する
-change
オプションで値を変更できます。
以下は101 から102に変更するときの例です。
% sudo dscl . -change /Users/user_name UniqueID 101 102
####ユーザーをグループに所属させる
% sudo dscl . -append /Groups/new_group GroupMembership user_name
####ユーザーをグループから削除する
% sudo dscl . -delete /Groups/new_group GroupMembership user_name
###グループを作る
-create
オプションで新しいグループを作り、
-append
オプションでPrimaryGroupID
を指定します。
以下はIDを101に設定する例です。
% sudo dscl . -create /Groups/new_group
% sudo dscl . -append /Groups/new_group PrimaryGroupID 101
#Permissionの設定
ファイルやディレクトリにはそれぞれ、権限が設定されています。
ユーザーは権限のないファイルやディレクトリにはアクセスできません。
ここでは権限の確認や変更の方法について紹介します。
ls
コマンドで見ると、例えば次のように表示されます。
先頭の-rw-r--r--@
などと書いてる列はアクセス権限を表しています。この意味は後で説明します。
user1
と書いてある列は所有ユーザー名を、 staff
と書いてある列は所有グループ名を表示しています。
% ls -l
-rw-r--r--@ 1 user1 staff 43B 12 5 2017 alpha.txt
-rw-r--r--@ 1 user1 staff 59B 12 5 2017 detect.log
drwxr-xr-x 123 user1 staff 4.1K 8 24 2019 data
drwx------ 4 user1 staff 136B 12 24 2018 himitsu
drwxrwxrwx+ 8 user1 staff 272B 10 30 2018 Public
lrwxr-xr-x@ 1 user1 staff 34B 3 6 06:42 test -> /Users/user1/work/script/test
drwx------+ 348 user1 staff 12K 4 11 12:41 work
では、-rw-r--r--
の部分の読み方を説明します。
先頭の文字はファイル種別を表し、
d
ディレクトリ
-
ファイル
l
シンボリックリンク
rwx
は左から、所有者、所有グループ、その他のユーザーに与えられた権限を表している。-
となっているところは、該当する権限が与えられていません。
それぞれの文字の意味は以下のとおりです。
r
読み取り
w
書き込み
x
実行
したがって、-rw-r--r--
は所有者は読み書き可能、所有グループに含まれるユーザーは読み取り可能、その他のユーザーは読み取り可能です。
###ファイルやディレクトリのpermissionを変更する
% chmod ooo file_name
ooo
には左から順に、所有者、所有グループ、その他のユーザ権限を表す数字が入ります。
数字は0から7までで、2進数にしたときのrwx
のON/OFFを表現します。
数値 | モード | 数値 | モード | |
---|---|---|---|---|
0 | --- | 4 | r-- | |
1 | --x | 5 | r-x | |
2 | -w- | 6 | rw- | |
3 | -wx | 7 | rwx |
例えば、全てのユーザーが自由に使えるようにしたい場合
% chmod 777 file_name
自分以外のユーザーには見られないようにする場合
% chmod 700 file_name
###ファイルやディレクトリの所有者を変更する
% chown user_name file_name
オプション
-R
ディレクトリの中身も再帰的に変更します
###ファイルやディレクトリのグループを変更する
% chgrp group_name file_name
オプション
-R
ディレクトリの中身も再帰的に変更します
ファイルやディレクトリを変更した後は、思ったように変更されているか確認します。
% ls -l
###管理者権限での編集
root の/bin
などのファイルやディレクトリは安全のために書き込みが制限されているところが多いです。ソフトウェアのインストールやコンピュータの設定などのために、アクセスが制限されているディレクトリやファイルを編集する必要があるときは、コンピュータの管理者がsudo
を使って行います。
個々のユーザーのホームディレクトリ以下のファイルやディレクトリでは、他のユーザーに見られたくない、いじられたくないものの権限の範囲をrwx --- ---
のように絞ります。管理者はsudo
を使えば見ることが可能ですが、信用に関わる問題なので、無断で覗いたりしない方がいいでしょう。
#コンピュータやソフトウェアについて
ここから、コンピュータのハードウェアやOS、ソフトウェアについて情報を調べたり、アップデートしたりする方法を紹介します。
##Software の情報を見る
デスクトップからは、画面左上のリンゴ(アップルメニュー)をクリックして、「このMacについて」を選択すればOSのバージョンやハードウェアの仕様などを確認できます。
それぞれのアプリについては、メニューバーのアプリの名前をクリックし、「<App名>について」を選択すればバージョンなどを見られます。
ターミナルからソフトウェアのバージョンを確認する場合は、オプションに-v
や-version
などをつけると表示されるものもあります。
###Mac OS のバージョンを確認する
% sw_vers
ProductName: Mac OS X
ProductVersion: 10.12.6
BuildVersion: 16G1815
system_profiler
を使うと、もう少し詳しい情報を見られます。
% system_profiler SPSoftwareDataType
Software:
System Software Overview:
System Version: macOS 10.12.6 (16G1815)
Kernel Version: Darwin 16.7.0
Boot Volume: Macintosh HD
Boot Mode: Normal
Computer Name: ccc
User Name: uuu (uuu)
Secure Virtual Memory: Enabled
System Integrity Protection: Disabled
Time since boot: 7 days 17:17
system_profiler
で表示できるデータタイプを知りたいときは、
% system_profiler -listDataTypes
uname
でもOSやCPU情報を表示できます。
% uname -a
オプション
-a
全てのシステム情報
-m
マシンタイプ
-n
ノード名
-p
CPU
-r
OSのリリース
-s
OS名
-v
OSのバージョン
###XCODEのバージョンを見る
% xcodebuild -version
Xcode 9.2
Build version 9C40b
##Softwareをアップデートする
ふつうApple のApp Store でアプリをインストールしたり、更新したりしますが、 CUIからでもソフトウェアをアップデートできます。
アップデートを確認する場合
% softwareupdate --list
全てのアップデートをインストールする場合
% softwareupdate -ia
個別にインストールする場合
% softwareupdate -i app_name
##Hardware の情報を見る
% system_profiler SPHardwareDataType
Hardware:
Hardware Overview:
Model Name: Mac Pro
Model Identifier: MacPro6,1
Processor Name: 8-Core Intel Xeon E5
Processor Speed: 3 GHz
Number of Processors: 1
Total Number of Cores: 8
L2 Cache (per Core): 256 KB
L3 Cache: 25 MB
Memory: 64 GB
Boot ROM Version: www
SMC Version (system): xxx
Serial Number (system): yyy
Hardware UUID: zzz
#外付けディスクの取り外し
ターミナルから外付けディスクをunmountするには、
% diskutil unmount /Volumes/XXX
#SSH
ここでは、SSH
でログインしてサーバーを使用する方法を紹介します。
###Macにリモートでログインする
% ssh user_name@host
オプションに大文字の-X
または-Y
をつけると、X11の転送が使えます。
% ssh -X user_name@host
ただし、sshd_config でX11Forwarding
(X11の転送)がyes
に設定されていないと、オプションに-XY
をつけても転送されません。
Mac のデフォルトではOFFになっているので、サーバー管理者は最初に設定が必要です。
特にOSのヴァージョンアップをした後などは設定がデフォルトに戻っている場合があるので要注意。
###ファイルを転送する
ローカルからリモートへ送る場合
% scp 送り元path user_name@host:送り先path
リモートからローカルへ送る場合
% scp user_name@host:送り元path 送り先path
オプション
-r
ディレクトリを転送
-p
タイムスタンプやパーミッションを保持
-C
通信を圧縮
###ディレクトリの中身を転送・同期する
rsync
はリモートに限らず、ローカルでの転送・同期にも使えます。
リモートの場合はpathの前に「user_name@host:」をつけます。
% rsync 送り元path 送り先path
オプション
-a
パーミッションなどを保持して転送(-rlptgoDと同じ)
-u
追加、更新されたファイルのみコピーする
-v
転送状況を表示
-z
通信を圧縮
###SSHの再起動
sshd_config を編集して設定変更した場合、SSHを再起動すると変更が反映されます。
% sudo launchctl stop com.openssh.sshd
#ネットワークの状態を見る
ここでは、ネットワークの状態、IPアドレスなどを調べる方法について紹介します。
###ドメイン名からIPアドレスを探す
% nslookup domain
###ドメイン情報を検索する
ドメイン名やIPアドレスから、ドメイン情報を検索します。
% whois ip_address
###ポートスキャン
ncコマンドはいろいろな使い方ができるが、ここではポートスキャンの方法を紹介します。
IPアドレスのポートが開いているか確認します。
ポート番号は1-100
のようにして、範囲を指定して一気に実行することもできます。
% nc -z ip_address port_No
オプション
-z
ハンドシェイクだけする。
-u
UDPを使って通信する(デフォルトではTCP)。
-v
冗長表示(Verbose)
###接続確認
リモートへの接続を確認します。
ICMパケットを送信して、送り先がエコーを返し、パケットが帰って来れば導通しています。
% ping ip_addreess
オプション
-c
試行回数を指定する
試行回数を指定しなかった場合は、control
+c
で終了します。
###接続状況の確認
ネットワークの接続状態を表示します。
% netstat
オプション
-t
TCP通信のみ表示
-u
UDP通信のみ表示
###ネットワークインターフェイスの状態を表示
自分のネットワークインターフェイスの設定状況を表示します。自分のIPアドレスもわかります。
設定の変更もifconfig
コマンドで可能です。
% ifconfig
#コマンドについて調べる
ターミナルで使えるコマンドについて、使い方や引数などを知りたいときにネット検索してもいいですが、ターミナルで調べる方法もあるので最後に紹介しておきます。
man
コマンドを使うと、各コマンドのマニュアルを読むことができます。
マニュアルから抜けるときはq
を入力します。
% man command_name