Apa perbedaan antara "s" dan "S" dalam ls -la?

67

Ketika saya ls -la, ia mencetak banyak atribut. Sesuatu seperti ini:

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

Dengan memalukan, saya harus mengakui bahwa saya tidak tahu arti sebenarnya dari setiap atribut. Misalnya, apa arti big Sdalam string -rwSrwSr--? Apa yang berikut 1? Saya tahu orang lain secara kasar.

Eonil
sumber
19
Eonil: Tidak ada yang memalukan tentang perlu mengajukan pertanyaan, setelah semua itu tentang situs ini. Dan bagi mereka yang mengatakan RTFM, banyak dari kita yang MELAKUKANNYA dan masih tidak dapat menemukan jawaban yang paling sederhana setelah mengarungi halaman-halaman dokumentasi yang ditulis oleh programmer yang sulit dibaca (dan saya seorang programmer). Dalam beberapa kasus, kami menggunakan sistem di mana halaman manual tidak diinstal. Untuk semua alasan itu, dan banyak lagi, situs-situs seperti ini adalah anugerah. Terima kasih telah mengajukan pertanyaan yang sama dengan yang saya miliki.
Alan
1
Pertanyaan besar - sangat spesifik beserta contoh konkret.
Ole

Jawaban:

49

Dokumentasi lsperintah menjawab pertanyaan-pertanyaan ini. Pada sebagian besar varian unix, lihat lshalaman manual ( man lsatau online). Di Linux, lihat dokumentasi Info ( info ls) atau online .

Huruf tersebut smenunjukkan bahwa bit setuid (atau setgid, tergantung pada kolom) diatur. Ketika sebuah executable adalah setuid, ia dijalankan sebagai pengguna yang memiliki file yang dapat dieksekusi alih-alih pengguna yang menjalankan program. Surat itu smenggantikan surat itu x. Mungkin saja file menjadi setuid tetapi tidak dapat dieksekusi; ini dilambangkan dengan S, di mana ibukota Smemperingatkan Anda bahwa pengaturan ini mungkin salah karena bit setuid (hampir selalu) tidak berguna jika file tidak dapat dieksekusi.

Ketika suatu direktori memiliki izin setuid (atau setgid), file apa pun yang dibuat dalam direktori itu akan dimiliki oleh pengguna (atau grup) yang cocok dengan pemilik (atau grup) direktori.

Jumlah setelah izin adalah jumlah tautan keras . Tautan keras adalah jalur ke file (nama, dengan kata lain). Sebagian besar file memiliki jalur tunggal, tetapi Anda dapat membuat lebih banyak dengan lnperintah. (Ini berbeda dari tautan simbolik: tautan simbolik mengatakan “oh, sebenarnya, file ini di tempat lain, buka <lokasi>”.) Direktori memiliki N + 2 tautan keras di mana N adalah jumlah subdirektori, karena mereka dapat diakses dari orang tua mereka, dari diri mereka sendiri (melalui .entri), dan dari setiap subdirektori (melalui ..entri).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
5
Apa artinya pada OS X ketika diterapkan ke direktori? Misalnya, $ ls /Userspengembaliandrws--S---+ 12 jdoe staff 408 Jul 9 2013 jdoe
4
@jww Ini berarti bahwa file yang dibuat di direktori itu akan menjadi milik grup yang memiliki direktori, tetapi toh itu default pada OSX. Lihat en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories dan unix.stackexchange.com/questions/12842/…
Gilles 'SO-stop being evil'
@Gilles, Kapan Anda bilang file tidak bisa "dieksekusi"? Apakah itu berarti ia tidak memiliki hak istimewa yang dapat dieksekusi atau bahwa itu bukan tipe file yang dapat dieksekusi?
ransh
@ transh maksud saya xizin mengeksekusi ( ).
Gilles 'SANGAT berhenti menjadi jahat'
Saya telah mengirimkan hasil edit yang mirip dengan poin yang dibuat dalam jawaban @ Jag di bawah ini
qneill
16

Menurut info coreutils ls(yang mungkin tidak persis apa yang Anda miliki):

`s '
Jika setuid atau setgid bit dan bit executable yang sesuai keduanya diatur.

`S '
Jika bit setuid atau setgid diatur tetapi bit eksekusi yang sesuai tidak diatur.

Nomor setelah bagian izin adalah jumlah tautan keras.

Tikar
sumber
2
Pada dasarnya ini yang Anda dapatkan denganchmod g-x,g+s dir
sanmai
6

Dalam istilah (semoga lebih sederhana), ini berarti. Direktori ini adalah setgid. File apa pun yang dibuat di sana akan dimiliki oleh grup pemilik folder itu.

Namun, folder tidak dapat dieksekusi oleh grup, jadi itu ditampilkan dalam huruf kapital S. Ini biasanya ketika direktori sedang dibuat dan direktori akan berakhir sebagai setgid.

Hm .. Tidak yakin apakah itu benar-benar terdengar seperti bahasa Inggris polos di atas ..

Perasaan
sumber
1
Jawaban ini tidak memberikan informasi lebih atau berbeda dari jawaban yang ada.
jayhendren
1
@ jayhendren Ya itu. Ini berbicara tentang direktori. Tidak ada jawaban lain yang melakukannya. (Gilles mungkin harus memasukkan komentarnya ke dalam jawabannya.)
Sparhawk
0

Itu karena Executable hilang

s -> 'x' diaktifkan S -> 'x' dinonaktifkan.

lihat contoh di bawah ini

$ 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
sumber
Bisakah Anda menjelaskan apa yang ini menambah jawaban yang ada?
Stephen Kitt