web-dev-qa-db-ja.com

誰でも書き込み可能なfstabを介してtmpfsを/ tmpにマウントするにはどうすればよいですか?

Tmpfsを/tmpにマウントして、ユーザー(または特定のユーザー)が書き込みできるようにしたい。マシンはDebian8.0(Raspian)を搭載したRaspberry Pi3です。私が何をしようとしても、/tmpは常にrootの権限でのみマウントされます。

次のfstabエントリを試しました。

tmpfs           /tmp            tmpfs   nosuid,nodev,noatime   0       0
tmpfs           /tmp            tmpfs   nosuid,nodev,noatime,user,uid=1000,gid=1001,mode=1777   0       0

これにより、常に次の権限が付与されます。

$ ls -alh /tmp
total 36K
drwxr-xr-x 14 root  root   500 Jul 19 10:17 .

しかし、tmpfsを/tmpではなく他の場所(例:/var/opt)にマウントすると、誰でも書き込み可能になります。

$ ls -alh /var/opt
total 4.0K
drwxrwxrwt  2 root root   40 Jul  3 12:18 .

Tmpfsを/tmpにマウントして、誰でも書き込みできるようにするにはどうすればよいですか?

mountの出力:

tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
tmpfs on /var/opt type tmpfs (rw,nosuid,nodev,relatime)

すべてのuid、gid、およびmodeオプションを使用してマウントした場合:

tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec,noatime,uid=1000,gid=1001)

編集:Linuxサービスは起動時に/tmpディレクトリの権限を755に設定しますか?これらの権限は、/tmp/var/optにシンボリックリンクしただけでも設定されるため、それ自体は誰でも書き込み可能でした。 /tmpから/var/optへのシンボリックリンクで起動した後、/var/optのアクセス許可は755に設定されます。

3
Chris Hager

元の/etc/fstab行は正しいです:

tmpfs /tmp tmpfs nosuid,nodev,noatime 0 0

/tmp/var/spool、おそらく/var/tmp(不明)などの/var/optへのシンボリックリンクの場合は、シンボリックリンクを削除し、空のディレクトリに置き換えて、新しいディレクトリを追加します。別のマウントを作成する/etc/fstabへの行。例:

tmpfs /var/spool tmpfs  defaults,noatime,nosuid,nodev,noexec,mode=0755,size=64M 0 0

そのようなすべてのシンボリックリンクを見つけるには:

Sudo find / -lname '/tmp*' 2>/dev/null

これが必要な理由は、起動時に/var/spoolなどの一部のディレクトリのアクセス許可が変更され、シンボリックリンクのchmodがターゲットディレクトリを変更するためです。

参照 fstabに1777があるのに/ tmpがパーミッション0755でマウントされるのはなぜですか?

2
bitinerant

私のtmpfs設定は次のとおりです。

tmpfs           /tmp            tmpfs   rw,mode=1777,size=12g

サイジングは、メモリとスワップがはるかに多いシステム向けです。 iノードはメモリ構造であり、ディスクに書き込まれる可能性が低いため、noatimeまたはrelatimeは重要ではありません。 tmpfsは、必要に応じて交換するためにページアウトされます。

/tmpの755のアクセス許可は、マウントポイントのデフォルトのアクセス許可である可能性があります。従来の権限は1777で、誰でもファイルを作成できますが、他のユーザーによる操作からファイルを保護します。

1
BillThor