web-dev-qa-db-ja.com

`/ etc / resolv.conf`に` chattr + i`を設定するには?

私のOS:debian9。
私のディスク上のファイルシステム:

$ Sudo blkid  | awk '{print $1 ,$3}'
/dev/sda2: TYPE="ext4"
/dev/sda1: TYPE="vfat"
/dev/sda3: TYPE="ext4"
/dev/sda4: TYPE="ext4"
/dev/sda5: TYPE="swap"

chattr +i/etc/resolv.confに追加するには:

Sudo chattr +i /etc/resolv.conf
chattr: Operation not supported while reading flags on /etc/resolv.conf
ls -al /etc/resolv.conf
lrwxrwxrwx 1 root root 31 Jan  8 15:08 /etc/resolv.conf -> /etc/resolvconf/run/resolv.conf
Sudo  mount -o remount,acl /
Sudo chattr +i  /etc/resolvconf/run/resolv.conf
chattr: Inappropriate ioctl for device while reading flags on /etc/resolvconf/run/resolv.conf

chattr +i/etc/resolve.confに設定する方法

  1. /dev/sda1は、Windowsでは空です。

  2. 私のdebianは/dev/sda2にインストールされています

    $ df 
    Filesystem     1K-blocks     Used Available Use% Mounted on
    udev             1948840        0   1948840   0% /dev
    tmpfs             392020     5848    386172   2% /run
    /dev/sda2       95596964 49052804  41644988  55% /
    
  3. aclがインストールされています。

    $ dpkg -l acl    
    Desired=Unknown/Install/Remove/Purge/Hold   
    | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
    |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)    
    ||/ Name           Version      Architecture Description   
    +++-==============-============-============-=================================
    ii  acl            2.2.52-3+b1  AMD64        Access control list utilities   
    
  4. これらのfindmntコマンドからの出力情報はありません:

    Sudo findmnt -fn / | grep -E "acl|user_xattr"
    Sudo findmnt -fn / | grep vfat
    Sudo findmnt -fn $(dirname $(realpath /etc/resolv.conf)) | grep tmpfs
    
6
scrapy

きみの /etc/resolv.confはおそらくシンボリックリンクです。詳細は この説明 を参照してください。

あなたは試すことができます:

chattr +i "$(realpath /etc/resolv.conf)"

ルートマウントポイントはAccess Control Lists(acl)またはExtended Attributesをサポートしていますか? ?

それを介してそれを確認してください:

findmnt -fn / | grep -E "acl|user_xattr" || echo "acl or user_xattr mount option not set for mountpoint /"

ルートパーティションのタイプは「VFAT」ですか? 「VFAT」はACLsをサポートしていないと思います。

それを介してそれを確認してください:

findmnt -fn / | grep vfat

または、シンボリックリンクのターゲットディレクトリはtmpfsですか? ACLtmpfsで失われる

試して:

findmnt -fn $(dirname $(realpath /etc/resolv.conf)) | grep tmpfs && echo $(dirname $(realpath /etc/resolv.conf)) is tmpfs

乾杯

5
Dominik Kummer

ご覧のとおり、シンボリックリンクにchattr属性を設定できないようです。また、tmpfsではサポートされていません。 chattrのマニュアルページ は、

すべてのフラグがすべてのファイルシステムでサポートまたは利用されるわけではありません。ファイルシステム固有の詳細については、btrfs(5)ext4(5)xfs(5)などのファイルシステム固有のmanページを参照してください。

そして、不変のフラグやtmpfs(5)chattrについての言及はありません。

ACLまたは拡張属性はこれとは関係ありません。chattr属性は、ext4inode構造のこのテーブル に見られるように、iノードに直接格納されます。


プログラムによる変更を防ぐために、他の方法を見つける必要があります。 systemd-resolvedは、ファイルをそのままにするのに十分スマートでなければなりません シンボリックリンクを静的ファイルに置き換える場合:

/etc/resolv.confresolv.conf(5)を参照)を処理する3つのモードがサポートされています。

・または、/etc/resolv.confは他のパッケージによって管理される場合があります。その場合、systemd-resolvedはDNS構成データを読み取るためにそれを読み取ります。この操作モードでは、systemd-resolvedはこの構成ファイルのプロバイダーではなくコンシューマーです。

このファイルに対して選択された操作モードは、/etc/resolv.conf/run/systemd/resolve/resolv.confへのシンボリックリンクであるか、127.0.0.53をDNSサーバーとしてリストしているかに応じて、完全に自動的に検出されることに注意してください。

それを変更する可能性のある他のプログラム(DHCPクライアントなど)がある場合は、それらの再構成について確認する必要があります。または、それをシンボリックリンクではなく静的ファイルにした後のchattr +i /etc/resolv.confですが、それを書き込もうとすると、結果のエラーが気に入らない場合があることに注意してください。

6
ilkkachu
Sudo rm /etc/resolv.conf //remove the symlink
Sudo nano /etc/resolv.conf //create the new file and populate it as you wish
Sudo chattr +i /etc/resolv.conf //change its attributes as you wish.....
2
Oduoe

-fフラグで試してください

Sudo chattr  -f   +i   /etc/resolv.conf
0