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に設定されます。
元の/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
がターゲットディレクトリを変更するためです。
私のtmpfs設定は次のとおりです。
tmpfs /tmp tmpfs rw,mode=1777,size=12g
サイジングは、メモリとスワップがはるかに多いシステム向けです。 iノードはメモリ構造であり、ディスクに書き込まれる可能性が低いため、noatime
またはrelatime
は重要ではありません。 tmpfs
は、必要に応じて交換するためにページアウトされます。
/tmp
の755のアクセス許可は、マウントポイントのデフォルトのアクセス許可である可能性があります。従来の権限は1777で、誰でもファイルを作成できますが、他のユーザーによる操作からファイルを保護します。