Lubuntu ファイル・ディレクトリのアクセス権限・所有権など

所有者を変える

ファイル・ディレクトリの所有者は簡単に変えることができます。

これは、ちょっと私にはショッキングな出来事です。簡単に変えれるんですから・・・

sudo chown 新しい所有者 所有権を変えるパス

で変えることができます。

この  chown というコマンド change file owner and group の略です。

ファイルモード

ファイル・ディレクトリはファイルモードという情報を持っています。
ファイルモードは、パーミッション(アクセス権)と特殊なアクセス権3つ(SUID、SGID、stickyビット)の4つの情報からなっています。

パーミッション(アクセス権)

パーミッションはコマンド ls -l ファイルパス の結果で確認出来ます。

以下の例で説明します。

-rw-rw-r–(1) 1(2) guest(3) guest(4) 162(5) 2月 15 16:12(6) test(7)

概容は次のようになっています。

(1)パーミッション
(2)リンク数(ファイルへのハードリンク数)
(3)所有者
(4)所有グループ
(5)ファイルサイズ
(6)更新日時
(7)ファイル名

パーミッション

すべてのファイル・ディレクトリにはパーミッション(アクセス権)が設定できます。

アクセス権には、読み取り(read)、書き込み(write)、実行(execute)の3種類があります。

このアクセス権は、ファイルとディレクトリで意味合いが異なっています。

以下の表のようになっています。

パーミッション

ファイル

ディレクトリ

読取権限

ファイルを読み取ることができるか

ディレクトリ内のファイル、サブディレクトリをリスト表示できるか

書込権限

ファイルを変更できるか

ディレクトリ内でファイル・サブディレクトリを作成あるいは削除できるか

実行権限

ファイルを実行できるか

cdコマンドでそのディレクトリに移動できるか

パーミッションの記号表記(シンボリックモード)

上の例だとパーミッションが -rw-rw-r–となっていますが

ひと桁目の-はファイルの種類を表しています。

-:通常ファイル d:ディレクトリ l:シンボリックリンク

以下 rw- rw- r– の3つにわけられ、

それぞれ

所有者のパーミッション

所有グループのパーミッション

所有者でもなく所有グループでもないその他のアカウント(以下その他と表記)のパーミッション

を意味します。

ここでは、それぞれ

所有者のパーミッションは、

r:読取権限あり w:書込権限あり -:実行権限なし

所有グループのパーミッションは、

r:読取権限あり w:書込権限あり -:実行権限なし

その他のパーミッションは、

r:読取権限あり -:書込権限なし -:実行権限なし

を意味しています。

パーミッションの指定方法

chmod(change file mode bits)コマンドを使用することにより、パーミッションの変更が可能です。

「記号表記(シンボリックモード)による指定方法」、「数値による指定方法」の2つがあります。

記号表記(シンボリックモード)による指定方法

chown コマンド を使い

chown アカウント 演算子 パーミッションの記号表記 ファイルパス の形で使います
(ここで、大事なのはアカウント、演算子、記号表記の間にはスペースを入れないこと)

例えば chown o+r fairu

では、その他に読込権限を付加しています。
アカウントには

u;ユーザー
g:グループ
o:その他
a:すべて。u,g,oすべてを選択
省略:aを指定していることと同じ。※umaskで設定のパーミッションは変化しないので注意。

の意味を持ちます

演算子は

+ :アクセス権を与える
- :アクセス権を削除する
= :指定したアクセス権にする

の機能を持ちます。

パーミッションの記号表記は

r w x -

を選んで指定します。

また chown u=rwx,g+w,o=r– fairu

のようにカンマで区切って同時に指定することも出来ます。

数値による指定方法

シンボリックモードのパーミッションは下記のように、8進数の数字で表すことが出来ます。

r 読取権限 4
w 書込権限 2
x 実行権限 1
– 権限なし 0

例えば、ファイルtestのアクセス権が「-rw-rw-r–」だった場合、数値(8進数)で表してみると、

所有者(rw-)→4+2+0=6
所有グループ(rw-)→4+2+0=6
その他のユーザー(r–)→4+0+0=4

664となります。

これを”755″に変更するには

chmod 755 test

とします。

変更対象がディレクトリの場合、オプションに「-R」をつけるだけで、そのディレクトリの
配下のファイル、ディレクトリのパーミッションが一気に変更されます。

パーミッションの間違いやすい2つのポイント

1.ファイルの削除権は、ディレクトリの書き込み権限による!

ファイルだけに、書き込み権限を制限しても、属するディレクトリの書き込み権が制限されていなければ削除されてしまいます。

2.シンボリックリンクのパーミッションは常にrwxrwxrwxだが・・・・・

シンボリックリンクのパーミッションは、常にリンク先のパーミッションに依存します。
ls -lで表示されるものとは違います。単にパスの情報を持ったファイルといえどもリンク先と同じパーミッションが適用されます。

特殊なアクセス権

SUID(Set User ID)

通常、実行ファイルを実行すると、そのファイルを実行したユーザーの権限で実行されますが、SUID(Set User ID)が設定されたファイルでは、その実行ファイルの所有者のアカウント権限で実行されます。

例として、passwdコマンドがあります。
パラメータなしでpasswdコマンドを実行して、他のユーザーのパスワードを変更できるのはこのためです。

passwdコマンドのパーミッションを確認してみます。

user@Dimension-2400C:~$ find / -name “passwd” -type f 2> /dev/null
/usr/share/bash-completion/completions/passwd
/usr/share/lintian/overrides/passwd
/usr/bin/passwd
/etc/passwd
/etc/cron.daily/passwd
/etc/pam.d/passwd

上のfindコマンドの -type オプションで、検索するファイルの種類を指定しています。

選択できる種類は

b … ブロックデバイス
c … キャラクタデバイス
d … ディレクトリ
p … 名前付きパイプ
f … ファイル
l … シンボリックリンク
s … ソケット

となっています。

2> /dev/null は、標準エラー出力を捨てるという意味です。

コマンドが入っているのはbinディレクトリなので、/usr/bin/passwdになります。

ls -l で情報を調べてみます。

passwd情報表示

上のようにパーミッションが -rwsr-xr-x となっていて 所有者の実行権がsと特殊なものになっていて、SUIDが設定されていることを意味しています。また、ファイル名も赤背景/白文字になっています。これもまた、SUIDがセットされていることを示しています。

SUID(Set User ID)の設定

chmod u+s ファイルパス で設定できます。
chmod u-s ファイルパス で削除できます。

数値モードで設定するには、パーミッション値に4000を足します。
例えば、パーミッション値が755の場合、

chmod 4755 ファイルパス で設定できます。

SUIDが設定されているファイルの検索

SUIDが設定されているファイルを検索してみます

root@Dimension-2400C:/# find / -perm -4000 -user root 2> /dev/null
/sbin/mount.cifs
/usr/sbin/userhelper
/usr/sbin/pppd
/usr/lib/snapd/snap-confine
/usr/lib/policykit-1/polkit-agent-helper-1
/usr/lib/i386-linux-gnu/opera/opera_sandbox
/usr/lib/i386-linux-gnu/oxide-qt/chrome-sandbox
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/openssh/ssh-keysign
/usr/lib/eject/dmcrypt-get-device
/usr/bin/passwd
/usr/bin/chsh
/usr/bin/pkexec
/usr/bin/newgrp
/usr/bin/gpasswd
/usr/bin/sudo
/usr/bin/chfn
/bin/su
/bin/ntfs-3g
/bin/fusermount
/bin/ping6
/bin/ping
/bin/mount
/bin/umount

SUIDはできるだけ設定しない

SUIDの設定された、実行ファイルは、設計が悪ければ、セキュリティー上の穴となりやすくなります。安易な設定は避けるべきです。

SGID(Set Group ID)

実行ファイルにSGID(Set Group ID)が設定されている場合は、その実行ファイルを実行すると、実行ファイルの所有グループの権限でファイルが実行されます。
ディレクトリにSGID(Set Group ID)が設定されている場合は、そのディレクトリ配下に作成されたファイル・ディレクトリの所有グループが、SGID(Set Group ID)を設定されたディレクトリの所有グループと同じものになります。

SGID(Set Group ID)を設定

chmod g+s ファイルパス

削除は

chmod g-s ファイルパス

数値モードでアクセス権を設定する場合には、数値に2000を足します。

スティッキービット(Sticky Bit)

スティッキービット(Sticky Bit)とは、ディレクトリに設定される特殊なアクセス権の事です。

スティッキービット(Sticky Bit)が設定されたディレクトリでは、すべてのユーザーがファイル・ディレクトリを書き込めますが、所有者だけ(rootは除く)しか削除できなくなります。

/tmp ディレクトリは、スティッキービット(Sticky Bit)が設定されています

スティッキービット(Sticky Bit)が設定されていると、実行権部分が「t」と表示されます。

スティッキービットの設定方法

chmod o+t ディレクトリパス

削除は

chmod o-t ディレクトリパス です

数値モードでの設定は、アクセス権に、1000を足します。

デフォルトのパーミッションと謎

ユーザーがOSにログインするとumaskという値が割り当てられます。
ファイルの場合パーミッション666からumask値を引いたものがデフォルトのパーミッションになります。ディレクトリの場合、パーミッション777からumask値を引いたものがデフォルトのパーミッションになります。

それでは、実際にホームディレクトリにtestというフォルダを作成して、確認してみます。
umask値は、umask(set file mode creation mask)コマンドで確認出来ます。

user@Dimension-2400C:~$ umask
0002
user@Dimension-2400C:~$ mkdir test
user@Dimension-2400C:~$ ls -l
合計 520
-rw-rw-r– 1 user user 282265 5月 9 23:47 2017-05-09-234730_1360x768_scrot.png
-rw-rw-r– 1 user user 176370 5月 11 06:47 2017-05-11-064702_1360x768_scrot.png
drwxr-xr-x 2 user user 4096 5月 8 00:12 Desktop
drwxr-xr-x 3 user user 4096 5月 14 09:20 Documents
drwxr-xr-x 3 user user 4096 5月 13 19:39 Downloads
drwx—— 3 user user 4096 5月 13 19:42 Dropbox
drwxr-xr-x 2 user user 4096 5月 13 10:06 Music
drwxr-xr-x 2 user user 4096 5月 10 22:20 Pictures
drwxr-xr-x 2 user user 4096 5月 3 14:17 Public
drwxr-xr-x 2 user user 4096 5月 3 14:17 Templates
drwxr-xr-x 2 user user 4096 5月 3 14:17 Videos
drwxrwxr-x 2 user user 4096 5月 6 09:59 delorio_video
-rw-r–r– 1 user user 8980 5月 3 11:37 examples.desktop
-rw-rw-r– 1 user user 11092 5月 7 22:57 fairu .odt
drwxrwxr-x 2 user user 4096 5月 14 09:34 test
user@Dimension-2400C:~$ cd ./test
user@Dimension-2400C:~/test$ mkdir test
user@Dimension-2400C:~/test$ ls -l
合計 4
drwxrwxr-x 2 user user 4096 5月 14 09:36 test
user@Dimension-2400C:~/test$ cd ./test
user@Dimension-2400C:~/test/test$ mkdir test
user@Dimension-2400C:~/test/test$ ls -l
合計 4
drwxrwxr-x 2 user user 4096 5月 14 09:37 test
user@Dimension-2400C:~/test/test$ cd ./test
user@Dimension-2400C:~/test/test/test$ mkdir test
user@Dimension-2400C:~/test/test/test$ ls -l
合計 4
drwxrwxr-x 2 user user 4096 5月 14 09:39 test
user@Dimension-2400C:~/test/test/test$ cd ./test
user@Dimension-2400C:~/test/test/test/test$ mkdir test
user@Dimension-2400C:~/test/test/test/test$ ls -l
合計 4
drwxrwxr-x 2 user user 4096 5月 14 09:41 test
user@Dimension-2400C:~/test/test/test/test$

上の例では、ホームディレクトリ配下に/test/test/test/testというディレクトリを作成してパーミッションを確認しています。どれも、777-0002 = 775(rwxrwxr-x)になっています。

なぜ、そのようなことをするか説明します。
先日、新たにユーザを追加して、現在は新しいユーザーでログインして使用しているのですが、前に使っていたユーザーのMusicフォルダの音楽を、新しいユーザにコピーしてこようとして、Musicフォルダの孫フォルダを開こうとすると、権限がなく開けないという現象が起こったためです。実際、フォルダを作ったのはGUI上の操作でしたのでそちらで検証してみます。

結果

user@Dimension-2400C:~$ ls -l /home/user/test/test/test
合計 4
drwxrwxr-x 2 user user 4096 5月 14 10:06 test

ちゃんと理論通り、775になっています。

デフォルトパーミッションの謎については、今後も調査していきます。

Lubuntu ユーザの追加と削除

先日、新たにユーザーを追加して、現在そのユーザーでログインして、lubuntuを使っています。
動機は、どうもそうするのが普通なようだからです。

ユーザーを追加するには

sudo adduser ユーザー名 でできます。

すると
新しいUNIXパスワードを聞いてきます。確認入力をすると
フルネーム []:
部屋番号 []:
職場電話番号 []:
自宅電話番号 []:
その他 []:
と聞いてくるのですが必要なければ、全部ブランクでOKです。
ファイルマネージャーで見ると、/home/ 以下に新しいユーザー名のディレクトリが作成されています。

ユーザーを削除するには

deluser と userdel の2つのコマンドがあります。

userdel は、マニュアルが日本語化されています。
しかし、こんな但し書きがある「ユーザのホームディレクトリ中のファイルを削除する。ホーム ディレクトリ自体とユーザのメールスプールも消去する。ファイルシステム中のほかの場所にあるそのユーザのファイルは、手作業で探し出して削除しなければならない。」

それに対して、deluser は–remove-all-filesと–remove-homeというオプションがあり。

「remove-all-filesオプションは、システム上のそのユーザーが所有していたすべてのファイルを削除します。–remove-homeと両方のオプションを有効にした場合–remove-homeは効果がありません。ホームディレクトリとメールスプールは既に–remove-all-filesオプションによってカバーされているからです。」
とあります。

普通はホームディレクトリだけを削除するだけで十分ではないかと思われます。仮に、すべてのそのユーザーが追加したすべてのファイルを削除すると、システムの挙動に影響があるかもしれません。なので、deluserコマンドで-r オプションを指定して削除しました。

使い方は sudo deluser -r ユーザー名 です。

ユーザーのパスワードの変更

ユーザーのパスワードは簡単に変更できるようになっています。

sudo passwd  ユーザー名 で可能です。

ユーザー名なしで実行すると、実行したユーザーのパスワードが変更されます。

ユーザーにsudo権限を付与

結局、sudo権限がないと不便極まりないのでuserに権限を付与しました。

ユーザーにsudo権限を付与するには

sudo gpasswd -a ユーザー名 sudo  で出来ます。

デフォルトパーミッションの謎

先日、新たにユーザーを追加して、現在そのユーザーでログインして、lubuntuを使っています。
ところが、困ったことに、元のユーザーの一部のファイルにアクセスできなかったのです。
具体的には、Musicディレクトリの孫ディレクトリ(=ホームの曾孫ディレクトリ)を開くことができなかったのです。

このことについて、ファイル・ディレクトリの所有権・アクセス権について調べながら次回の記事で解明したいと思います。

lubuntu ディレクトリとファイルの操作

lubuntu  ディレクトリとファイルの操作

ファイル名のルール

ファイル名をつける時に、使ってはいけない記号があります。

! @ # $ % & ‘ ( ) ~ = | { } ` * < > ? ; [ ] ^ /

これらは、コマンドで特殊な意味を持つ記号なので使用できません。

ファイル名の長さは、標準で255バイト(半角英数字で255文字)が最大長です。


ホームディレクトリとカレントディレクトリ

ユーザー名のフォルダをホームディレクトリと言います。

ターミナル(端末)を起動した時、ユーザーのホームディレクトリ(ユーザー名のフォルダ)がカレントディレクトリになってイます。が、現在、ユーザーが位置しているディレクトリ。というよりも端末が認識している現在のディレクトリをカレントディレクトリといいます。

※rootユーザーは /root がホームディレクトリになります。

ls コマンドにパラメータを与えずに実行すると、カレントディレクトリのファイルの一覧を表示します。

cd コマンド・・・(change directryの略)
カレントディレクトリ(=ユーザーが現在位置しているディレクトリ(=フォルダ)。というよりシェルが、認識している現在のディレクトリ)を変更するコマンド。

cd ディレクトリ

でディレクトリに移動します。

パラメータなしで単にcdと実行すると、ホームディレクトリ(/home/ユーザー名)に移動します。

pwd コマンド

カレントディレクトリが表示されます。


パスの表記

ホームディレクトリは 〜(チルダ) で置き換えることができます。

カレントディレクトリは、 .(ピリオド) で置き換えることができます。

親ディレクトリを ..(ピリオド2つ)で記述できます。


新しいディレクトリの作成

mkdir コマンドを使います

mkdir 作成するディレクトリのパス

という形で使います。

作成するディレクトリのパスにディレクトリ名だけ指定すると、カレントディレクトリに、ディレクトリが作成されます。

-p オプションを使うことによって、存在しない親ディレクトリを同時に作成できます。

例えば

mkdir -p oya/ko とするとカレントディレクトリ以下に、oyaディレクトリその配下にkoディレクトリが作成されます。


コマンドの結果をファイルに出力する

例えば $ date > date.txt すると、date.txt に現在の日付・時刻が書き込まれます。

※date コマンドは現在の日付・時刻を表示するコマンドです。

通常、コマンドは標準出力に結果を出力します。標準出力は、普通はターミナルの画面です。

同様にして $ ls -l ~/Music > musiclist.txt

とすると、音楽の一覧が musiclist.txtに書きこまれます。


ファイルの内容を見る

ファイルの内容を見る方法としては、2種類あります。

cat や less コマンドを使う方法 と エディタを使う方法 です。

前者は、cat (Concatenate(連結する)の略) コマンドを使います。
(名前の通り複数ファイルを指定できます。)

ただし、内容が長いファイルの場合、一気にスクロールして読めません。

そんな時、lessコマンドを使うと、1ページずつ表示してくれます。

使い方は、 cat ファイルパス

同様に  less ファイルパス です。

余談ですが、昔は、ページャ(ページごとにファイルを閲覧する機能)にmoreというコマンドが使われていたそうですが、最近はlessが使われています。マニュアルを見ると説明に、「moreの反対」と書かれていてそのままなのですが、ネーミングにジョークを交えた、作者のセンスをうかがわせるもいのです。


ファイルの探し方

ファイルを探すには、find コマンドを使います。

使い方は find 検索先 判別式 アクション

という使い方をします。

具体的には find / -name *.txt などとします

*はワイルドカードと言って任意の値が検索対象に指定できます。*hoge* (hogeのキーワドだけ分かっていて前後がわからない時)や file????.odx (fileの後ろに4桁の連番が付くとき)のような表現を使えます。

上記を実行すると、たくさんの検索できますが、件数が多く、
コマンドのエラーとして  許可がありません の行がたくさん出てきて、見にくいのです
後ろに 2> /dev/null と付けてエラーの行を表示しなくすることができます。

find / -name *.txt 2> /dev/nill

とすると、マッチした行だけ、表示されます。

また、パイプ(後述) の |(パイプを使って less コマンドで ページ単位で表示することができます。

また後述、するiノード番号でも検索できます。


ファイルのコピー

cp コマンド使います。使い方は、

cp コピー元のパス コピー先のパス

コピー先にディレクトリをしていするとディレクトリ内に同じ名前でコピーされます。

cp rinakkusu.txt  .
.(ドットがカレントディレクトリを指すので、カレントディレクトリにコピーされます。

また -r オプションを使うと再帰的にサブフォルダごとコピーされます。
ここで注意することは、コピー先に同じファイルがあれば、-r オプションで強制的に上書きされます。

そこで、-i  オプションを使い

cp -ri  コピー元のパス コピー先のパス

として確認メッセージを出るようにクセつけします。


ファイル・ディレクトリの移動

ファイルの移動には mv コマンドを使います。

動作は、cp コマンドに似ています。 使い方は、

mv  移動元のパス 移動先のパス  です。

mv  nyumon.txt  nyumon2.txt

とすると、同一ディレクトリの中で違ったファイル名として移動します。リネームするのと同じですね。

cp コマンドと同じように、移動先にディレクトリを指定できます。

ディレクトリを他のディレクトリに移動する場合、mvでは、-r
オプションを指定する必要がありません。


ファイル・ディレクトリの削除

ファイルの削除には rm コマンドを使います。

rm 削除するファイルのパス

という形で使います。-i オプションを使うと、削除前に確認をしてくるので、y (yes) n(no)で返事をします。
ちなみに、ブランクでエンターを押すと、nと同じで、削除が実行されません。

ディレクトリの削除には rmdir コマンド使います。

rmdir ディレクトリは、ディレクトリにサブディレクトリやファイルがあれば実行されませn。

中身が空でないディレクトリを削除するには、rmコマンドを使って。

rm -ir ディレクトリパス というふうにします。

-r オプションを使うと、ディレクトリのサブディレクトリとファイルも一緒に削除されます。

-i オプションを使って確認が入るようにしましょう。

(-ri と -ir は同じ)


リンクを作成する

リンクという言葉には2種類のものが存在します。

ハードリンクとシンボリックリンクです。

Windowsを使っている分には、リンクというとショートカットの意味だと思いますが、これはlinuxのシンボリックリンクと同じようなものです。

実際に、ハードリンクとシンボリックリンクを作ってみます。

ln コマンドを使用します。まずはノーオプションで、カレントディレクトリはデスクトップになっています。

$ ln ~/Documents/rinnkusaki

デスクトップには何もできていません。

では、リンクのファイル名を与えてみます。

$ ln ~/Documents/rinnkusaki nrinnkusaki

それでも、デスクトップには何もできていません。

次に、オプションを指定してみます。

$ ln -d ~/Documents/rinnkusaki Hrinnkusaki

-d オプションでハードリンクが作れるということですが、マニュアルには「システムの制限により、おそらく失敗するでしょう。スーパーユーザー用」とあります。

$ ln -s ~/Documents/rinnkusaki Srinnkusaki

-s オプションでシンボリックリンクがデスクトップにできるはずですが・・・
何もできていません。

念の為に、lsコマンドで確認すると

user@Dimension-2400C:~/デスクトップ$ ls
Hrinnkusaki Srinnkusaki nrinnkusaki opera.desktop rinnkusaki

というふうにちゃんとできているのに見えません。さらに、削除したはずのOperaのショートカットも残っています。これは、どうしたことでしょう。

試しに、ホームディレクトリにシンボリックリンクを作成してみます。

$ ln -s ~/Documents/rinnkusaki ~/homeSrinnkusaki

今度はちゃんと見えてできています。
気になるのは、削除したはずのOperaのショートカットには、.desktopと付いていることです。
調べると、.desktopはデスクトップエントリというファイルで、アイコンなども含めた情報が入っているファイルでした。

今度は、ファイルマネージャからデスクトップを見てみます。

ln実行後デスクトップディレクトリ

おお、ちゃんと全部揃っている。デスクトップに表示されない問題は、とりあえず置いておきます。

上のスクリーンショットを見てもわかるように、-s オプションを付けて作ったファイルだけ矢印マークの付いたシンボリックリンクになっています。

また、オプション無しで作ったリンクはハードリンクファイルであることがわかります。

それでは、リンクから編集をしてみましょう。

シンボリックリンクファイルのSrinnkusakiで開けて編集すると他のファイルからも編集後の内容が確認できます。

ハードリンクファイルのHrinnkusakiで開けて編集しても、ちゃんと他のファイルから編集内容が確認できます。

それでは、リンク対象のファイルを削除します。

ファイルマネージャを開きなおすと。
rinnkusaki削除後

シンボリックリンクファイルのSrinnkusakiが、!マークのリンク切れになっています。

他の3つのハードリンクファイルは、元と同じように開けますし内容も同じです。

では、ハードリンクファイルに編集をかけてみましょう。

すると1つのファイルを編集すると他の2つのハードリンクファイルにも同じ内容が反映されます。

バックアップに応用できそうですね。

ただし、ハードリンクファイルは、ディレクトリや、他のパーティションや他のファイルシステムのリンクを作成できません。下のようにエラーが出ます。

ディレクトリハードリンクエラー

ここでも、作成したtestディレクトリがデスクトップに表示されていないのですが置いておきます。

では、どのファイルがハードリンクしているのかは、どうしたらわかるのでしょうか。

それは、iノード番号を参照すればわかります。

ハードリンクは、ファイル実体に対して、ユニークに付けられるiノード番号でリンクしています。

iノードは、ファイルの種類、サイズ、アクセス権、所有者、所有グループ、実体の保存場所をファイル実体とは別領域に持っています。

それでは、デスクトップのファイルのiノード番号を見て見ましょう。
ハードリンクiノード番号
$  ls -ilの実行結果です

ls コマンドの -i オプションはiノード番号を表示 -l オプションはリスト表示 のオプションです。

ここで、先ほどハードリンクで作成した3つのファイルが同じiノード番号(一番左の番号)なのがわかります。
リンク切れしたファイルは赤字になっています。

このリストの見方は「Linuxの基本コマンド「ls」の見方」に詳しく書いています。

iノード番号でファイルを検索するには

$ find / -inum iノード番号 です。

後刻、コマンドで作成したファイルがデスクトップに表示されない原因が判明しました。ホームディレクトリのフォルダ名を日本語から英語に変えた時、Desktopとデスクトップが共存したまま残っていたのが原因です。現在、実際にデスクトップにリンクしているのは、Desktopフォルダの方です。しかし、上のスクリーンショットの画面をみていたくとわかるのですが、ファイルマネージャの左側のメニューは、「デスクトップ」の表示のままです。バグの報告はどうやったらいいのでしょうか?知ってる方がおられたら教えてください。

 

lubuntu ソフトウエアのインストールと管理

lubuntuソフトウエアのインストールと管理

ソフトウェアのアップデート

Linuxでは、ソフトウエアはパッケージとして管理されています。通常、ひとつのソフトでもいくつものパッケージが関連しあって動作しています。しかし、どのソフトには、どのパッケージが必要かなどは、自分で管理できるものではありません。そこで、パッケージ管理システムがパッケジリストを管理することによって私達は簡単にインストールできるようになっています。

それでは、どんなパッケージがインストールされているか見てみましょう。

端末から dpkg -l と入力実行してみます。ものすごい勢いで表示されるはずです。

dpkgとはpackage manager for Debianの略です。

dpkg [option…] action という使い方をします。ここでのactionは -l   リスト出力です。

次に dpkg -l | less で実行します。

(ここの|はパイプラインと呼びます。¥のキーの上にあります。私は、初めて使いました。lessコマンドは、テキスト・ファイルの内容をページ単位で閲覧するコマンドです。dpkg -lの結果をページ単位で表示するという感じです。)

今度は、1ページ目で止まってくれてゆっくり見ることができ、上下キーでスクロール、スペースキーでページ送りできます。こんなにたくさんあったらどれがどう関係しているかわかりませんね。

本題のソフトウエアのアップデートですが、前述のパッケージリストを最新に更新することから始めます。

$ sudo apt-get update (パッケージリストの更新)

sudoコマンドは、他のユーザーとして実行するコマンドです。パラメータが無い場合は、スーパーユーザー権限(管理者権限)で実行するという意味。(詳しくは「Linuxのrootユーザとは」で。)
ここでは、パスワードを聞かれます。ただし、打っても表示されません。それで正常です。元のプロンプトに戻ればパッケージリストの更新成功です。

次に $ sudo apt-get upgrade (アップデートされたパッケージのインストール)

これで、ソフトウェアのアップデートが行われました。

(補足)まれにですが、$ sudo apt-get upgrade を実行すると、下のようなメッセージが出て実行できないことがあります。

「管理用ディレクトリ (/var/lib/dpkg/) をロックできません。これを使う別のプロセスが動いていませんか?」

ネットで情報を探すといろいろ対処法が出てくるのですが、私は、再起動のみで解決すると思っています。私自身は、情報どおりにリカバリーモードで立ち上げるべく、Shift を押しながら起動してみると、選択画面があらわれたので、そのままubuntuを選択して立ち上げました。結果、普通にupgrade出来ました。ただ、これでリカバリーモードというのがあるということが分かったので、何か起動トラブルの時に役に立ちそうであることはわかります。上記の現象の原因についてご存知のかたは教えてください。(補足終わり)

パッケージのインストール

パッケージをインストールの時も、1.パッケージリストの更新をまず行います。ただし直前に更新を行っているのであればその必要はありません。

1. $ sudo apt-get update (パッケージリストの更新)

もし、パッケージ名が正確にわからなければ、2.でキーワードを含むパッケージ一覧を取得出来ます。

2. $ apt-cache search パッケージ名 (キーワードを含むパッケージ一覧を取得)
(パッケージ名が正確に分かっていればこの2.のステップは省略)

次に、3.パッケージのインストールを行います

3. $ sudo apt-get install パッケージ名 (パッケージのインストール)

以上でパッケージのインストールが行われました。

セキュリティーアップデートの自動化

ソフトウエアのアップデートは手動で行われますが、セキュリティーアップデートはすぐに行いたいものです。

unattended-upgrades パッケージをインストールすることによってセキュリティーアップデートの自動化が行われます。

ダウンロードしたDebファイルのインストール

ネットを検索していて、Debファイルをダウンロードして、パッケージをインストールする場合があります。

gdebi を使用した方法をおすすめします。インストールされていなければ、
sudo apt-get install gdebi で インストール

使い方は gdebg Debファイル でOK。

Ubuntuの公式リポジトリにはないアプリであってもインストールすることが可能。
依存関係を解決して、簡単にインストールすることができます。
他にもdpkg を使用する方法もありますが、パッケージの依存関係などを、手動で調整するケースも出てくるので、私のような初心者はgdebiを使うべきでしょう。

パッケージの削除

不要になったパッケージは、以下のコマンドで削除できます。

sudo apt-get remove  パッケージ名

以上

 

Lubuntu ショートカット 一覧

 Lubuntu ショートカット 一覧

Ctrl+Alt+←     左のデスクトップに移動

Ctrl+Alt+→     右のデスクトップに移動

Shift+Alt+←      左のデスクトップに送る

Shift+Alt+→         右のデスクトップに送る

Windowキー+F1   左のデスクトップに移動

Windowキー+F2   右のデスクトップに移動

Windowキー+D    すべてのウインドウを最小化してデスクトップを表示する

Windowキー+F4   現在フォーカスのあるウィンドウを閉じる

Alt+Esc    再後面のウィンドウにフォーカスを移す

Alt+Space   ウィンドウ操作メニューを表示する

Alt+Tab    画面中央にウィンドウの一覧を横に表示して、タブキーを押すごとに次に遷移する

Alt+Shift+Tab   画面中央にウィンドウの一覧を縦に表示して、タブキーを押すごとに前に遷移する

Shift+F10    右クリックと同じ

Windowキー+Shift+→    現在表示されているウィンドウを右のウインドウにフォーカスを遷移

Windowキー+Shift+←    現在表示されているウィンドウを左のウインドウにフォーカスを遷移

Windowキー+← ウィンドウを左半分全面に移動

Windowキー+→ ウィンドウを右半分全面に移動

Windowキー+↑   ウィンドウを上半分全面に移動

Windowキー+↓   ウィンドウを下半分全面に移動

Windowキー+E   ファイルマネージャーを開く

Windowキー+R   または Alt+F2    コマンド入力ダイアログを開く

Alt+F1               または Ctrl+Esc     コントロールメニューを開く

F11    フォーカスのあるウインドウをフルスクリーンで表示、再度F11で元に戻る

Ctrl+Alt+Delete    タスクマネージャを開く

Ctrl+Alt+T    ターミナルを開く

Ctrl+Alt+L    ロック状態にする

Ctrl+F7         画面表示をOFFにする

PrintScreen   スクリーンショットを撮る(/home/ユーザー に保存される)

GENOME端末のショートカットキー

Ctrl+0    文字縮小

Ctrl+Shift+;    文字拡大

Ctrl+Shift+t    タブを追加

Ctrl+Shift+w    現在のタブを閉じる

Ctrl+Page_down,Ctrl+Page_up    タブ切り替え

編集→設定→全般タブ→アクセラレータキーを有効にするにチェックを入れると、Alt+Fでファイルメニューを開ける。

Midori のメニューバーを表示する

デフォルトでは、Midoriのメニューバーは表示されていません。
設定メニューにも、表示設定がありません。
アドレスバーとタブバーの細い隙間にカーソルを置いて、右クリックするとメニューが表示されますので、メニューバーにチェックを入れると表示されます。

ちなみに、私はOpera愛用者なのですが、もしそういう方がおられたら

Operaのキーボドショートカット

などをご参照ください。

lubuntu 強制終了・ファイアーウォール・コンソールモードなど

強制終了

もし、システムが一切の操作を受け付けずに長い間フリーズしてしまった場合、以下の操作で終了できます。電源長押しでの強制終了をする前にやってみましょう。

Alt キーを押しながら PrintScreen  R  S  E  I  U  O の順にそれぞれ少しだけ長めに押していきます。これで終了できます。

ちなみに通常時にGENOME端末からシステム終了するには、

shutdown -h now
poweroff
halt

のいずれかを使います。

再起動には

shutdown -r now
reboot

のいづれかを使います。


ターミナル(端末)コマンドの中断

コマンドの実行を強制的に終了するには

Ctr+C をタイプします。

 


ログインパスワードを忘れた時

ログインパスワードを忘れた時

に詳しく載っています。以外にも簡単なんだなという印象。私はこのページを印刷して備えてます。


ファイアーウォールの設定

Lubuntuでは、デフォルトではファイアーウォールが無効になっています。

CUIでファイアーウォールの設定を行うためには、ufwを使います。⁠

$ sudo ufw statusで現在の状態を調べましょう。

状態:非アクティブになっていたら

$ sudo ufw enable  を実行して

更に$ sudo ufw default DENY  で外部からの通信を受け付けないように設定しましょう。

アプリケーションによっては、ファイアーウォールの設定を変更する必要のあるものがありますが、基本的にはインストール時に自動で設定されるようです。

許可されているアプリケーションは

$ sudo ufw app list で確認できます。

アプリケーションに許可をするためには

$ sudo ufw allow アプリケーション名 で出来ます。

参考 Ubuntuのソフトウェアファイアウォール:UFWの利用


私の利用環境は、ubuntu でシステムインストール後にlubuntu-desktopをインストールしたLubuntuです。
ログアウトすれば、ubuntu,xface,LXDE,Lubuntu Netbook,openboxのデスクトップに切り替えることができます。

これが、LXDEのデスクトップ
LXDEデスクトップ

これが、Lubuntu Netbookのデスクトップ
lubuntu Netbook

これが、xfaceセッションのデスクトップ。非常に軽いように感じました。
ワークスペース 1_026

最後にopenboxのデスクトップですが何もありません。全面濃いグレーの画面で右クリックするとメニューが出てきます。面白い。

最後に、コンソールモードに変えるには、ログイン画面で Ctrl+Alt+F2 押下

GUIに戻るには Ctrl+Alt+F7 で戻ります。

Linux ではすべてがファイル

Linuxでは、すべてがファイルとして表されます。

どんなファイル構成になっているのか確認してみます。

端末を開きます。(Ctrl+Alt+Tのショートカットキー※で開く。GNOME 端末が開く。)

※このショートカットキーについては、Lubuntuでは ~/.config/openbox/lubuntu-rc.xml

に設定されています。

cd / と入力します。(cdと/の間にはスペースを入れる。) Enterキー押下。

#########補足###################
<cd コマンド (change directryの略)> カレントディレクトリ(=ユーザーが現在位置しているディレクトリ(=フォルダ))を変更するコマンド。
cd  ディレクトリ
でディレクトリに移動します。
パラメータなしで単にcdと実行すると、ホームディレクトリ
(/home/ユーザー名)に移動します。
#########補足終わり################

すると以下のように

user@Dimension-2400C:~$ cd /
user@Dimension-2400C:/$

~$ のところが /$ に変わります。
この~(チルダ)がホームディレクトリ(/home/ユーザー名)を指しています。
そして、 / がルートディレクトリ(すべてのディレクトリ・ファイルがこの下にある) を表しています。

ちなみに、user@Dimension-2400C:/$ をプロンプトといいます。

ユーザー名@ホスト名:カレントディレクトリのパス名$

という形式になっています。

では、user@Dimension-2400C:/$の状態で ls コマンド(ファイルやディレクトリの一覧を表示)を打ってみます。

ルートファイル

以上のような実行結果が出ます。ファイルが色分けされているのがわかります。

色と意味は

表示 意味
赤文字 リンク先が存在しないシンボリックリンク※0
赤背景/白文字 setuid※1がついた通常ファイル
黄背景/黒文字 setgid※2がついた通常ファイル
緑文字(ボールド) 実行可能な通常ファイル
修飾無し 通常ファイル
緑背景/黒文字 Sticky bit ※3が立ち、 Otherのライトアクセス※4が可能なディレクトリ
緑背景/青文字 Other のライトアクセスが可能なディレクトリ
青背景/白文字 Sticky bit が立っているディレクトリ
青文字(ボールド) ディレクトリ
シアン文字(ボールド) シンボリックリンク※0
黄文字 名前付きパイプ※6
マゼンタ文字(ボールド) UNIX ソケット※7
黄文字(ボールド) キャラクターデバイス ※8 ブロックデバイス※9

以上のような意味があります。


※0シンボリックリンク・・・ソフトリンク (Soft Link)は、コンピュータのディスク上で扱うファイルやディレクトリを、本来の位置にファイルを残しつつそれとは別の場所に置いたり別名を付けてアクセスする手段である。複製とは違い、実体がないこと、ソフトリンクで開いたファイルへの操作が実物のファイルにも反映されること、ファイルサイズが小さいのが特徴。実際には、各種OSによって名称も異なっており、それぞれ、Microsoft Windows – ショートカット、Mac OS – エイリアス、UNIX – シンボリックリンク、NTFSを搭載したWindows(Windows XP等) – ジャンクション、と呼ばれるものがこれに相当する。

※1setuidは、UNIXにおけるアクセス権を表すフラグの名称であり、ユーザーが実行ファイルを実行する際にその実行ファイルの所有者やグループの権限で実行できるようにする。set user ID の略。一般ユーザーが高い特権レベルでしか実行できないタスクを一時的に実行できるようにする仕組み。

※2setgidは、UNIXにおけるアクセス権を表すフラグの名称であり、ユーザーが実行ファイルを実行する際にその実行ファイルの所有者やグループの権限で実行できるようにする。set group ID の略。一般ユーザーが高い特権レベルでしか実行できないタスクを一時的に実行できるようにする仕組み。

※3Sticky bit・・・  Linuxカーネルは、ファイルについてのスティッキービットを無視する。

※4Otherのライトアクセス・・・Unix系システムのパーミッションは3つの「クラス」に分けて管理される。そのクラスとは「ユーザー; user」、「グループ; group」、「その他; others」である。Unix系システムでは、いずれのクラスにも以下の3種類のパーミッションが存在する。

  • 「リード; read」パーミッション:ファイルを読むことが許可される。ディレクトリの場合、ディレクトリ内に存在するファイルの一覧を読むことが許可される。
  • 「ライト; write」パーミッション:ファイルの変更が許可される。ディレクトリの場合、ツリーの構造変更(ファイルの新規作成、作成したファイルのパーミッション設定、ファイルの削除など)が許可される。
  • 「実行; execute」パーミッション:ファイルを実行することが許可される。このパーミッションはバイナリファイル以外でも設定でき、設定されたファイルは実行される(少なくとも要求されれば実行しようと試みる)。ディレクトリに設定されると、そのディレクトリに移動することができ、中のファイルにアクセスすることができる。

※6名前付きパイプ パイプ(pipe)、もしくはパイプライン (pipeline) とは、複数のプログラムの入出力をつなぐための仕組み(プロセス間通信)の一つである。名前付きパイプ(英: named pipe)は、UNIXおよびUnix系の通常のパイプを拡張したもの。通常のパイプは「無名」であり、使用しているプロセスが動作中のみ存在する。名前付きパイプは永続的で、プロセスが消滅しても存在し続けるので、使わなくなったら削除する必要がある。名前付きパイプはファイルのように扱うことができ、プロセス間通信 (IPC) を行うためにプロセスがオープンして使用する。

※7UNIX ソケット・・・UNIX系OSでは従来のファイル・インタフェースを拡張した,「ソケット」(socket)というインタフェースを通信に利用しています。ソケットは「受け口」とか「ろうそく差し」を意味する言葉です。その言葉の通り,ユーザー・プロセスは,お互いのソケットをネットワークを通して接続し,その口を通して通信を実現します

※8キャラクターデバイス・・・キャラクタデバイス(またはキャラクタスペシャルファイル)は、システムが一文字ずつデータを転送する機器に対応している。キャラクタデバイスは、テレタイプ端末、モデム、仮想コンソール、擬似端末などのようなバイトストリーム型機器を扱い、データのランダムアクセスはサポートしていないのが普通である。

※9ブロックデバイス・・・ブロックデバイス(またはブロックスペシャルファイル)は、ブロック形式でデータをやり取りする機器に対応している。ブロックデバイスは、ハードディスクドライブ/CD-ROMドライブ/メモリ領域などのアドレス指定可能な機器を扱う。


となっています。

<rootディレクトリのファイルの内容>
bin・・・基本的なコマンド。

dev・・・デバイスファイル。

initrd.img・・・Linuxの起動時に、RAMの中に一時的に作られるファイルシステムのイメージを収めたファイル。

lost+found・・・障害によって所属を失ったファイル。
opt・・・アプリのインストール先

root・・・rootユーザのホームディレクトリ

snap・・・Snapパッケージとは、CanonicalがUbuntu 16.04より新たに導入した、より安定してセキュアなパッケージシステム

tmp・・・一時ファイルが保存される

vmlinuz・・・内部にLinuxカーネル本体を包含する静的リンクされた実行ファイル

boot・・・Linuxカーネルなど、ブートローダー関連のファイルが配置される

etc・・・システムの設定ファイルが配置される

media・・・リムーバブルメディアのアマウントポイント

proc・・・プロセスに関する情報にアクセスするための仮想ファイル

run・・・起動中のプロセスのPIDが保存される。シンボリックリンクが貼られている

srv・・・HTTP、FTPなどのサービス用のデータが入っているディレクトリ

usr ・・・X Window Systemなどの多くのブログラムがサブディレクトリに格納されている

vmlinuz.old・・・vmlinuxとは、内部にLinuxカーネル本体を包含する静的リンクされた実行ファイルである。

cdrom・・・(CD-ROM?)

home・・・各ユーザー専用のフォルダ

lib・・・システムを起動するのに必要なドライバモジュールやライブラリファイル用のディレクトリ

mnt・・・NautilusなどのGUIアプリケーションが、  HDDやCD-ROMなどのストレージをマウントするのに使用するフォルダー

puppy・・・(私が、puppy Linux をブート起動した時にできた)

sbin・・・システム管理に用いる基本的なモジュール

sys・・・ドライバに関する情報にアクセスするための仮想ファイル

var・・・ログやバイナリパッケージのバージョン情報など、可変データ


<lsコマンド(list segmentsの略)について>

非常に有用なコマンドなので

詳しくはlsコマンドの使い方と覚えたい15のオプションを参照してください。


ところで、上記の ls コマンドのオプション使い方などについては、

man コマンドで調べることができます。

$ man ls で

man_ls

上記のように表示されます。

最初の NAME はその名の通り 名前とコマンドの簡単な説明
ここでは、 ls 「ディレクトリの内容をリストアップする」 になっている。
次の SYNOPSIS は概要

次の DESCRIPTIONは 説明書き
ここでは、「FILE(デフォルトでは現在のディレクトリ)に関する情報を表示します。
-cftuvSUXも–sortも指定されていない場合は、エントリをアルファベット順にソートします。ロングオプションに対する必須の引数は、ショートオプションにも必須です。」 とあります。

以下にはオプションがいっぱい書かれています(全部読んでいられない)。

また、最低限の英語を読めないと難しい。私は、英語は得意でないので、google翻訳とweblio翻訳を使ってます。

さらに、コマンド名 –help で実行すれば、完全ではないのですが、日本語のヘルプが参照出来ます。

gnome端末の操作ですが、
shift + page up/down ページ単位スクロール
Ctrl + shift + 矢印↑↓ 1行単位でスクロール
のショートカットを覚えておくと便利です。

さて、前述したショートカットキーを調べてみます。

ここでは、cat※ コマンドを使用
(※catにはもともと「ファイルを連結して標準出力に出力する」というコマンド本来の意味合いがある。cat自体が、「連結する」を意味するconcatnateの略である。)

$ cat ~/.config/openbox/lubuntu-rc.xml
すると
ショートカット設定ファイル
こんな表示が、・・・XMLファイルで記述されています。
私は、XMLファイルの読み方がわかりません。
しかし、大丈夫。Shift+Ctr+F で「<keyboard>」のキーワードで検索してみましょう。この<keyboard>より以降にショートカットキーの定義があります。
例えば、
<!– Keybindings for desktop switching –>
<keybind key=”C-A-Left”>
<action name=”GoToDesktop”>
<to>left</to>
<wrap>no</wrap>
</action>
</keybind>
のところに書いてあるのは、”C-A-Left”→Ctrl+Alt+Leftを押すと何も起こらない?
いえ、画面左下の  ↓ここ
デスクトップ切り替え
左側のデスクトップ領域に移動のアクションがなされています。もともと左側を使っていると何も起こらなかったように見えます。
ちなみに、Ctrl+Alt+Rightを押すと、右側のデスクトップ領域に移動します。

以上のように、Linuxではファイルを調べていくと大抵のことがわかりそうです。