읽기 전용 환경에서 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.

관련 정보