非特権ユーザーとしてファイルを作成し、アクセス許可モードをに変更すると400、そのユーザーには正しく読み取り専用として表示されます。
$ touch somefile
$ chmod 400 somefile
$ [ -w somefile ] && echo rw || echo ro
ro
すべては順調です。
しかし、その後ルートがやって来ます:
# [ -w somefile ] && echo rw || echo ro
rw
一体何ですか?確かに、rootは読み取り専用ファイルに書き込むことができますが、それを習慣にするべきではありません。ベストプラクティスでは、書き込み許可ビットをテストできるように指示する傾向があり、そうでない場合は設定されています。理由のためにその方法。
私は両方を理解したいと思い、なぜこれが起こっている、そしてどのように私は得ることができます偽の書き込みビットがセットされていないファイルをテストするときにリターンコードを?
/etc/dhcp/dhcpd.confrootが所有するを操作するためのものです。ベンダー提供のを使用していdhcpdます。完全な災害ですよね?ファイルがRCSにチェックインされて、私はの使用を自動化していますrcsdiff、ciとco私たちは持っているので、オペレータが必要には...動作します。許可ビットのチェック(-w、詳細はtest(1))はci -u、ファイルを読み取り専用のままにすることに基づいて機能する最初の行のエラーになります。私はそれを捨てて、まっすぐ行っrcsdiff -qてチェックしてい$?ます。悲惨なdhcpd?それはによって所有されdhcpdます。
bash、testそれが何の[ -wためにあるのかを私に信じさせました。
4.1.2(1)-release)とRHEL7(4.2.46(2)-release)の両方を使用しています。