特定のユーザーに、特定のディレクトリ内のファイルとディレクトリのユーザーとグループの所有権を変更する権限を付与するにはどうすればよいですか。
グーグルしてみるとこんな内容がありましたねsetfacl
、ユーザーにファイルとディレクトリの権限を変更するための特定の権限を付与できます。。しかし、私が知っている限り、このコマンドはchown許可を許可しません。
したがって、ファイルがあると仮定すると
user1 user1 theFile1
user1 user1 theDirectory1
次のコマンドを実行すると失敗します。
[user1@THEcomputer]$ chown user2 theFile
コンピュータへのルートアクセス権があります。chown
ディレクトリ内でコマンドを実行するためのユーザー権限を付与する方法はありますか?
更新:グループにユーザーを追加する方法。
ここにいる記事一度グループdatamover
に追加しました。hts
[root@Venus ~]# usermod -a -G datamover hts
[root@Venus ~]# exit
logout
[hts@Venus Receive]$ groups
hts wireshark datamover
[hts@Venus Receive]$
アップデート(RuiFRibeiroの住所説明):
ディレクトリの所有権をディレクトリに変更しても機能しません。スクリーンショットをご覧ください。
[datamover@Venus root]$ ls -la
total 311514624
drwxrwxrwx. 6 datamover datamover 4096 Oct 14 14:05 .
drwxr-xr-x 4 root root 4096 Aug 20 16:52 ..
-rwxrwxrwx. 1 datamover datamover 674 Aug 31 16:47 create_files.zip
drwxrwxrwx 2 datamover datamover 4096 Oct 17 17:07 dudi
-rwxrwxrwx. 1 datamover datamover 318724299315 Oct 13 15:47 Jmr400.mov
-rwxrwxrwx. 1 datamover datamover 182693854 Aug 31 16:47 Jmr_Commercial_WithSubtitles.mov
-rwxrwxrwx. 1 datamover datamover 80607864 Aug 31 16:47 Jmr_DataMover_Final.mov
drwxrwxrwx. 2 datamover datamover 122880 Aug 23 11:54 ManyFiles
drwxrwxrwx. 3 datamover datamover 4096 Oct 25 07:18 Receive
drwxrwxrwx 2 datamover datamover 4096 Oct 14 13:40 sarah
-rwxrwxrwx 1 datamover datamover 3184449 Oct 14 14:05 SourceGrid_4_40_bin.zip
[datamover@Venus root]$ cd ./Receive/
[datamover@Venus Receive]$ ls -la
total 178540
drwxrwxrwx. 3 datamover datamover 4096 Oct 25 07:18 .
drwxrwxrwx. 6 datamover datamover 4096 Oct 14 14:05 ..
-rwxrwxrwx 1 hts hts 182693854 Oct 25 07:18 Jmr_Commercial_WithSubtitles.mov
drwxrwxrwx 2 datamover datamover 122880 Oct 23 13:33 ManyFiles
[datamover@Venus Receive]$ chown datamover:datamover ./Jmr_Commercial_WithSubtitles.mov
chown: changing ownership of './Jmr_Commercial_WithSubtitles.mov': Operation not permitted
ファイル所有者としての試みは次のとおりです。
[hts@Venus Receive]$ chown datamover:datamover Jmr_Commercial_WithSubtitles.mov
chown: changing ownership of 'Jmr_Commercial_WithSubtitles.mov': Operation not permitted
ご覧のとおり、両方の可能性は機能しません。
更新(アドレスカウンターパターンへの回答)
ファイル所有者(およびルート)はグループの所有権を変更できます。ただし、所有者が属するグループに限ります。
はい、まずログアウトする必要があります。私の試みの結果は次のとおりです。
[hts@Venus ~]$ groups hts
hts : hts wireshark datamover
[hts@Venus ~]$ cd /mnt/DataMover/root/Receive/
[hts@Venus Receive]$ ls -la
total 178540
drwxrwxrwx. 3 datamover datamover 4096 Oct 25 07:18 .
drwxrwxrwx. 6 datamover datamover 4096 Oct 14 14:05 ..
-rwxrwxrwx 1 hts hts 182693854 Oct 25 07:18 Jmr_Commercial_WithSubtitles.mov
drwxrwxrwx 2 datamover datamover 122880 Oct 23 13:33 ManyFiles
[hts@Venus Receive]$ chown hts:datamover ./Jmr_Commercial_WithSubtitles.mov
[hts@Venus Receive]$ ls -la
total 178540
drwxrwxrwx. 3 datamover datamover 4096 Oct 25 07:18 .
drwxrwxrwx. 6 datamover datamover 4096 Oct 14 14:05 ..
-rwxrwxrwx 1 hts datamover 182693854 Oct 25 07:18 Jmr_Commercial_WithSubtitles.mov
drwxrwxrwx 2 datamover datamover 122880 Oct 23 13:33 ManyFiles
[hts@Venus Receive]$ chown datamover:datamover ./Jmr_Commercial_WithSubtitles.mov
chown: changing ownership of ‘./Jmr_Commercial_WithSubtitles.mov’: Operation not permitted
[hts@Venus Receive]$
datamoverグループにhtsを追加すると、グループセクションの所有権を変更できるため、その説明は部分的に回答され検証されます。
答え1
ルートのみがファイルの所有権を変更する権限を持っています。かなり近代的なLinuxディストリビューションはこのCAP_CHOWN
機能を提供します。この機能を持つユーザーは、任意のファイルの所有権を変更することもできます。CAP_CHOWN
グローバルなので、一度与えられると、ローカルファイルシステム上のすべてのファイルに適用されます。
ファイル所有者(およびルート)はグループの所有権を変更できます。ただし、所有者が属するグループに限ります。したがって、ユーザUがグループA、B、Cに属しているがグループDには属していない場合、UはUが所有するファイルのグループをA、B、Cに変更できますが、Dには変更できません。ランダムな変更を探している場合は、これがCAP_CHOWN
行く方法です。
警告する CAP_CHOWN
CAP_CHOWN
有能なシェルを持つユーザーがroot権限を取得できるという点で、深刻なセキュリティリスクがあります。 (たとえば、chown
自分のlibc、トロイの木馬にパッチを適用すると、chown
ルートプロセスがそれを選択するのを返して待ちます。)
特定のディレクトリの所有権を変更する機能を制限したいので、役に立つツールはありません。代わりに、予想される制限を処理するために独自のバリアントを作成できますchown
。プログラムには次の機能が必要ですCAP_CHOWN
。
setcap cap_chown+ep /usr/local/bin/my_chown
警告する
あなたのプログラムは元のバージョンを模倣することができますchown
。my_chown
user:group filename(s)
。入力検証は非常に慎重に行ってください。境界外のソフトリンクに特に注意しながら、各ファイルが予想される制限を満たしていることを確認してください。
プログラムへのアクセスを特定のユーザーに制限するには、特別なグループを作成し、グループの所有権をそのグループに設定し、my_chown
権限を0750に設定してから、グループに参加できるすべてのユーザーを追加できます。あるいは、適切なルールを使用することができますsudo
(この場合、能力魔法も必要ありません)。より柔軟性が必要な場合は、念頭に置いているルールをmy_chown
。
答え2
私も同じ問題を抱えており、すでにACLを使用していました。これはあなたの場合には適用されないかもしれませんが、私の場合、特定のユーザーはディレクトリツリーへの書き込みアクセス権を持ち、他のすべてのユーザーは読み取りアクセス権を持っています。小さなsetuidプログラムを書くことでした。他人の読み取りアクセスを変更します。
この問題を議論する質問は次のとおりです。