エディタを使用してsudo権限を必要とするファイルを変更する

エディタを使用してsudo権限を必要とするファイルを変更する

sudo権限を必要とするファイルを変更するには、KomodoEditを使用したいと思います。ただしsudo、(何らかの理由で)KomodoEditを起動できません。どういうわけかKomodoにこれらのファイルを編集する権限を付与できますか/etc/hosts? (特にapache2ファイルと。

答え1

使用sudoedit <file>。ファイルのローカルコピーを作成し、ユーザー権限で編集してから元の場所にコピーし直します。利点は、エディタが通常のユーザーとして実行されることです。

デフォルト値とは異なるエディタを指定するには、次をEDITOR一時的に設定できます。

EDITOR=/usr/bin/someeditor sudoedit /etc/hosts

これを行うには、sudoパッケージをインストールしてユーザーをsudoグループに追加する必要があります。

答え2

理論的には、komodoeditにsuidビットを設定し、所有者をrootに変更することでこれを行うことができます。

sudo chown root:root /path/to/komodoedit
sudo chmod u+s /path/to/komodoedit

できること:

  1. chown所有者をrootに設定
  2. chmod u+sファイルを実行しているすべての人に所有者(実行)と同じ権限を付与します。

所有者をrootに設定したので、所有者を効果的に実行することはrootになります。

これは、すべてのユーザーに有効なルートエディタを与えるため、希望する回答ではない可能性があります。

Marcoが述べたように、セキュリティの面ではsudoeditはより正確になります。

答え3

比較的きれいなアプローチは、特定のファイルに対するユーザーID権限を使用することです。アクセス制御リストaclコマンドgetfaclを入手するには、パッケージをインストールする必要がありますsetfacl。その後、ユーザー「myname」とファイルに対して/etc/hosts次のコマンドを実行できます。

sudo setfacl -m 'u:myname:rw' /etc/hosts

その後、ファイルを読み書きできます。ls -lファイルを見ると、ファイルにACLがあることを示すフラグが表示されます+

-rw-r--r--+ 1 root root 221 Nov  5 16:55 /etc/hosts

getfaclファイルにaclをリストできます。後で使用するときにaclを削除する

sudo setfacl -x 'u:myname' /etc/hosts

または、setfacl -bすべてのACLを削除してください。 (ファイルシステムはaclをサポートする必要があります。)

関連情報