新しいグループ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
答え2
-H
コマンドを実行するときに、sudo
「home」がユーザーのホームディレクトリとして処理されるようにするオプションを使用します。 sudo のマニュアルページで詳細な説明を見ることができます。http://linux.die.net/man/8/sudo
答え3
sudo -iu ircuser /usr/bin/irssiを試してみますか?
また、Patkos Csabaがすでに指摘したように、sudoersに設定されているenv_reset、env_keepのデフォルト値を確認してください。
sudoersのマンページから:
As a special case, if sudo's -i option (initial login) is specified,
sudoers will initialize the environment regardless of the value of
env_reset. The DISPLAY, PATH and TERM variables remain unchanged;
HOME, MAIL, SHELL, USER, and LOGNAME are set based on the target user.
On Linux and AIX systems the contents of /etc/environment are also
included. All other environment variables are removed.
したがって、sudo -i はこれらの値をバイパスするように環境を初期化します。
編集:Ubuntuボックスで設定を再現し、sudo -u ircuser /usr/bin/irssiも正しく機能します。
私の/etc/sudoersから
<snipped>
Defaults env_reset, log_output
<snipped>
testing LABUBU01=(ircuser) NOPASSWD: /usr/bin/irssi
バージョン:
testing@LABUBU01:~$ sudo -V
Sudo version 1.8.3p1
pmplugin policy_plugin 5.6.0 (034)
pmplugin io_plugin 5.6.0 (034)
testing@LABUBU01:~$ uname -a
Linux LABUBU01 2.6.35-28-generic #50-Ubuntu SMP Fri Mar 18 19:00:26 UTC 2011 i686 GNU/Linux
testing@LABUBU01:~$ ls -lap /home/
total 64
drwxr-xr-x 16 root root 4096 2012-03-02 15:57 ./
drwxr-xr-x 22 root root 4096 2011-12-08 15:48 ../
drwxr-xr-x 3 ircuser ircuser 4096 2012-03-02 15:57 ircuser/
/編集する
編集2:
あなたのエラー:
**エラー**:/home/myuser/_web/ircuser/.irssiディレクトリを作成できません。中止中...中止
状態では、ircuserのホームディレクトリではなく、ユーザーのホームディレクトリにある/home/myuser/_web/ircuser/.irssiを作成できません。 /編集2