一般ユーザーから cifsをマウントできるように /etc/fstabを記述したけれど、credentialsを指定すると以下のエラーになる。
Unable to set current process capabilities: Operation not permitted
error 2 (No such file or directory) opening credential file
mount.cifs.cを追ってみると、cap_set_procを使って credentialsに指定されたファイルを読み取る権限を得ようとして Operation not permittedになっているのがわかる。
これってば、マウントしようとしたユーザー以外がオーナーの credentialsファイルを読めるようにこういう処理がされていると思うのだけど、一般ユーザーがそんな権限の取得を出来るわけもなく、エラーになっていると言う事みたい。
今回の場合は credentialsファイルのオーナーは自分なのでこの処理自体不要。*1
configureを追ってみた結果、libcapを使わない指定を見つけられたので適用してみる。
5219-0.logcd ~/package/cifs-utils/
rm *
wget -r -nd 'ftp://ftp.riken.jp/Linux/slackware/slackware64-current/source/n/cifs-utils/'
patch <../patches/cifs-utils_no_libcap.patch
sh cifs-utils.SlackBuild
installpkg /tmp/cifs-utils-5.5-x86_64-2.txz
方向的には「credentialsファイルを開けなかった場合に cap関係の処理をしてリトライ」ってのが正解な気がするけど、そもそも「This program is not installed setuid root – “user” CIFS mounts not supported.」と言われているのを「chmod u+s /sbin/mount.cifs」して無理矢理動かしているわけだしね。
*1 rootから root以外がオーナーのcredentialsファイルを読むことも出来なくなる気もするので一般のサーバには適用できない判断だよな。