/usr/lib/libgcc_s.so へのアクセス ― 2017年07月07日 11時55分49秒
% ls -sld /usr/lib/libgcc_s.so /lib/libgcc_s.so.1
46 -r--r--r-- 1 root wheel 45468 Jul 3 20:51 /lib/libgcc_s.so.1
0 lrwxr-xr-x 1 root wheel 23 Jul 3 20:51 /usr/lib/libgcc_s.so -> ../../lib/libgcc_s.so.1
head でどうしたらファイルが読めるか実験をする。
realpath で展開した後ならファイルを読めるが、シンボリックリンクを辿ると、駄目な様だ。realpath は realpath ライブラリ関数を呼ぶだけのコマンド。シンボリックリンクを展開し、実ファイルに展開できる。
% head -c5 /usr/lib/libgcc_s.so
head: /usr/lib/libgcc_s.so: Permission denied
% head -c5 `realpath /usr/lib/libgcc_s.so`
ELF%
head -c5 `ls -l /usr/lib/libgcc_s.so| nawk '{print $NF}'`
head: ../../lib/libgcc_s.so.1: No such file or directory
まあ、最後のコマンドではリンクを手元で展開しては正しいファイルのパスでは無くなるが…。
stat と lstat はシステム関数で、こちらもそれに対応する stat コマンドが存在する。-L をつけると lstat の動作になり、シンボリックリンクを表示する。
% stat -L /usr/lib/libgcc_s.so
stat: /usr/lib/libgcc_s.so: stat: Permission denied
最近のコメント