Создание пользователя с правами на чтение всех каталогов на сервере Linux

does it simply write the pressed key into a buffer (available through a char-device?)

Да, я должен сказать.

И затем есть своего рода каскад от (низкоуровневой )консоли к tty (виртуальному )к псевдо -tty. Нажатие клавиши записывается в /dev/tty1 или /dev/tty5 в зависимости от того, какая «консоль» активна.

А в xterm (вывод ps axf):

  467 tty1     Ss     0:38  \_ -bash
 5820 tty1     S+     0:00      \_ xinit fvwm -- vt9
 5821 tty9     S<sl+  54:15          \_ /usr/lib/Xorg :0 vt9
 5831 tty1     S      0:00          \_ xterm -geometry +1+1 -n login fvwm
 5833 pts/0    Ss+    0:38              \_ fvwm
...
...
  773 pts/0    S      0:07                  \_ xterm
  775 pts/2    Ss+    0:00                  |   \_ bash
14452 pts/0    S      0:04                  \_ xterm
14454 pts/1    Ss     0:00                  |   \_ bash
14507 pts/1    S      0:00                  |       \_ xfontsel
31044 pts/1    R+     0:00                  |       \_ ps ax f
19549 pts/0    S      0:00                  \_ xterm
19551 pts/3    Ss+    0:00                      \_ bash

Это показывает, как Xorg запускается на tty9 с tty1, и как fvwm (оконный менеджер )и xterm (эмулятор терминала )"берут" /dev/pts/0, и это новый оболочки, получающие /dev/pts/1, pts/2. пц/3 и так далее.

Теперь, независимо от того, активирую ли я этот bash-процесс pid 19551 pts/3, указав на его окно xterm, а затем нажму клавишу, или если я сделаю echo hello >/dev/pts/3из консоли, например / dev/tty5 символы переходят к правильному процессу.

man psхорошо объясняет (, он перечисляет их )в разделе КОДЫ СОСТОЯНИЯ ПРОЦЕССА:

S    interruptible sleep (waiting for an event to complete)
s    is a session leader    
+    is in the foreground process group

Я оставляю вас с этими ключевыми словами...

1
29.10.2020, 11:50
1 ответ
sftpsrv=/usr/libexec/openssh/sftp-server
cp -a ${sftpsrv} ${sftpsrv}.super
chmod 500 ${sftpsrv}.super
chown someuser ${sftpsrv}.super
/sbin/setcap cap_dac_read_search+ep ${sftpsrv}.super

Вам нужно подключиться к серверу таким образом:

sftp -s /usr/libexec/openssh/sftp-server.super address

И это работает!

ls -la /tmp | grep TEST
drwx------.  2 root   root       60 Oct 29 13:08 TEST

sftp -s /usr/libexec/openssh/sftp-server.super localhost
user@localhost^s password: 
Connected to localhost.
sftp> cd /tmp/TEST
sftp> ls
123  

/tmp/TESTпринадлежит пользователю root и имеет права доступа 700.


Вот возможное непроверенное решение на случай, если ваш клиент не может запросить бинарный файл пользовательского сервера sftp -:

Match User someuser
    Subsystem sftp /usr/libexec/openssh/sftp-server.super
1
18.03.2021, 22:54

Теги

Похожие вопросы