suid เชซเชพเช‡เชฒเซ‹เชฅเซ€ เช›เซเชŸเช•เชพเชฐเซ‹ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ sudo เชจเซ‡ เชฌเชฆเชฒเซ‡ UNIX เชธเซ‹เช•เซ‡เชŸ เชชเชฐ SSH เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹

Red Hat เชจเชพ เชŸเชฟเชฎเซ‹เชฅเซ€ เชฐเซ‡เชตเชฟเช…เชฐ, Fedora Silverblue เช…เชจเซ‡ Fedora Kinoite เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชจเชพ เชœเชพเชณเชตเชฃเซ€เช•เชพเชฐเซ‡, sudo เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชŸเชพเชณเชตเชพเชจเซ‹ เชฎเชพเชฐเซเช— เชชเซเชฐเชธเซเชคเชพเชตเชฟเชค เช•เชฐเซเชฏเซ‹, เชœเซ‡ เชตเชฟเชถเซ‡เชทเชพเชงเชฟเช•เชพเชฐเซ‹ เชตเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ suid เชฌเซ€เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. sudo เชจเซ‡ เชฌเชฆเชฒเซ‡, เชธเชพเชฎเชพเชจเซเชฏ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฐเซ‚เชŸ เช…เชงเชฟเช•เชพเชฐเซ‹ เชธเชพเชฅเซ‡ เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, UNIX เชธเซ‹เช•เซ‡เชŸ เชฆเซเชตเชพเชฐเชพ เชธเชฎเชพเชจ เชธเชฟเชธเซเชŸเชฎ เชธเชพเชฅเซ‡ เชธเซเชฅเชพเชจเชฟเช• เช•เชจเซ‡เช•เซเชถเชจ เชธเชพเชฅเซ‡ ssh เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชธเซเชคเชพเชต เช›เซ‡ เช…เชจเซ‡ SSH เช•เซ€ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชชเชฐเชตเชพเชจเช—เซ€เช“เชจเซ€ เชšเช•เชพเชธเชฃเซ€.

sudo เชจเซ‡ เชฌเชฆเชฒเซ‡ ssh เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฅเซ€ เชคเชฎเซ‡ เชธเชฟเชธเซเชŸเชฎ เชชเชฐเชจเชพ suid เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซ‹เชฅเซ€ เช›เซเชŸเช•เชพเชฐเซ‹ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชตเชฟเชคเชฐเชฃเซ‹เชจเชพ เชฏเชœเชฎเชพเชจ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชตเชฟเชถเซ‡เชทเชพเชงเชฟเช•เซƒเชค เช†เชฆเซ‡เชถเซ‹เชจเชพ เช…เชฎเชฒเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ‹ เช•เซ‡ เชœเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เช†เช‡เชธเซ‹เชฒเซ‡เชถเชจ เช˜เชŸเช•เซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ Fedora Silverblue, Fedora Kinoite, Fedora Sericea เช…เชจเซ‡ Fedora Onyx. เชเช•เซเชธเซ‡เชธเชจเซ‡ เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฏเซเชเชธเชฌเซ€ เชŸเซ‹เช•เชจ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฏเซเชฌเซ€เช•เซ€) เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเชคเซเชคเชพเชจเซ€ เชชเซเชทเซเชŸเชฟ เชตเชงเชพเชฐเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชธเซเชฅเชพเชจเชฟเช• เชฏเซเชจเชฟเช•เซเชธ เชธเซ‹เช•เซ‡เชŸ เชฆเซเชตเชพเชฐเชพ เชเช•เซเชธเซ‡เชธ เชฎเชพเชŸเซ‡ OpenSSH เชธเชฐเซเชตเชฐ เช˜เชŸเช•เซ‹เชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ (เชเช• เช…เชฒเช— sshd เช‰เชฆเชพเชนเชฐเชฃ เชคเซ‡เชจเซ€ เชชเซ‹เชคเชพเชจเซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒ เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡):

/etc/systemd/system/sshd-unix.socket: [Unit] เชตเชฐเซเชฃเชจ=OpenSSH เชธเชฐเซเชตเชฐ เชฏเซเชจเชฟเช•เซเชธ เชธเซ‹เช•เซ‡เชŸ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ=man:sshd(8) man:sshd_config(5) [เชธเซ‹เช•เซ‡เชŸ] ListenStream=/run/sshd.sock Accept=yes [เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹] WantedBy=sockets.target

/ etc / systemd / system /[เช‡เชฎเซ‡เช‡เชฒ เชธเซเชฐเช•เซเชทเชฟเชค]: [เชฏเซเชจเชฟเชŸ] เชตเชฐเซเชฃเชจ=เช“เชชเชจSSH เชชเซเชฐเชคเชฟ-เช•เชจเซ‡เช•เซเชถเชจ เชธเชฐเซเชตเชฐ เชกเชฟเชฎเชจ (เชฏเซเชจเชฟเช•เซเชธ เชธเซ‹เช•เซ‡เชŸ) เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ=man:sshd(8) man:sshd_config(5) Wants=sshd-keygen.target After=sshd-keygen.target [Service] ExecStart=- /usr/sbin/sshd -i -f /etc/ssh/sshd_config_unix StandardInput=socket

/etc/ssh/sshd_config_unix: # เชซเช•เซเชค เช•เซ€ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เช›เซ‹เชกเซ‡ เช›เซ‡ เชชเชฐเชฎเชฟเชŸเชฐเซ‚เชŸเชฒเซ‹เช—เชฟเชจ เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค-เชชเชพเชธเชตเชฐเซเชก เชชเชพเชธเชตเชฐเซเชก เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เช•เซ‹เชˆ เชชเชฐเชฎเชฟเชŸEmptyเชชเชพเชธเชตเชฐเซเชก เชจเชฅเซ€ เช•เซ‹เชˆ GSSAPIA เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃ เช•เซ‹เชˆ # เชชเชธเช‚เชฆ เช•เชฐเซ‡เชฒ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ€ เชเช•เซเชธเซ‡เชธเชจเซ‡ เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เชฐเซเชŸ เชเชกเชฎเชฟเชจ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเชพเชฎเชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ # เชซเช•เซเชค เช‰เชชเชฏเซ‹เช— เช›เซ‹เชกเซ‡ เช›เซ‡. 2 เช…เชงเชฟเช•เซƒเชค เช•เซ€เชเชซเชพเช‡เชฒ .ssh /เช…เชงเชฟเช•เซƒเชค_ เช•เซ€ # sftp เชธเชฌเชธเชฟเชธเซเชŸเชฎ sftp /usr/libexec/openssh/sftp-เชธเชฐเซเชตเชฐเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ‹

systemd เชฏเซเชจเชฟเชŸเชจเซ‡ เชธเช•เซเชฐเชฟเชฏ เช…เชจเซ‡ เชฒเซ‹เชจเซเชš เช•เชฐเซ‹: sudo systemctl deemon-reload sudo systemctl enable โ€” now sshd-unix.socket

เชคเชฎเชพเชฐเซ€ SSH เช•เซ€เชจเซ‡ /root/.ssh/authorized_keys เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ‹

SSH เช•เซเชฒเชพเชฏเช‚เชŸ เชธเซเชฏเซ‹เชœเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช.

เชธเซ‹เช•เซ‡เชŸ เชฏเซเชŸเชฟเชฒเชฟเชŸเซ€ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹: sudo dnf install socat

เช…เชฎเซ‡ เชฏเซเชจเชฟเช•เซเชธ เชธเซ‹เช•เซ‡เชŸ เชฆเซเชตเชพเชฐเชพ เชเช•เซเชธเซ‡เชธ เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‹เช•เซเชธเซ€ เชคเชฐเซ€เช•เซ‡ เชธเซ‹เช•เซ‡เชŸเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€เชจเซ‡ /.ssh/config เชจเซ‡ เชชเซ‚เชฐเช• เชฌเชจเชพเชตเซ€เช เช›เซ€เช: เชนเซ‹เชธเซเชŸ host.local เชฏเซเชเชฐ เชฐเซ‚เชŸ # เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚เชฅเซ€ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ /run/host/run เชจเซ‡ เชฌเชฆเชฒเซ‡ /run/host/run เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ ProxyCommand socat - UNIX-CLIENT: / run/ host/run/sshd.sock # SSH เช•เซ€ IdentityFile เชจเซ‹ เชชเชพเชฅ ~/.ssh/keys/localroot # เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชต เชถเซ‡เชฒ เชฎเชพเชŸเซ‡ TTY เชธเชชเซ‹เชฐเซเชŸ เชธเช•เซเชทเชฎ เช•เชฐเซ‹ RequestTTY เชนเชพ # เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เช†เช‰เชŸเชชเซเชŸ เชฆเซ‚เชฐ เช•เชฐเซ‹ เชฒเซ‹เช—เชฒเซ‡เชตเชฒ เชถเชพเช‚เชค

เชคเซ‡เชจเชพ เชตเชฐเซเชคเชฎเชพเชจ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚, เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชธเช‚เชšเชพเชฒเช• เชจเชพเชฎ เชนเชตเซ‡ เชชเชพเชธเชตเชฐเซเชก เชฆเชพเช–เชฒ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เชฐเซ‚เชŸ เชคเชฐเซ€เช•เซ‡ เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชนเชถเซ‡. เช“เชชเชฐเซ‡เชถเชจ เชคเชชเชพเชธเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡: $ssh host.local [เชฐเซเชŸ ~]#

เช…เชฎเซ‡ "ssh host.local" เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ bash เชฎเชพเช‚ sudohost เช‰เชชเชจเชพเชฎ เชฌเชจเชพเชตเซ€เช เช›เซ€เช, เชœเซ‡ sudo: sudohost() { if [[ ${#} -eq 0 ]]; เชชเช›เซ€ ssh host.local "cd \"${PWD}\"; exec \"${SHELL}\" --login" else ssh host.local "cd \"${PWD}\"; exec \ยป${@}\ยปยป fi }

เชคเชชเชพเชธเซ‹: $ sudohost id uid=0(root) gid=0(root) group=0(root)

เช…เชฎเซ‡ เช“เชณเช–เชชเชคเซเชฐเซ‹ เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชฆเซเชตเชฟ-เชชเชฐเชฟเชฌเชณ เชชเซเชฐเชฎเชพเชฃเซ€เช•เชฐเชฃเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ€เช เช›เซ€เช, เชœเซเชฏเชพเชฐเซ‡ เชฏเซเชฌเซ€เช•เซ€ เชฏเซเชเชธเชฌเซ€ เชŸเซ‹เช•เชจ เชฆเชพเช–เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชœ เชฐเซ‚เชŸ เชเช•เซเชธเซ‡เชธเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เช…เชฎเซ‡ เชคเชชเชพเชธเซ€เช เช›เซ€เช เช•เซ‡ เชนเชพเชฒเชจเซ€ Yubikey เชฆเซเชตเชพเชฐเชพ เช•เชฏเชพ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเซเชธ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เช›เซ‡: lsusb -v 2>/dev/null | grep -A2 Yubico | grep "bcdDevice" | awk '{print $2}'

เชœเซ‹ เช†เช‰เชŸเชชเซเชŸ 5.2.3 เช…เชฅเชตเชพ เชคเซ‡เชฅเซ€ เชตเชงเซ เชนเซ‹เชฏ, เชคเซ‹ เช•เซ€ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ ed25519-sk เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹, เช…เชจเซเชฏเชฅเชพ ecdsa-sk เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹: ssh-keygen -t ed25519-sk เช…เชฅเชตเชพ ssh-keygen -t ecdsa-sk

เชœเชพเชนเซ‡เชฐ เช•เซ€เชจเซ‡ /root/.ssh/authorized_keys เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ‡ เช›เซ‡

sshd เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚ เช•เซ€ เชชเซเชฐเช•เชพเชฐ เชฌเช‚เชงเชจเช•เชฐเซเชคเชพ เช‰เชฎเซ‡เชฐเซ‹: /etc/ssh/sshd_config_unix: PubkeyAcceptedKeyTypes [เช‡เชฎเซ‡เช‡เชฒ เชธเซเชฐเช•เซเชทเชฟเชค],[เช‡เชฎเซ‡เช‡เชฒ เชธเซเชฐเช•เซเชทเชฟเชค]

เช…เชฎเซ‡ เชฏเซเชจเชฟเช•เซเชธ เชธเซ‰เช•เซ‡เชŸเชจเซ€ เชเช•เซเชธเซ‡เชธเชจเซ‡ เชซเช•เซเชค เชเชตเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค เช•เชฐเซ€เช เช›เซ€เช เช•เซ‡ เชœเซ‡เชฎเชจเซ€ เชชเชพเชธเซ‡ เชตเชฟเชถเซ‡เชทเชพเชงเชฟเช•เชพเชฐเซ‹ เชเชฒเชฟเชตเซ‡เชŸเซ‡เชก เชนเซ‹เชˆ เชถเช•เซ‡ (เช…เชฎเชพเชฐเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, เชเชกเชฎเชฟเชจ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชจเชพเชฎ). /etc/systemd/system/sshd-unix.socket เช‰เชฎเซ‡เชฐเซ‹: [เชธเซ‹เช•เซ‡เชŸ] ... SocketUser=adminusername SocketGroup=adminusername SocketMode=0660

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹