Могу я отсортировать файлы / etc / group и / etc / passwd?

Вторая возможность состоит в том, чтобы загрузить исходный код из восходящего потока напрямую вместо того, чтобы загружать его из репозиториев Debian. Это имеет то преимущество, что если вы не только хотите прочитать исходный код, но и хотите изменить что-то, что вы можете непосредственно зафиксировать и отправить в upstream (предполагая, что это не исправление Debian).

URL-адрес хранилища исходного кода в восходящем направлении обычно можно найти в файле /usr/share/doc/$ пакета _ или _ program _ name/copyright .

$ head /usr/share/doc/git/copyright

Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Contact: git@vger.kernel.org
Source: https://www.kernel.org/pub/software/scm/git/

Files: *
Copyright: © 2005-2014, Linus Torvalds and others.
License: GPL-2

Files: xdiff/*
Copyright: © 2003-2009, Davide Libenzi, Johannes E. Schindelin

На этот файл также ссылается packages.debian.org (поиск «Файл авторских прав»).

-121--50247-

Обратите внимание, что невозможно изменить образ ISO: эта файловая система предназначена только для чтения. Необходимо извлечь изображение, изменить файлы, а затем создать новое изображение. Я уверен, что есть программное обеспечение для этого в Windows, но я не знаю, какое.

Вы можете попытаться манипулировать файлами с помощью утилит Cygwin . Initrd - образ файловой системы, обычно ext2, для которого нет хорошей поддержки в Windows. Однако в настоящее время файл, скорее всего, будет представлять собой initramfs , даже если он называется initrd-SOMETHING , а initramfs - это cpio архив, которым можно манипулировать с помощью команды cpio в Cygwin или других портах Windows утилит Linux.

Если вы не знаете точно, что вы делаете, это, скорее всего, сложный процесс, включающий в себя проб и ошибок. Вместо этого рекомендуется установить один и тот же дистрибутив Linux на виртуальной машине ( VirtureBox удобен для этого случая использования) и использовать средства, предоставляемые этим дистрибутивом, для изменения его образа загрузки. Весьма вероятно, что это самый простой и наименее трудоемкий метод.

-121--185414-

Да, linux автоматически «очищает» абстрактные сокеты до такой степени, что уборка даже имеет смысл. Вот минимальный рабочий пример, с помощью которого можно проверить это:

#include 
#include 
#include 
#include 
#include 
#include 

int
main(int argc, char **argv)
{
  int s;
  struct sockaddr_un sun;

  if (argc != 2 || strlen(argv[1]) + 1 > sizeof(sun.sun_path)) {
    fprintf(stderr, "usage: %s abstract-path\n", argv[0]);
    exit(1);
  }

  s = socket(AF_UNIX, SOCK_STREAM, 0);
  if (s < 0) {
    perror("socket");
    exit(1);
  }
  memset(&sun, 0, sizeof(sun));
  sun.sun_family = AF_UNIX;
  strcpy(sun.sun_path + 1, argv[1]);
  if (bind(s, (struct sockaddr *) &sun, sizeof(sun))) {
    perror("bind");
    exit(1);
  }
  pause();
}

Запустите эту программу как ./a.out/test-socket & , затем запустите ss-ax | grep test-socket , и вы увидите используемый сокет. Затем убейте% ./a.out , и ss -ax покажет, что сокет исчез.

Однако причина, по которой вы не можете найти эту очистку в какой-либо документации, заключается в том, что она на самом деле не очищается в том же смысле, что неабстрактные сокеты unix-домена нуждаются в уборке. Неабстрактный сокет фактически выделяет inode и создает запись в каталоге, которую необходимо очистить в базовой файловой системе. В отличие от этого, следует думать об абстрактном сокете, который больше похож на номер порта TCP или UDP. Конечно, если привязать TCP-порт, а затем выйти, этот TCP-порт будет снова свободен. Но любое 16-битное число, которое вы использовали, существует абстрактно и всегда. Пространство имен номеров портов 1-65535 и никогда не изменяется и не нуждается в уборке.

Просто подумайте об абстрактном имени сокета, например, о номере порта TCP или UDP,Вы не можете связать один и тот же номер порта дважды (запрет SO _ REUSEADDR или SO _ REUSEPORT ). Но закрытие сокета (явно или неявно путем завершения) освобождает порт, не оставляя ничего для очистки.

33
18.02.2018, 15:52
4 ответа

Debería estar OK haciendo esto:de hecho, según el artículo y leyendo la documentación, puede ordenar /etc/passwdy /etc/grouppor UID/GID con pwck -sy grpck -s, respectivamente.

54
27.01.2020, 19:37

Aunque ErikF tiene razón en que, en general, esto debería estar bien, quiero señalar un posible problema:

Puede asignar diferentes nombres de usuario al mismo UID. Si hace uso de esto, las herramientas que asignan un UID a un nombre de usuario generalmente elegirán el primer nombre de usuario que encuentren para ese UID en /etc/passwd. La clasificación puede hacer que aparezca primero un nombre de usuario diferente. Para fines de visualización (, p. ls -lsalida ), cualquier nombre de usuario debería funcionar, pero es posible que haya configurado algún programa para aceptar solicitudes del nombre de usuario A, donde rechazará esas solicitudes si las ve provenientes del nombre de usuario B, incluso si A y B son el mismo usuario.

44
27.01.2020, 19:37

Tener root en la primera línea ha sido un "estándar" de facto durante mucho tiempo y es muy conveniente si alguna vez tiene que arreglar su shell o eliminar la contraseña, cuando se trata de problemas o recuperando sistemas.

Del mismo modo, prefiero tener usuarios de daemons/utils en el medio y usuarios estándar al final de passwdy shadow.

La respuesta

hvdtambién es muy buena para perturbar el orden de los usuarios, especialmente en sistemas con muchos usuarios mantenidos a mano.

Si logra ordenar los archivos, por ejemplo, solo para usuarios estándar, sería más sensato que cambiar el orden de todos los usuarios, en mi opinión.

2
27.01.2020, 19:37

Вот немного сложноватый код bash для аналогичной сортировки файлов shadow/gshadow безопасно(с использованием vipw -s/vigr -s)и в -месте из командной строки:

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/passwd\" -c \"wq! \" >/dev/null 2>&1" vipw -s

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/group\" -c \"wq! \" >/dev/null 2>&1" vigr -s

ПРИМЕЧАНИЕ:

  1. vi -cпередает команду редактору vim, который назначен редактором для vipw/ vigrпеременной EDITOR
  2. Код awk сортирует shadowпоpasswdgshadowпоgroup)
  3. Обратная косая черта — это всего лишь несколько уровней экранирования, необходимых в соответствии с уровнями кавычек.
  4. Вторая команда (-c \"wq!\" )принудительно записывает и закрывает отсортированный файл. Форсирование необходимо, так как shadow/gshadow часто находятся в режиме 000 (, т.е. недоступны для записи ). Обратите внимание на пробел между '!' и '\' необходим для предотвращения интерпретации оболочкой как '!\', который ссылается на событие bash.
0
27.01.2020, 19:37

Теги

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