Bash запускает определенные команды, например, будучи пользователем root, но не пользователем root

Возможные решения:

Используйте EasyBCD Software:
Если вы можете загрузиться в Windows OS,
Используйте EasyBCD Software для создания собственных загрузочных записей, так что из них вы можете создать загрузочные записи для этих дистрибутивов linux и для ОС Windows.
EasyBCD

Используйте Boot-Repair:
Живая загрузка ОС Ubuntu, установка Boot-Repair.
Boot-Repair создаст новый загрузчик grub.
Boot-Repair

Я думаю, что EasyBCD решит вашу проблему.

Предложения и комментарии приветствуются.

1
13.01.2015, 23:26
2 ответа

Примечание: Вместо кода PHP ниже, если вы хотите отслеживать все git commits (а не только те, которые зафиксированы с помощью PHP), должна быть возможность установить пост-commit hook с аналогичным выходом.


Сразу после написания вопроса я наткнулся на это действительно простое руководство . Исходя из этого, я сделал следующее:

Создайте каталог журнала и установите разрешения

Я не тестировал это без установки разрешений, но я предполагаю, что это необходимо.

sudo mkdir /var/log/gitweb
sudo chown: www-data /var/log/gitweb

Функция PHP git регистрации

Эта строка кода выполняется каждый раз, когда я запускаю git commit в коде php. Новые строки заменяются пользовательской последовательностью, так что каждая фиксация находится в собственной строке (насколько мне известно, Logwatch может работать только построчно). При анализе с помощью Logwatch он будет заменен на новые строки.

shell_exec('(git log -1 --date=iso --name-status | awk 1 ORS="[NEWLINE_HERE]" ; echo) >> /var/log/gitweb/gitweb.log');

Группа файлов журнала Logwatch

# /etc/logwatch/conf/logfiles/gitweb.conf

LogFile = gitweb/*.log
Archive = gitweb/*.gz
*ExpandRepeats

Не совсем уверен, что делает * ExpandRepeats, но это было в руководстве, с которым я связался.

Служба Logwatch

# /etc/logwatch/conf/services/gitweb.conf

Title = "Git commits"
LogFile = gitweb

Анализатор Logwatch

Это делает две вещи:

  • Фильтрация по времени (она печатает только строки/фиксации с правильной датой)
  • Преобразовать последовательность custrom обратно в новые строки (см. PHP-код выше)

Я знаю абсолютно нулевое значение perl (я посмотрел другие сценарии Logwatch для справки), поэтому

use Logwatch ':dates';

my $filter = TimeFilter('%Y-%m-%d %H:%M:%S');

while (defined(my $ThisLine = <STDIN>)) {
   if ($ThisLine =~ /$filter/) {
      $ThisLine =~ s/\[NEWLINE_HERE\]/\n/g;
      print $ThisLine;
   }
}

exit(0);

Набор поворота журнала

# /etc/logrotate.d/gitweb

/var/log/gitweb/*log {

    daily

    # keep 10 old logs
    rotate 10

    # don't do anything if the log is missing
    missingok

    # don't do anything if the log is empty
    notifempty

    # zip the archived logs
    compress
}
-121--290276-

Если не требуется переместить почтовый магазин; просто восстановите конфигурацию до значений по умолчанию.

Эта настройка хранит сообщения электронной почты в /var/spool/mail/< имя _ пользователя > вместо home , что означает, что любой устанавливаемый MUA будет знать, где его найти без какой-либо перенастройки.

-121--290273-

Вы хотите изменить файл /etc/sudoers , чтобы разрешить любому пользователю запускать df с sudo без необходимости знать пароль root.

Для получения дополнительной информации о настройке см. Как запустить определенную программу как root без запроса пароля? .

0
29.04.2021, 00:33

Это не потому, что www-data не имеет достаточно привилегий, а потому, что www-data не владеет файлами, о которых идет речь. Разрешения для обоих мест, вероятно, установлены на drwx------, что означает, что только владелец может читать файл. gvfs используется в качестве точки монтирования для Filesystems in Userspace (FUSE) и поэтому принадлежит пользователю, а /media/sh/.... , очевидно, принадлежит пользователю sh. Поскольку /dev/sda4 был смонтирован на точку монтирования, принадлежащую sh, 'www-data' не может пройти через него. Даже для пользователя с повышенными привилегиями файловая система gvfs обычно недоступна.

Для проблемы /media/sh/... вы можете изменить разрешения для этой точки монтирования или просто размонтировать и повторно смонтировать /dev/sda4 на другую точку монтирования, имеющую drwxr-xr-x разрешения. Что касается gvfs, вы не сможете перейти к нему от имени другого пользователя. Существуют обходные пути, но они не должны применяться в многопользовательской системе.

0
29.04.2021, 00:33

Теги

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