回答:
を使用する代わりsudo
に、ファイルにACLを設定するだけです。
$ ls -l /var/tmp/foo
-rw-rw---- 1 root root 4 Jul 31 15:26 /var/tmp/foo
$ sudo setfacl -m u:white:rw /var/tmp/foo
$ whoami
white
$ cat /var/tmp/foo
bar
これで、ファイルの所有者は「root」ですが、ユーザー「white」はファイルを読み書きできます。ユーザー「ホワイト」は、自分のお気に入りのエディターを使用してファイルを編集できます。
setfacl: /etc/logrotate.conf: Operation not supported
静的IPを使用して正しいファイルを書き込むスクリプトなど、必要な編集を行うスクリプトを準備します(このスクリプトの内容は、このQ&Aの範囲外です)。このスクリプトを呼び出しましょう/root/set_static_ip
。(1)
編集/etc/sudoers
(2)(visudo
より良い、それは健全性をチェックします。リモート(3)からは不可能であっても、無効なsudoersファイルでシステムを回復することは非常に困難です)、および追加
user_name_to_authorize ALL=NOPASSWD: /root/set_static_ip
これで、ユーザーはsudo /root/set_static_ip
パスワードを要求されることなく使用できるようになり、スクリプトはすべての特権で実行されます。他のコマンドは許可されません。
ユーザーにファイルを好きなだけ置換してもらいたい場合は、スクリプトは次のようになります(これを呼び出す/root/unsafe-overwrite-interface
)
#! /bin/bash -e
#
cp /tmp/temp-iface.txt /etc/network/interfaces
exit 0
...そして、ユーザーに編集/tmp/temp-iface.txt
してから実行するように指示しますsudo /root/unsafe-overwrite-interface
---上で指定したようにsudoersでそれを有効にします。または、ユーザーをACLリストに追加して、特定のファイルへの書き込み権限を与えることができます。
ただし、ファイルの内容の安全性を確認しないと、意図的または意図的ではなく、混乱が発生することに注意してください。
(1)このスクリプトはできるだけ安全でなければなりません。入力などを確認してください。完全な権限で実行されます。
(2)最新のsudoインストールでは、/etc/sudoers.d/
ディレクトリにファイルを追加することができます---更新後も存続します。
(3)sudo -i
sudoersメカニズムを変更するとき、私は通常、ルートセッションを開いたまま()、バックアップを用意しておく。
/etc/network/interfaces
ファイルを何にでも書き換えます/root/set_static_ip
。ユーザーにIPアドレス、ゲートウェイなどを入力するように求めるスクリプトを作成できない場合を除きます。これは、十分なものではありません。
/etc/sudoers
、でvisudo
はありませんsudoedit
。
/var/tmp/foo
=/etc/network/interfaces
?あなたがそこで何を言おうとしているのか実際に見たことがないので、私はLinuxにかなり慣れていません。