Каково различие между “s” и “S” в ls - la?

5 ответов

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

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

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

Число после полномочий является количеством жесткой ссылки. Жесткая ссылка является путем к файлу (имя, другими словами). Большинство файлов имеет единственный путь, но можно сделать больше с ln команда. (Это отличается от символьных ссылок: символьная ссылка говорит, “о, на самом деле, этот файл в другом месте, перейдите к <местоположению>”.) Каталоги имеют жесткие ссылки N+2, где N является количеством подкаталогов, потому что к ним можно получить доступ от их родителя от себя (через . запись), и от каждого подкаталога (через .. запись).

51
27.01.2020, 19:31
  • 1
    Что означает на OS X, когда относившийся каталог? Например, $ ls /Users возвраты drws--S---+ 12 jdoe staff 408 Jul 9 2013 jdoe –   26.08.2015, 15:07
  • 2
    @jww Это означает, что файлы, созданные в том каталоге, будут принадлежать группе, которая владеет каталогом, но это - значение по умолчанию на OSX так или иначе. См. en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories и unix.stackexchange.com/questions/12842 / оболочки –  Gilles 'SO- stop being evil' 26.08.2015, 15:26
  • 3
    @Gilles, Когда Вы сказали, что файл не является "исполняемым файлом"? Это означает, что это не имеет исполняемого полномочия или что это не тип файла, который может быть выполнен? –  ransh 28.08.2017, 12:13
  • 4
    @ransh я имею в виду выполнение (x) разрешение. –  Gilles 'SO- stop being evil' 28.08.2017, 14:46

Согласно info coreutils ls (который не мог бы быть точно, что Вы имеете):

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

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

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

16
27.01.2020, 19:31
  • 1
    В основном это - то, с чем Вы добираетесь chmod g-x,g+s dir –  sanmai 13.03.2014, 03:42

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

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

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

6
27.01.2020, 19:31

Это из-за отсутствия исполняемого файла

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

$
3
27.01.2020, 19:31

учтите также umask , параметр оболочки, который вычитает это значение из полного доступа (666 для файлов, 777 для каталогов )при создании файла.

Стандартное поведение setuid / setgid заключается в распространении от родительских к дочерним каталогам

Можно получить разрешение «S» на каталоги с помощью этой последовательности команд, (проверка umask 077,...):

~/test$ id
uid=1004(dsuser) gid=100(users) 
~/test$ 
~/test$ umask
0002
~/test$ 
~/test$ mkdir aaa
~/test$ ls -l
total 4
drwxrwxr-x 2 dsuser users 4096 Nov  5 14:57 aaa
~/test$ chmod g+s aaa
~/test$ ls -l
total 4
drwxrwsr-x 2 dsuser users 4096 Nov  5 14:57 aaa
~/test$ cd aaa
~/test/aaa$ 
~/test/aaa$ mkdir bbb
~/test/aaa$ ls -l
total 4
drwxrwsr-x 2 dsuser users 4096 Nov  5 14:58 bbb
~/test/aaa$ 


~/test/aaa$ umask 077
~/test/aaa$ 
~/test/aaa$ mkdir ccc
~/test/aaa$

 
~/test/aaa$ ls -l

total 8
drwxrwsr-x 2 dsuser users 4096 Nov  5 14:58 bbb
drwx--S--- 2 dsuser users 4096 Nov  5 14:59 ccc




0
05.11.2020, 13:07

Теги

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