読み取り専用環境でtmuxを起動するには?

読み取り専用環境でtmuxを起動するには?

読み取り専用環境でtmuxセッションを開始しようとしてエラーが発生します。

pi@raspberry(ro):~/development$ tmux
error creating /tmp//tmux-1000 (Permission denied)

このRaspberry Piプロジェクトでは、予期しない停電が発生する可能性があり、UPSはオプションではありません。 SD カードの損傷を防ぐため、次の説明に従ってシステムを読み取り専用に設定してください。これ投稿(下記から参考のために抜粋)。tmuxこのプロジェクトの開発が続いているので、さまざまな理由でまだ使用したいと思います。

tmuxこの状況で継続的に利点を活用するにはどうすればよいですか?

読み取り/書き込みと読み取り専用を切り替えるコマンドのエイリアスが指定されている場合は、そのエイリアスの何かを変更する必要がありますrwか?ro


読み取り専用プロセスの要約

  1. 編集/boot/cmdline.txtと追加fastboot noswap ro
  2. ロギングの交換sudo apt-get install -y busybox-syslogd && sudo apt-get remove -y --purge rsyslog
  3. ファイルを更新し/etc/fstab,roすべてのブロックデバイスにフラグを追加します。
  4. また、ファイルの末尾に一時ファイルシステムのエントリを追加します。
tmpfs        /tmp            tmpfs   nosuid,nodev         0       0
tmpfs        /var/log        tmpfs   nosuid,nodev         0       0
tmpfs        /var/tmp        tmpfs   nosuid,nodev         0       0
  1. ファイルの移動
$ sudo rm -rf /var/lib/dhcp /var/lib/dhcpcd5 /var/spool /etc/resolv.conf
$ sudo ln -s /tmp /var/lib/dhcp
$ sudo ln -s /tmp /var/lib/dhcpcd5
$ sudo ln -s /tmp /var/spool
$ sudo touch /tmp/dhcpcd.resolv.conf
$ sudo ln -s /tmp/dhcpcd.resolv.conf /etc/resolv.conf
  1. 編集する/lib/systemd/system/systemd-random-seed.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=/bin/echo "" >/tmp/random-seed
ExecStart=/lib/systemd/systemd-random-seed load
ExecStop=/lib/systemd/systemd-random-seed save
TimeoutSec=30s
  1. `/etc/bash.bashrc/を追加します。
set_bash_prompt() {
    fs_mode=$(mount | sed -n -e "s/^\/dev\/.* on \/ .*(\(r[w|o]\).*/\1/p")
    PS1='\[\033[01;32m\]\u@\h${fs_mode:+($fs_mode)}\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
}
alias ro='sudo mount -o remount,ro / ; sudo mount -o remount,ro /boot'
alias rw='sudo mount -o remount,rw / ; sudo mount -o remount,rw /boot'
PROMPT_COMMAND=set_bash_prompt
  1. 追加/etc/bash.bash_logout:
mount -o remount,ro /
mount -o remount,ro /boot


以下を追加するように編集されました。

mode=01777追加しよう/tmpとしましたが、/etc/fstab/まだ同じエラーが発生します。

pi@raspberry(ro):~$ cat /etc/fstab 
proc            /proc           proc    defaults          0       0
PARTUUID=ea7e04d2-01  /boot           vfat    defaults,ro          0       2
PARTUUID=ea7e04d2-02  /               ext4    defaults,noatime,ro  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that
tmpfs           /tmp          tmpfs   nosuid,nodev,mode=01777            0       0
tmpfs           /var/log      tmpfs   nosuid,nodev            0       0
tmpfs           /var/tmp      tmpfs   nosuid,nodev            0       0
pi@raspberry(ro):~$ tmux
error creating /tmp//tmux-1000 (Permission denied)

パターンでも同じことが起こりますrw


#2を追加するように編集されました。

トラブルシューティング:

pi@raspberry(ro):~$ tmux
error creating /tmp//tmux-1000 (Permission denied)
pi@raspberry(ro):~$ ls -ld /tmp/
drwxr-xr-x 8 root root 260 Oct  5 21:17 /tmp/
pi@raspberry(ro):~$ sudo chmod 01777 /tmp
sudo chmod 01777 /tmp
pi@raspberry(ro):~$ tmux    ###### IT WORKED!
[exited]
pi@raspberry(ro):~$ 

成功後sudo chmod


#3を追加するように編集されました。

ファイルにはパターンがtmp.mount含まれています。01777

pi@raspberry(ro):~$ cat /run/systemd/generator/tmp.mount 
# Automatically generated by systemd-fstab-generator

[Unit]
SourcePath=/etc/fstab
Documentation=man:fstab(5) man:systemd-fstab-generator(8)
Before=local-fs.target

[Mount]
Where=/tmp
What=tmpfs
Type=tmpfs
Options=nosuid,nodev,mode=01777

#4を追加するように編集されました。

/tmpシンボリックリンクではないので、インストールにエラーはないようです...

pi@raspberry(ro):~$ ls -ld /tmp
drwxr-xr-x 8 root root 260 Oct  5 01:44 /tmp
pi@raspberry(ro):~$ sudo systemctl status tmp.mount
* tmp.mount - /tmp
   Loaded: loaded (/etc/fstab; generated)
   Active: active (mounted) since Sun 2020-10-04 21:59:28 EDT; 1min 46s ago
    Where: /tmp
     What: tmpfs
     Docs: man:fstab(5)
           man:systemd-fstab-generator(8)
   CGroup: /system.slice/tmp.mount

Oct 04 21:59:27 raspberry systemd[1]: Mounting /tmp...
Oct 04 21:59:28 raspberry systemd[1]: Mounted /tmp.
pi@raspberry(ro):~$ logread |grep tmp
Oct  4 22:01:14 raspberry authpriv.notice sudo:       pi : TTY=pts/0 ; PWD=/home/pi ; USER=root ; COMMAND=/bin/systemctl status tmp.mount

ベストアンサー1

tmpfsのエントリは、/etc/fstabディレクトリの特定のモードを指定しないため、/tmpを使用して作成されました0700。項目を次に変更します。

tmpfs     /tmp        tmpfs   nosuid,nodev,mode=01777

のすべてのユーザーを許可します/tmp

おすすめ記事