
フラッシュ デバイスからユーザーが指定したアーカイブにファイルを転送できる Bash シェル スクリプトを作成しようとしています。ただし、このユーザーがこのアーカイブ ディレクトリにサブディレクトリを作成できないように制限したいと思います。
注記:つまり、本質的には、ユーザーが作成/指定するアーカイブ ディレクトリをフラットな 1 レベル構造にしたいのです。
これを実現する方法が全く分かりませんので、ご協力いただければ幸いです。
答え1
これを簡単に実現するネイティブ メカニズムはありません。ディレクトリは実際にはファイルであるため、Linux の権限システムではファイルとディレクトリの作成に個別の権限を指定できません。ただし、次の方法を試してください。
- すべてのアーカイブ ディレクトリを、この目的のためだけに作成された 1 人 (または数人の異なる) のユーザーが所有するようにします。その名前を archiveuser とします。
すべてのアーカイブ ディレクトリ (たくさんあると思います) をこのユーザーが所有するようにします。例:
$ chown archiveuser:archiveuser /somedir/archivedir1 $ chown archiveuser:archiveuser /somedir/archivedir2 $ chown archiveuser:archiveuser /somedir/archivedir3
アーカイブディレクトリへのアクセスを所有者のみに制限します:
$ chmod 700 /somedir/archivedir1 $ chmod 700 /somedir/archivedir2 $ chmod 700 /somedir/archivedir3
コマンドにアーカイブ ディレクトリへのアクセス権
sudo
を付与するメカニズムを使用します。cp
に追加
/etc/sudoers
:someuser1 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/* someuser2 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/*
もちろん、このコマンドの使用を許可する必要があるすべてのユーザーに対して適切なグループを作成すると便利です。
sudo
チュートリアルをお読みください :-)。以上です。ユーザーは以下を使用する必要があります。
$ sudo -u archiveuser cp /path/to/pendrive/somefile /somedir/archiveuser/
より使いやすくするために、エイリアスを作成することもできます (つまりalias cpt='sudo -u archiveuser cp'
)。この場合、cp -r
ディレクトリをコピーするために必要な は によって許可されていないことにも注意してください。また、コマンドは権限によって防止されます。このようにして、目的は達成されます。sudo
mkdir