nosuidを使用してマウントされていないNFSファイルシステムを見つけるための正規表現(特別な要件がない限り)

nosuidを使用してマウントされていないNFSファイルシステムを見つけるための正規表現(特別な要件がない限り)

mount -v 2>/some/fileコマンドを実行した後、次の正規表現を使用して別のスクリプトに解析するスクリプトがあります。

^.*[\ \t]+type[\ \t]+nfs(?![\ \t]+.*\b(?:nosuid|nosetuid)\b).*

私が経験している問題は、マウントを防止する例外を持ついくつかのNFSマウントがあることですnosuid(Solaris 11 IPSリポジトリです)。これで、既知のインストールを除外するように正規表現を変更する必要があります。

参考までに、以下はいくつかのサンプル出力ですmount -v

$ mount -v
/dev/dsk/c1t0d0s0                 on  /                  type  ufs      read/write/setuid/devices/rstchown/intr/largefiles/logging/xattr/onerror=panic/dev=840000  on  Fri  Sep  6   12:10:35  2013
/devices                          on  /devices           type  devfs    read/write/setuid/devices/rstchown/dev=4c00000                                             on  Fri  Sep  6   12:10:25  2013
ctfs                              on  /system/contract   type  ctfs     read/write/setuid/devices/rstchown/dev=4c80001                                             on  Fri  Sep  6   12:10:25  2013
proc                              on  /proc              type  proc     read/write/setuid/devices/rstchown/dev=4c40000                                             on  Fri  Sep  6   12:10:25  2013
mnttab                            on  /etc/mnttab        type  mntfs    read/write/setuid/devices/rstchown/dev=4cc0001                                             on  Fri  Sep  6   12:10:25  2013
swap                              on  /etc/svc/volatile  type  tmpfs    read/write/setuid/devices/rstchown/xattr/dev=4d00001                                       on  Fri  Sep  6   12:10:25  2013
objfs                             on  /system/object     type  objfs    read/write/setuid/devices/rstchown/dev=4d40001                                             on  Fri  Sep  6   12:10:25  2013
sharefs                           on  /etc/dfs/sharetab  type  sharefs  read/write/setuid/devices/rstchown/dev=4d80001                                             on  Fri  Sep  6   12:10:25  2013
/usr/lib/libc/libc_hwcap1.so.1    on  /lib/libc.so.1     type  lofs     read/write/setuid/devices/rstchown/dev=840000                                              on  Fri  Sep  6   12:10:31  2013
fd                                on  /dev/fd            type  fd       read/write/setuid/devices/rstchown/dev=4f00001                                             on  Fri  Sep  6   12:10:35  2013
swap                              on  /tmp               type  tmpfs    read/write/setuid/devices/rstchown/xattr/dev=4d00002                                       on  Fri  Sep  6   12:10:38  2013
swap                              on  /var/run           type  tmpfs    read/write/setuid/devices/rstchown/xattr/dev=4d00003                                       on  Fri  Sep  6   12:10:38  2013
/dev/dsk/c1t0d0s7                 on  /export/home       type  ufs      read/write/setuid/devices/rstchown/intr/largefiles/logging/xattr/onerror=panic/dev=840007  on  Fri  Sep  6   12:10:44  2013
sample-ips:/ips/blargSolaris11.1  on  /blargSolaris11.1  type  nfs      remote/read/write/setuid/devices/rstchown/soft/xattr/dev=8c00001                           on  Tue  Sep  10  12:07:46  2013

次のように、一致する行の先頭にあるインストールに基づいてIP固有のインストールを除外するように正規表現を修正しました。

^(.*|[^sample])[\ \t]+type[\ \t]+nfs(?![\ \t]+.*\b(?:nosuid|nosetuid)\b).*

しかし、これはうまくいきません...

答え1

この正規表現で何をしているのかよくわかりませんが、私にとっては大丈夫だと思います。 Perlのようで、GNUバージョンのgrep-Pスイッチを使用して、次のように正規表現を使用しました。

$ column -t mount.txt | \
     grep -vP '^(.*|[^sample])[\ \t]+type[\ \t]+nfs(?![\ \t]+.*\b(?:nosuid|nosetuid)\b).*'

はい

$ column -t mount.txt | \
     grep -vP '^(.*|[^sample])[\ \t]+type[\ \t]+nfs(?![\ \t]+.*\b(?:nosuid|nosetuid)\b).*'
/dev/dsk/c1t0d0s0                 on  /                  type  ufs      read/write/setuid/devices/rstchown/intr/largefiles/logging/xattr/onerror=panic/dev=840000  on  Fri  Sep  6   12:10:35  2013
/devices                          on  /devices           type  devfs    read/write/setuid/devices/rstchown/dev=4c00000                                             on  Fri  Sep  6   12:10:25  2013
ctfs                              on  /system/contract   type  ctfs     read/write/setuid/devices/rstchown/dev=4c80001                                             on  Fri  Sep  6   12:10:25  2013
proc                              on  /proc              type  proc     read/write/setuid/devices/rstchown/dev=4c40000                                             on  Fri  Sep  6   12:10:25  2013
mnttab                            on  /etc/mnttab        type  mntfs    read/write/setuid/devices/rstchown/dev=4cc0001                                             on  Fri  Sep  6   12:10:25  2013
swap                              on  /etc/svc/volatile  type  tmpfs    read/write/setuid/devices/rstchown/xattr/dev=4d00001                                       on  Fri  Sep  6   12:10:25  2013
objfs                             on  /system/object     type  objfs    read/write/setuid/devices/rstchown/dev=4d40001                                             on  Fri  Sep  6   12:10:25  2013
sharefs                           on  /etc/dfs/sharetab  type  sharefs  read/write/setuid/devices/rstchown/dev=4d80001                                             on  Fri  Sep  6   12:10:25  2013
/usr/lib/libc/libc_hwcap1.so.1    on  /lib/libc.so.1     type  lofs     read/write/setuid/devices/rstchown/dev=840000                                              on  Fri  Sep  6   12:10:31  2013
fd                                on  /dev/fd            type  fd       read/write/setuid/devices/rstchown/dev=4f00001                                             on  Fri  Sep  6   12:10:35  2013
swap                              on  /tmp               type  tmpfs    read/write/setuid/devices/rstchown/xattr/dev=4d00002                                       on  Fri  Sep  6   12:10:38  2013
swap                              on  /var/run           type  tmpfs    read/write/setuid/devices/rstchown/xattr/dev=4d00003                                       on  Fri  Sep  6   12:10:38  2013
/dev/dsk/c1t0d0s7                 on  /export/home       type  ufs      read/write/setuid/devices/rstchown/intr/largefiles/logging/xattr/onerror=panic/dev=840007  on  Fri  Sep  6   12:10:44  2013

sample-ips:/ips/blargSolaris11.1予想通りに始まる行がフィルタリングされていることがわかります。

関連情報