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

Два ответа:

Короткий: Вы хотите использовать сценарий энергии AnsiEsc.vim. Это будет скрывать фактические escape-последовательности ANSI в Вашем файле и использовать подсветку синтаксиса для окраски текста соответственно. Проблема с использованием этого в пейджере состоит в том, что необходимо будет заставить энергию распознать, когда использовать это. Я не уверен, можно ли просто всегда загружать его, или если это будет конфликтовать с другими файлами синтаксиса. Необходимо будет экспериментировать с ним.

Длинный ответ: лучшим, на которое можно надеяться, является частичное непортативное решение. Меньше на самом деле не понимает терминальные escape-последовательности, так как это в основном терминальный зависимый, но меньше может распознать (подмножество) их и будет знать для передачи их до терминала, если Вы используете -r (или -R) опция. Терминал будет интерпретировать escape-последовательности и изменяет атрибуты текста (цвет, полужирный, подчеркивание...). Vim, будучи редактором, а не пейджером, просто не передает необработанные управляющие символы терминалу. Это должно отобразить их в некотором роде, таким образом, можно на самом деле отредактировать их. Можно использовать другие функции энергии, такие как укрывательство и подсветка синтаксиса, чтобы скрыть последовательности и использовать их для того, чтобы выбрать цвета текста, однако, это будет всегда обрабатывать только подмножество терминальных последовательностей и не будет, вероятно, работать над некоторыми терминалами.

Это - действительно только одна из многих проблем, с которыми Вы столкнетесь, когда Вы попытаетесь использовать текстовый редактор в качестве пейджера.

17
17.10.2013, 02:36
5 ответов

user2 потребности выйти из системы и въехать задним ходом. Полномочия группы прокладывают себе путь:

  • Когда Вы входите в систему, Ваши процессы добираются, чтобы иметь состав группы в Вашей основной группе, упомянутой в /etc/passwd, плюс все группы, где Ваш пользователь упоминается в /etc/group. (Более точно, pw_gid поле в getpw(your_uid), плюс все группы, которых Ваш пользователь является явным членом. Вне /etc/passwd и /etc/group, информация может прибыть из других видов пользовательских баз данных, таких как NIS или LDAP.) Основная группа становится эффективным идентификатором группы процесса, и другие группы становятся его дополнительными идентификаторами группы.
  • Когда процесс выполняет операцию, которая требует членства в определенной группе, такой как доступ к файлу, та группа должна быть или эффективным идентификатором группы или одним из дополнительных идентификаторов группы процесса.

Как Вы видите, Ваше изменение в составе группы пользователя только вступает в силу, когда пользователь входит в систему. Для выполнения процессов слишком поздно. Таким образом, пользователь должен выйти из системы и въехать задним ходом. Если это - слишком много проблемы, пользователь может войти в систему отдельной сессии (например, на другой консоли, или с ssh localhost).

Под капотом процесс может только когда-либо терять полномочия (идентификаторы пользователей, идентификаторы группы, возможности). Ядро запускается init процесс (первый процесс после начальной загрузки) работающий как корень и каждый процесс в конечном счете происходит от того процесса ¹. login процесс (или sshd, или часть Вашей среды рабочего стола, которая регистрирует Вас в), все еще работает как корень. Часть его задания должна отбросить полномочия пользователя root и переключиться на надлежащего пользователя и группы.

Существует одно единственное исключение: выполнение setuid или setgid программы. Та программа получает дополнительные полномочия: это может принять решение действовать под различными подмножествами членств родительского процесса плюс дополнительное членство в пользователе или группе, которая владеет setxid исполняемым файлом. В частности, корневая программа setuid имеет корневые полномочия, следовательно может сделать все ²; это то, как программы как su и sudo может сделать их задание.

¹ иногда существуют процессы, которые не получены из init (initrd, udev), но принцип является тем же: запустите как корень и теряйте полномочия со временем.
² Запрет многоуровневых концепций безопасности, таких как SELinux.

28
27.01.2020, 19:46
  • 1
    Обратите внимание, что, если Вы используете настольный GUI, просто выходя из системы и въезжаете задним ходом к окну терминала, не сбросит состав группы. У меня была эта проблема, и я должен выйти из своей сессии GUI также: ч –  user394 14.07.2014, 17:15
  • 2
    @user394 и въезжает задним ходом, действительно сбрасывает состав группы. Если Вы просто закрываете окно терминала, Вы не выходите из системы. –  Gilles 'SO- stop being evil' 14.07.2014, 17:23

Вы, возможно, должны были бы иметь user2, выходят из системы и въезжают задним ходом (или просто попробуйте ssh'ing в создать новую сессию входа в систему). Проверьте вывод id --groups показать числовые идентификаторы группы для пользователя.

10
27.01.2020, 19:46

sudo su $(whoami)

По сути тот же обходной путь, что и ssh localhost, но его можно использовать без установки ssh-сервера.

Пока у вас есть root. Но если вы только что добавили новую группу и изменили разрешения, вы, скорее всего, так и сделаете.

7
20.08.2021, 13:38

Существует случай, когда выход пользователя из системы не помогает -, если вы используете директиву ControlMaster ssh для хоста. Если вы добавите свою учетную запись в группу, выйдете из системы и снова войдете в нее в рамках того же соединения ControlMaster, сеанс по-прежнему не будет показывать вам нового членства. Вам придется принудительно разорвать соединение с Мастером с помощью

ssh -O exit hostname

перед повторным входом в систему.

2
20.08.2021, 13:38

Вам необходимо "перезагрузить" группы текущего пользователя. Если вы хотите сделать это без запуска новой оболочки, используйте следующую команду:

exec su -l $USER

execзаменяет текущий образ процесса новым образом процесса, определяемым командой su -l $USER, которая представляет собой новую оболочку для текущего пользователя

0
20.08.2021, 13:38

Теги

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