root以外のユーザーとしてsudoを実行し、そのユーザーのホームディレクトリに保存します。

root以外のユーザーとしてsudoを実行し、そのユーザーのホームディレクトリに保存します。

新しいグループircuserと新しいユーザーを追加しました。ircuser

私はその中にvisudo次の行を入れました。

myuser localhost=(ircuser) NOPASSWD: /usr/bin/irssi

ircuser設定ファイル、キャッシュなどを保存する必要があるディレクトリは次のとおりです。

drwxrwx--- 2 ircuser ircuser 4096 Mar  2 10:28 ircuser

コマンドを実行するとき:

sudo -Hu ircuser /usr/bin/irssi

または

sudo -u ircuser /usr/bin/irssi

ircuserプログラムはディレクトリに設定ファイルを保存できません。

** ERROR **: Couldn't create /home/myuser/_web/ircuser/.irssi directory
aborting...
Aborted

ただし、動作方法は次のとおりですircuser

ps auxw | grep irssi
ircuser  11962  0.0  0.0  23684  2504 pts/6    S+   11:18   0:00 /usr/bin/irssi

それではirssi実行されますが、ircuser同じユーザーが所有するディレクトリには書き込めませんか?そのままにするには何を変更する必要がありますか?

ベストアンサー1

問題は、ircuserホームディレクトリに接続されている親ディレクトリの1つにeXecute権限がないことです。すべてのユーザーがトラバース(ディレクトリを表示する必要はありません)できるようにするには、ユーザーにグループまたは他のグループを介した実行権限が必要です。次の権限がある場合:

drwxrwx--- 2 myuser myuser 4096 Mar  2 10:28 /home/myuser

そして、ircuserはmyuserグループに属していないため、そのディレクトリに対する権限がある場合でも、ircuserはその下のすべてのファイルにアクセスできません。これを試してみると:

drwxrwx--x 2 myuser myuser 4096 Mar  2 10:28 /home/myuser

その後、ircuserはmyuserのホームディレクトリを参照できませんが、その下にある一部のファイルにアクセスできます。/home/myuser/_web/ircuser

更新:上記の説明からいくつかの詳細を省略しました。ファイルシステムを参照すると、権限が評価されます。ルートディレクトリからアクセスできないフォルダは、現在のディレクトリからアクセスできます。作業ディレクトリを別の場所に変更すると、現在のディレクトリへのハンドルが失われ、そこにあるファイルへのアクセスが失われます。 sudo su - ircuserなどのコマンドを使用すると、suはroot権限を放棄する前にircuserのホームディレクトリに切り替えます。この時点で、ircuserのホームディレクトリが現在の作業ディレクトリであるため、これに有効なハンドルがあります。 irssi が起動すると、ircuser のホームディレクトリから ircuser として実行されます。現在のディレクトリに対するeXecute権限があるため、.irssiにアクセスしようとすると機能します。 eXecute 権限のないディレクトリを通過しなければ失敗します。たとえば、ファイルを開くには、/home/myuser/_web/ircuser/.irssi現在のディレクトリから始めて相対パスを使用します。これは、eXecute権限のない場所に../../_web/ircuser/.irssi移動する必要があるためです。/home/myuser

おすすめ記事