Яка різниця між "s" і "S" в ls -la?


67

Коли я ls -la, він друкує багато атрибутів. Щось на зразок цього:

-rwSrwSr-- 1 www-data www-data   45 2012-01-04 05:17 README

Соромно, мушу зізнатися, я не знаю точного значення кожного атрибута. Наприклад, яке значення великого Sв рядку -rwSrwSr--? Що далі 1? Я інших знаю приблизно.


19
Еоніл: Немає нічого ганебного в тому, що потрібно задавати питання, адже саме про це йдеться на цьому веб-сайті. Що ж стосується тих, хто каже RTFM, то багато хто з нас робить це і досі не може знайти найпростішої відповіді, переглянувши сторінки важкої для читання документації, написаної програмістом (а я програміст). У деяких випадках ми знаходимось у системах, де довідкові сторінки не були встановлені. З усіх цих причин та багато іншого такі сайти є знахідкою. Дякую, що задали те саме питання, що і у мене.
Алан

1
Чудове запитання - дуже конкретне разом з конкретним прикладом.
Оле

Відповіді:


49

Документація lsкоманди відповідає на ці запитання. У більшості варіантів Unix знайдіть lsсторінку man ( man lsабо в Інтернеті). У Linux знайдіть інформаційну документацію ( info ls) або в Інтернеті .

Буква sпозначає, що встановлений біт setuid (або setgid, залежно від стовпця). Коли виконуваний файл встановлений, він працює як користувач, який володіє виконавчим файлом, а не користувач, який викликав програму. Лист sзамінює лист x. Можливо, файл буде налаштований, але не виконується; це позначається S, де столиця Sсповіщає вас про те, що цей параметр, ймовірно, неправильний, оскільки встановлений біт (майже завжди) марний, якщо файл не виконується.

Якщо каталог має встановлені (або setgid) дозволи, будь-які файли, створені в цьому каталозі, будуть належати користувачеві (або групі), що відповідає власнику (або групі) каталогу.

Число після дозволів - це кількість жорстких посилань . Жорстке посилання - це шлях до файлу (ім'я, іншими словами). Більшість файлів мають єдиний шлях, але ви можете зробити більше за допомогою lnкоманди. (Це відрізняється від символічних посилань: символічне посилання говорить "о, насправді, цей файл знаходиться в іншому місці, перейдіть до <місцезнаходження>".) У каталогах є N + 2 жорстких посилань, де N - кількість підкаталогів, оскільки до них можна отримати доступ від свого батьківського, від себе (через .запис) та з кожного підкаталогу (через ..запис).


5
Що це означає для OS X, коли вона застосовується до каталогу? Наприклад, $ ls /Usersповертаєтьсяdrws--S---+ 12 jdoe staff 408 Jul 9 2013 jdoe

4
@jww Це означає, що файли, створені в цьому каталозі, належатимуть до групи, якій належить каталог, але це так чи інакше для OSX. Дивіться en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories та unix.stackexchange.com/questions/12842/…
Жиль

@Gilles, Коли ви сказали, що файл не "виконується"? Це означає, що він не має привілей на виконання або що це не тип файлу, який може бути виконаний?
ransh

@ransh Я маю на увазі xдозвіл на виконання ( ).
Жиль

Я подав редагування, подібне до пункту, зробленого у відповіді @ Jag нижче
qneill

16

Відповідно до info coreutils ls(що може бути не зовсім тим, що у вас є):

`s '
Якщо встановлено біт setuid або setgid та відповідний виконуваний біт.

`S '
Якщо встановлено біт setuid або setgid, але відповідний виконуваний біт не встановлений.

Номер після частини дозволу - це кількість жорстких посилань.


2
В основному, це те, що ви отримуєтеchmod g-x,g+s dir
sanmai

6

У (сподіваюся, простіші) терміни це означає. Каталог заданий. Будь-які файли, створені там, будуть належати цій групі власника цієї папки.

Однак папка не виконується групою, тому вона відображається з великої літери S. Це, як правило, коли створюється каталог і каталог закінчується як встановлений жорсткий.

Гм .. Не впевнений, чи справді це звучало як звичайна англійська мова вгорі ..


1
Ця відповідь не дає більше або іншу інформацію, ніж існуючі відповіді.
jayhendren

1
@jayhendren Так. У ньому йдеться про каталоги. Жодна інша відповідь не робить цього. (Жил, мабуть, повинен включити свій коментар у свою відповідь.)
Спархок

0

Це тому, що виконуваного файлу немає

s -> 'x' увімкнено S -> 'x' вимкнено.

див. приклад нижче

$ ls -l

total 0

-rwsrw-r--. 1 bpkmails bpkmails 0 Jun 25 20:18 ca

$ chmod u-x ca

$ ls -l

total 0

-rwSrw-r--. 1 bpkmails bpkmails 0 Jun 25 20:18 ca

$

Чи можете ви пояснити, що це додає до існуючих відповідей?
Стівен Кітт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.