В чем разница между «s» и «S» в ls -la?


67

Когда я ls -la, это печатает много атрибутов. Что-то вроде этого:

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

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


19
Eonil: Нет ничего постыдного в том, что нужно задавать вопрос, ведь это то, о чем этот сайт. А что касается тех, кто говорит RTFM, многие из нас ДЕЛАЮТ ЭТО и до сих пор не могут найти самый простой ответ после просмотра страниц труднодоступной документации, написанной программистом (и я программист). В некоторых случаях мы находимся в системах, где страницы руководства не были установлены. По всем этим причинам и многим другим подобные сайты являются находкой. Спасибо, что задали тот же вопрос, что и у меня.
Алан

1
Отличный вопрос - очень конкретный и конкретный пример.
Оле

Ответы:


49

Документация lsкоманды отвечает на эти вопросы. В большинстве вариантов Unix найдите lsсправочную страницу ( man lsили онлайн). В Linux найдите документацию Info ( info ls) или онлайн .

Буква sозначает, что установлен бит setuid (или setgid, в зависимости от столбца). Когда для исполняемого файла задан setuid, он запускается как пользователь, которому принадлежит исполняемый файл, а не как пользователь, вызвавший программу. Письмо sзаменяет письмо x. Файл может быть установлен, но не может быть выполнен; это обозначается S, когда заглавная Sбуква предупреждает вас о том, что этот параметр, вероятно, неправильный, поскольку бит setuid (почти всегда) бесполезен, если файл не является исполняемым.

Когда каталог имеет права setuid (или setgid), любые файлы, созданные в этом каталоге, будут принадлежать пользователю (или группе), соответствующим владельцу (или группе) каталога.

Число после разрешений - это количество жестких ссылок . Жесткая ссылка - это путь к файлу (другими словами, имя). Большинство файлов имеют один путь, но вы можете сделать больше с помощью lnкоманды. (Это отличается от символических ссылок: символическая ссылка говорит: «О, на самом деле, этот файл находится в другом месте, перейдите в <location>».) В каталогах есть 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/...
Жиль «SO- перестать быть злым»

@Gilles, когда вы сказали, что файл не является "исполняемым"? Означает ли это, что он не имеет исполняемой привилегии или что это не тот тип файлов, который может быть выполнен?
ransh

@ransh Я имею в виду xразрешение execute ( ).
Жиль "ТАК - перестань быть злым"

Я отправил правку, аналогичную приведенной в ответе @ Jag ниже
qneill

16

Согласно info coreutils ls(что может быть не совсем то, что у вас есть):

`s '
Если установлен бит setuid или setgid и соответствующий исполняемый бит.

S
Если бит setuid или setgid установлен, но соответствующий исполняемый бит не установлен.

Число после части разрешения - это количество жестких ссылок.


2
В основном это то, что вы получаетеchmod g-x,g+s dir
sanmai

6

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

Тем не менее, папка не является исполняемой группой, поэтому она показана заглавной S. Обычно это происходит, когда создается каталог, и каталог в итоге становится setgid.

Хм .. Не уверен, если это на самом деле звучит как обычный английский выше ..


1
Этот ответ не дает больше или отличается от существующих ответов.
Джейхендрен

1
@jayhendren Да, это так. Это говорит о каталогах. Никакой другой ответ не делает этого. (Жиль, вероятно, должен включить свой комментарий в свой ответ.)
Sparhawk

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.