NIS является способом получить данные (данные аутентификации, путь к корневому каталогу, …) о пользователях (и другой материал). Выполнение вещей (например, создание каталога) не являются своим заданием. Таким образом, я думаю, что Вы смотрите в неправильном месте.
Большинство нельдов использует PAM для управления логинами (не только аутентификация, но также и учетное управление, ведение счетов и наиболее соответствующим образом управление сеансами). Реализация Linux (и другие) включает названный модуль pam_mkhomedir
который делает точно, что Вы хотите. Вставьте эту строку /etc/pam.d/*
для каждого сервиса, который позволяет локальным пользователям входить в систему (или в /etc/pam.d/common-session
если у Вас есть это):
session required pam_mkhomedir.so skel=/etc/skel/
Много дисков имеют размер сектора 512 байтов, означая, что любое чтение или запись на диске передают целый 512-байтовый сектор за один раз. Довольно естественно разработать файловые системы, где сектор не разделяется между файлами (который усложнил бы дизайн и повредил бы производительность); поэтому файловые системы имеют тенденцию использовать 512-байтовые блоки для файлов. Следовательно традиционные утилиты такой как ls
и du
укажите на размеры в единицах 512-байтовых блоков.
Для людей 512-байтовые единицы не очень значимы. 1 КБ является тем же порядком величины и намного более значимый. Блок файловой системы (самая маленькая единица, на которую разделен файл) на самом деле часто состоит из нескольких секторов: 1 КБ, 2 КБ и 4 КБ являются общими размерами блока файловой системы; таким образом, 512-байтовая единица сильно не выравнивается по ширине дизайном файловой системы, и нет никакого серьезного основания кроме традиции для использования 512-байтовой единицы вне дискового драйвера вообще.
Таким образом, у Вас есть традиция, которая не имеет большого движения для него и более читаемой конвенции, это берет. Немного как восьмеричный и шестнадцатеричное: нет того правильно, и один это неправильно, они - различные способы записать те же числа.
Много инструментов имеют опцию выбрать дисплеи: ls --block-size=512
для GNU ls
, установка POSIXLY_CORRECT=1
в среде для GNU df
и GNU du
получить 512-байтовые единицы (или передача -k
вызвать единицы 1 КБ). Что stat
команда в GNU coreutils выставляет как “размер блока” ( %B
значение), значение иждивенца ОС внутреннего интерфейса; в зависимости от ОС это может или не может быть связано с размером, используемым файловой системой или дисковым кодом (это обычно не — посмотрите Различие между размером блока и размером кластера). На Linux значение 512, независимо от того, что делает любой базовый драйвер. Значение %B
никогда вопросы, это - просто причуда, что это существует вообще.
stat
команды используют физический blocksize жесткого диска. В основном весь жесткий диск начиная с их начала в 1956 использовал 512-байтовые блоки. Однако это недавно начало изменяться с предстоящим из Усовершенствованного Формата.
Я подозреваю это ls
'1024byte-blocksize имеет также историческую причину. Возможно, файловой системе было однажды свойственно иметь blocksize 1 024, или это использовалось, чтобы дать Вам размер в килобайте. Но (по крайней мере, с GNU coreutils
) можно указать размер блока с --block-size=
опция.
Покопавшись в исходном коде и стандарте POSIX, я бы сказал, что ответ @antje -m и @Gilles в основном правильный.
В качестве резюме стоит процитировать комментарий из POSIX.1 -2008 :
The use of 512-byte units is historical practice and maintains compatibility with ls and other utilities in this volume of POSIX.1-2008. This does not mandate that the file system itself be based on 512-byte blocks. The -k option was added as a compromise measure. It was agreed by the standard developers that 512 bytes was the best default unit because of its complete historical consistency on System V (versus the mixed 512/1024-byte usage on BSD systems), and that a -k option to switch to 1024-byte units was a good compromise. Users who prefer the more logical 1024-byte quantity can easily alias df to df -k without breaking many historical scripts relying on the 512-byte units.
Для размера блока вls -s
:
POSIX говорит , что размер блока по умолчанию определяется реализацией -, если не задана опция -k
.
Размер блока по умолчанию, реализованный в GNU coreutils
ls
, определяется в GNU gnulib
:.gnulib/lib/human.c
/* The default block size used for output. This number may change in
the future as disks get larger. */
#ifndef DEFAULT_BLOCK_SIZE
# define DEFAULT_BLOCK_SIZE 1024
#endif
который взят из старой фиксации:
commit 96e78d1f64d7c8d2acc5ad27dc3e73b96ae80585
Author: Jim Meyering <jim@meyering.net>
Date: Mon Jun 29 15:23:04 1998 +0000
В самом сообщении фиксации ничего не говорилось о числе 1024.
И обратите внимание, что размер блока, используемый в du
и df
, также равен 1024, ls
просто решил соответствовать им. Хотя для du
и df
это конфликт со стандартом POSIX (, поэтому здесь переменная окружения POSIXLY_CORRECT
идет ). Похоже, это решение команды GNU, см. страницу википедии POSIX об этом противоречии.
Для команды stat
.
Это не часть стандарта POSIX, ноstat
системный вызов . Однако единица измерения размера блока не стандартизирована(sys _stat.h):
The unit for the st_blocks member of the stat structure is not defined within POSIX.1-2008.
Команда stat
просто отображает информацию, предоставленную системным вызовом stat
, и использует размер блока 512 с некоторыми исключениями (, они не -Linux, например. HP -UX, IBM AIX и т. д. см. макросы, определенные в gnulib/lib/stat-size.h
).
Таким образом, число 512 является скорее историческим выбором и соглашением Linux.
GNU coreutils
(, следовательно, команда ls
)не является частью ядра Linux (, следовательно, вызов stat
), они нацелены на другой системный аспект, GNU coreutils
больше для человека (легче читать ), а ядро Linux для абстрактного оборудования (, следовательно, ближе к оборудованию ).
Изменить :Размер блока 4096 — это размер блока ввода-вывода, реальный физический размер блока, вероятно, по-прежнему составляет 512 байт , как объясняется в этом вопросе .