Почему я не могу сбросить привилегии CORD Sudo?

Вы повторно реализуете подстановку истории.

$ mv /server/today/logfile1 /nfs/logs/ && gzip /nfs/logs/logfile1
$ !!:gs/logfile1/logfile2

Если вы еще не выполнили первую команду и просто хотите выполнить набор аналогичных команд, рассмотрите цикл:

for f in logfile logfile2; do
    mv /server/today/"$f" /nfs/logs && gzip /nfs/logs/"$f"
done
4
22.06.2019, 22:31
2 ответа

Ваш язык программирования просто не поддерживает такие вещи.

Это сложно сделать в Linux из-за архитектуры Linux. Библиотеки C (, например. GNU и musl )скрывают эту сложность. Это по-прежнему одна из известных проблем с потоками в Linux.

Язык Go не повторяет механизм библиотек C. Текущая реализация этих функций не является системным вызовом и не является с 2014 года .

Дополнительная литература

8
27.01.2020, 20:53

Вы можете проверить с помощью libcap , у него есть официальная библиотека go с примерами . В примере используется psx.Syscall3(syscall.SYS_SETUID,...)для установки uid (как @JdeBP сказал, что go удаляет реализацию дляsyscall.Setuid()). Библиотека psx является частью libcap.

Package psx provides a CGo backed API for invoking system calls in a way that each system call is mirrored on all pthreads of the combined Go/CGo runtime. Since the Go runtime treats all pthreads as interchangeable, a feature like this is needed to meaningfully change process privilege (including dropping privilege) in a Go program running on Linux

1
23.08.2020, 21:03

Теги

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