Jaka jest różnica między „s” i „S” w ls -la?

67

Kiedy ja ls -la, drukuje wiele atrybutów. Coś takiego:

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

Ze wstydem muszę wyznać, że nie znam dokładnego znaczenia poszczególnych atrybutów. Na przykład, co oznacza duże Sw ciągu -rwSrwSr--? Co następuje 1? Z grubsza znam innych.

Eonil
źródło
19
Eonil: Nie ma nic wstydliwego w tym, że trzeba zadawać pytania, przecież o to właśnie chodzi w tej witrynie. A jeśli chodzi o tych, którzy mówią RTFM, wielu z nas to robi i nadal nie może znaleźć najprostszej odpowiedzi po przejściu przez strony trudnej do odczytania dokumentacji napisanej przez programistę (a ja jestem programistą). W niektórych przypadkach jesteśmy w systemach, w których strony podręcznika nie zostały zainstalowane. Z tych wszystkich powodów i wielu innych, takie strony są darem niebios. Dzięki, że zadałeś to samo pytanie, które miałem.
Alan,
1
Świetne pytanie - bardzo konkretne wraz z konkretnym przykładem.
Ole

Odpowiedzi:

49

Dokumentacja lspolecenia odpowiada na te pytania. W większości wariantów uniksowych wyszukaj lsstronę podręcznika ( man lslub online). W systemie Linux wyszukaj dokumentację informacyjną ( info ls) lub online .

Litera soznacza, że ustawiony jest bit setuid (lub setgid, w zależności od kolumny). Gdy plik wykonywalny jest setuid, działa jako użytkownik będący właścicielem pliku wykonywalnego zamiast użytkownik, który wywołał program. List szastępuje literę x. Plik może być setuid, ale nie może być wykonywalny; jest to oznaczone przez S, gdy kapitał Sostrzega, że ​​to ustawienie jest prawdopodobnie nieprawidłowe, ponieważ bit setuid jest (prawie zawsze) bezużyteczny, jeśli plik nie jest wykonywalny.

Gdy katalog ma uprawnienia setuid (lub setgid), wszelkie pliki utworzone w tym katalogu będą własnością użytkownika (lub grupy) pasującego do właściciela (lub grupy) katalogu.

Liczba po uprawnieniach to liczba twardych linków . Twardy link to ścieżka do pliku (innymi słowy nazwa). Większość plików ma jedną ścieżkę, ale możesz zrobić więcej za pomocą lnpolecenia. (Różni się to od dowiązań symbolicznych: dowiązanie symboliczne mówi „och, w rzeczywistości ten plik jest gdzie indziej, przejdź do <lokalizacja>”). Katalogi mają N + 2 twardych dowiązań, gdzie N jest liczbą podkatalogów, ponieważ można do nich uzyskać dostęp od swojego rodzica, od siebie (przez .pozycję) i z każdego podkatalogu (przez ..pozycję).

Gilles
źródło
5
Co to znaczy w systemie OS X, gdy jest zastosowany do katalogu? Na przykład $ ls /Userszwracadrws--S---+ 12 jdoe staff 408 Jul 9 2013 jdoe
4
@jww Oznacza to, że pliki utworzone w tym katalogu będą należeć do grupy, która jest właścicielem katalogu, ale i tak jest to domyślne ustawienie w OSX. Zobacz en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories i unix.stackexchange.com/questions/12842/...
Gilles
@Gilles, kiedy powiedziałeś, że plik nie jest „wykonywalny”? Czy to oznacza, że ​​nie ma uprawnień do wykonywania lub że nie jest to typ pliku, który można wykonać?
ransh
@ransh Mam na myśli uprawnienie execute ( x).
Gilles
Przesłałem
16

Zgodnie z info coreutils ls(co może nie być dokładnie tym, co masz):

`s '
Jeśli ustawiony jest bit setuid lub setgid i odpowiedni bit wykonywalny.

`S '
Jeśli bit setuid lub setgid jest ustawiony, ale odpowiedni bit wykonywalny nie jest ustawiony.

Liczba po części dotyczącej zezwolenia to liczba twardych linków.

Mata
źródło
2
Zasadniczo to dostajeszchmod g-x,g+s dir
sanmai
6

Oznacza to (miejmy nadzieję, że jest prostszy). Katalog jest ustawiony jako setgid. Wszelkie utworzone tam pliki będą własnością tej grupy właściciela tego folderu.

Jednak folder nie jest wykonywalny przez grupę, więc jest pokazany dużą literą S. Zwykle dzieje się tak, gdy katalog jest tworzony i katalog kończy się jako setgid.

Hm .. Nie jestem pewien, czy to rzeczywiście brzmiało jak zwykły angielski powyżej ...

Ząbkować
źródło
1
Ta odpowiedź nie zawiera żadnych innych ani innych informacji niż istniejące odpowiedzi.
jayhendren
1
@jayhendren Tak to robi. Mówi o katalogach. Żadna inna odpowiedź tego nie robi. (Gilles powinien prawdopodobnie uwzględnić swój komentarz w swojej odpowiedzi).
Sparhawk
0

To dlatego, że brakuje pliku wykonywalnego

s -> „x” jest włączone S -> „x” jest wyłączone.

patrz przykład poniżej

$ 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

$
praveen kumar
źródło
Czy możesz wyjaśnić, co to dodaje do istniejących odpowiedzi?
Stephen Kitt,