web-dev-qa-db-ja.com

他のユーザーが自分のフォルダからファイルをコピーすることを許可しますか?

私はUbuntuで作業していますが、このフォルダーにjarファイルがあります/export/home/david

そして、machineBユーザーとしてdavidにログインしています。

他のユーザーも同じマシンにログインしています。そして、他のユーザーに上記のjarファイルを自分の場所からコピーしてもらいたい。

しかし、許可が得られないため、どういうわけか彼らはそれを行うことができません。そのjarファイルまたは私のフォルダーに何らかの権限を追加して、誰でもそのフォルダーからファイルをコピーできるようにする方法はありますか?

更新:-

以下は私が得た結果です-

david@machineB:~$ groups david
david : uucp

otheruser@machineB:~$ groups otheruser
otheruser : app

david@machineB:~$ ls -l foo.jar
-rw-r--r-- 1 david uucp 6543346 2014-03-07 18:27 foo.jar

david@machineB:~$ ls -ld $(echo "/home/david/foo.jar" | sed -r ':a; s#(.*)/[^/]*$#\1#;p;ta')
drwxr-xr-x 22 root   root 4096 2014-05-04 08:04 /home
drwx------  4 david uucp 4096 2014-03-07 18:36 /home/david
6
arsenal

なんらかの理由により、$HOMEディレクトリにアクセスできるのはあなただけです。これは、私がよく知っているどのシステムでもデフォルトではありません。あなたやあなたのシステム管理者がおそらくこの方法で設定しているでしょう。

とにかく、あなたがする必要があるのは、あなたの$HOMEへの読み取り/実行アクセス権を全員に与えることだけです。これは、人々が自分の作業を共有できるようにするほとんどのマルチユーザーシステムの標準です。次のコマンドを実行するだけです:

chmod a+rx ~/

これにより、家の権限がrwxr-xr-xに設定され、$HOMEから誰でもファイルをコピーできるようになります。

8
terdon

自分のファイルへの読み取りアクセス権を誰かに与えるには、そのファイルに対する読み取り権限と、そのファイルにつながるすべてのディレクトリに対する実行権限が必要です。たとえば、Aliceが/home/david/for_alice/foo.jarを読み取れるようにするには、Aliceにfoo.jarへの読み取り権限と、/home/davidおよび/home/david/for_aliceに対する実行権限があることを確認する必要があります。ディレクトリ内のファイルに名前でアクセスするには、ディレクトリの実行権限が必要です。ディレクトリー内のファイルの名前をリストするには、ディレクトリーの読み取り許可が必要です。ディレクトリの読み取り権限は厳密には必要ありませんが、特にAliceがGUIを使用してファイルを参照する場合は、より便利です。

現時点では、ホームディレクトリにはrwx------の権限があります。つまり、自分だけがその中のファイルにアクセスできます。

ファイルがローカルで、ACLツールが使用可能な場合は、アリスへのアクセスを許可できます。次のコマンドは、Aliceにfor_aliceおよびその下のすべてのファイルへの読み取りアクセス権を付与しますが、ホームディレクトリ内のファイルをリストすることはできません(名前を推測した場合でも、ホームディレクトリ内のファイルにアクセスできます)。

setfacl -m user:alice:x ~
setfacl -Rd -m user:alice:rX ~/for_alice
setfacl -R -m user:alice:rX ~/for_alice

ACLが不可能な場合は、グループ全体またはシステム全体のアクセスを許可する必要があります。

chmod +x ~
chmod -R a+rX ~/public

chmod o+r /path/to/fileは、友達がコピーできるようにするファイルの読み取り権限を世界中に許可します。

chmod -R o+r /path/to/directory; find /path/to/directory -type d -exec chmod o+x {} \+は、他のユーザーが/path/to/directory。 Patrickが指摘したように、ワールドの読み取りと実行を追加する必要があります(chmod o+rx)すべての親ディレクトリでも同様。これをスクリプト化する最も簡単な方法は頭の上ではわかりませんが、それが可能であると確信しています。

2
jayhendren