SSD Nodes Learn 🎉 VPS mulai $5.50/bln
Panduan Matt ConnorOleh Matt Connor · Diperbarui 2026-08-13

Arti drwxr-xr-x di Linux dan Mode 755

Pahami drwxr-xr-x satu karakter demi satu hingga menjadi 755, arti x pada direktori sebagai akses lintas, dan mengapa chmod 777 bukan solusi yang tepat.

Arti drwxr-xr-x

drwxr-xr-x menjelaskan direktori yang dapat diubah oleh pemiliknya, sedangkan pengguna lain hanya dapat membaca dan mengaksesnya tanpa mengubah apa pun. Dalam notasi oktal, mode tersebut adalah 755. Linux menampilkan sepuluh karakter ini di awal setiap baris keluaran ls -l, dan artinya selalu sama dalam urutan yang sama. Jadi, mempelajari satu string ini membantu Anda memahami semuanya.

Ada satu aturan yang harus dipahami terlebih dahulu karena aturan ini menentukan apakah pengujian Anda sendiri memberikan informasi yang berguna. Pengguna root mengabaikan bit izin. Kernel memberikan kemampuan CAP_DAC_OVERRIDE kepada root (penggantian kontrol akses diskresioner), sehingga root dapat membuka file yang modenya melarang akses tersebut. Semua contoh di halaman ini berhasil jika dijalankan sebagai root, apa pun bit izinnya. Login sebagai pengguna biasa jika Anda ingin mengamati cara kerja aturan tersebut.

Sepuluh karakter, satu per satu

Buat direktori dan file untuk diperiksa. Tidak ada perintah di sini yang menyentuh apa pun di luar direktori baru tersebut.

mkdir -p ~/permdemo/inner
printf 'hello\n' > ~/permdemo/inner/notes.txt
ls -ld ~/permdemo ~/permdemo/inner ~/permdemo/inner/notes.txt

Dengan umask default yang umum, yaitu 022, dua baris direktori dimulai dengan drwxr-xr-x dan baris file dimulai dengan -rw-r--r--.

Karakter 1 menunjukkan jenis file, bukan permission. d adalah direktori. - adalah file biasa. l adalah symbolic link. c dan b adalah node perangkat karakter dan blok. s adalah socket, sedangkan p adalah named pipe. Karakter ini berada di luar nilai oktal. Karena itu, drwxr-xr-x menjadi 755, bukan nilai yang diawali d.

Sembilan karakter setelahnya terdiri atas tiga kelompok yang masing-masing berisi tiga karakter. Urutannya selalu sama.

  • Karakter 2 sampai 4 adalah triad owner, yaitu bit yang berlaku untuk user pemilik file.
  • Karakter 5 sampai 7 adalah triad group, yaitu bit yang berlaku untuk group file.
  • Karakter 8 sampai 10 adalah triad other, yaitu bit yang berlaku untuk pengguna lainnya.

Di dalam sebuah triad, slotnya selalu r, lalu w, kemudian x. Tanda hubung berarti bit tersebut nonaktif. Posisi huruf tidak pernah berubah. r-x berarti read tanpa write. -w- berarti write tanpa read. Konfigurasi ini valid, tetapi jarang digunakan.

Jadi, drwxr-xr-x dapat diuraikan sebagai berikut: d untuk direktori, lalu rwx untuk owner, kemudian r-x untuk group, dan terakhir r-x untuk other.

Beberapa sistem menampilkan karakter kesebelas. Titik di akhir, drwxr-xr-x., berarti file memiliki konteks SELinux (security enhanced Linux). Distribusi yang menggunakan SELinux, seperti Fedora dan Rocky, secara default menampilkan konteks ini. Tanda plus di akhir, drwxr-xr-x+, berarti file memiliki POSIX ACL (access control list), yaitu kumpulan aturan tambahan di luar sembilan bit tersebut. Baca aturan tambahan itu dengan getfacl <path>.

r, w, dan x memiliki fungsi berbeda pada direktori

Ini adalah aturan pertama yang sering disalahpahami pemula. Hurufnya sama pada file dan direktori. Hak akses yang diberikan berbeda.

  • r pada file membaca isinya. r pada direktori menampilkan nama-nama di dalamnya, yang diperlukan oleh ls biasa.
  • w pada file mengubah isinya. w pada direktori menambahkan dan menghapus entri di dalamnya. Menghapus file berarti mengubah direktori, jadi write pada direktori yang menentukan, sedangkan mode file itu sendiri tidak berpengaruh.
  • x pada file menjalankannya sebagai program. x pada direktori melakukan traversal, yaitu kernel dapat menemukan satu nama di dalamnya saat melakukan pencarian path.

Traversal adalah bagian yang sering mengejutkan pengguna. x pada direktori tidak menjalankan apa pun. Untuk membuka /srv/site/index.html, diperlukan x pada /, lalu x pada /srv, kemudian x pada /srv/site, dan terakhir r pada file. Jika salah satu direktori dalam rangkaian tersebut tidak memiliki x untuk Anda, pencarian berhenti di sana, dan pemanggil menerima Permission denied untuk seluruh path, meskipun file di ujung path dapat dibaca oleh semua pengguna. namei -l /srv/site/index.html menampilkan setiap langkah dalam rangkaian tersebut beserta mode dan pemiliknya, sehingga Anda dapat melihat bagian yang menghentikan pencarian.

Direktori dengan r tanpa x adalah kondisi setengah yang tidak lazim dan perlu dikenali. Pengguna biasa dapat menampilkan nama-namanya karena itulah hak akses yang diberikan oleh r, tetapi tidak dapat melakukan stat pada entri mana pun. Akibatnya, ls -l mengisi kolom ukuran dan mode dengan tanda tanya, lalu menampilkan ls: cannot access ...: Permission denied untuk setiap entri.

Mengubah huruf menjadi 755

Setiap triad adalah bilangan tiga bit. r bernilai 4, w bernilai 2, dan x bernilai 1. Jumlahkan bit yang aktif.

  • rwx bernilai 4 + 2 + 1 = 7
  • rw- bernilai 4 + 2 = 6
  • r-x bernilai 4 + 1 = 5
  • r-- bernilai 4
  • --- bernilai 0

Dengan demikian, drwxr-xr-x bernilai 7 untuk owner, 5 untuk group, dan 5 untuk other: 755. -rw-r--r-- bernilai 6, 4, 4: 644. drwxrwxr-x bernilai 7, 7, 5: 775, yaitu 755 dengan izin write yang ditambahkan untuk group. Anda tidak perlu menghitung karakter secara manual karena stat menampilkan kedua bentuk sekaligus.

stat -c '%A %a %U %G %n' ~/permdemo ~/permdemo/inner/notes.txt

%A adalah bentuk huruf, %a adalah bentuk oktal, sedangkan %U dan %G menunjukkan owning user dan owning group.

String izin yang sering dicari

Berikut adalah mode yang Anda temui pada server nyata, beserta nilai oktalnya dan penggunaannya.

  • -rw-r--r-- adalah 644. File biasa yang hanya dibaca oleh suatu service, seperti file konfigurasi atau halaman HTML.
  • -rw------- adalah 600. Data rahasia, seperti private key SSH atau file .env milik aplikasi.
  • -rw-rw-r-- adalah 664. File dalam direktori yang digunakan bersama oleh suatu grup, ketika anggota tim perlu memiliki akses tulis.
  • -rwxr-xr-x adalah 755. Script dan binary, seperti /usr/local/bin/backup.sh dan sebagian besar /usr/bin.
  • -rwx------ adalah 700. Script privat yang hanya dapat dijalankan oleh pemiliknya.
  • drwxr-xr-x adalah 755. Hampir semua direktori sistem dan document root situs web.
  • drwx------ adalah 700. ~/.ssh dan direktori home pada server dengan akses yang diperketat.
  • drwxrwxr-x adalah 775. Direktori yang dapat ditulisi oleh grup pemiliknya.
  • drwxrwsr-x adalah 2775. Sama seperti sebelumnya, ditambah bit setgid, sehingga file baru di dalamnya mewarisi grup direktori tersebut.
  • drwxrwxrwt adalah 1777. /tmp. t terakhir adalah sticky bit, sehingga pengguna hanya dapat menghapus file miliknya sendiri.
  • -rwsr-xr-x adalah 4755. Binary setuid yang berjalan sebagai pemiliknya, seperti /usr/bin/passwd dan /usr/bin/sudo.
  • -rw-rw-rw- adalah 666, sedangkan drwxrwxrwx adalah 777. Dapat ditulis oleh semua pengguna, yang pada server hampir selalu merupakan kesalahan.
  • lrwxrwxrwx adalah nilai yang ditampilkan oleh setiap symbolic link. Linux mengabaikan bit mode pada link dan memeriksa targetnya, sehingga string ini sama sekali tidak memiliki arti.

Triad yang berlaku untuk Anda

Berikut aturan kedua yang sering disalahpahami pemula. Kernel memilih tepat satu triad, lalu berhenti.

Jika ID pengguna Anda cocok dengan pemilik file, Anda mendapatkan triad pemilik. Bit grup dan pengguna lain tidak pernah diperiksa. Jika tidak, dan grup file merupakan salah satu grup Anda, Anda mendapatkan triad grup. Jika tidak juga, Anda mendapatkan triad pengguna lain.

Ada dua hal yang perlu diperhatikan. Triad pemilik tetap berlaku meskipun merupakan triad yang paling ketat. File dengan mode 0466, yang ditampilkan sebagai -r--rw-rw-, hanya memberikan izin baca kepada pemiliknya, sedangkan pengguna lain dapat menulis ke file tersebut. Pemeriksaan pemilik cocok terlebih dahulu, sehingga bit setelahnya tidak dibaca. Konfigurasi ini valid dan sering membingungkan saat pertama kali ditemui.

Triad grup ditentukan oleh grup file, bukan oleh daftar grup yang Anda ikuti. ls -l menampilkan dua nama pada setiap baris: pemilik, lalu grup. Hanya grup kedua tersebut yang berpengaruh terhadap file itu. Keanggotaan dalam dua puluh grup hanya membantu jika file tersebut menggunakan salah satunya.

id
stat -c '%U %G %A %n' ~/permdemo/inner/notes.txt

id menampilkan pengguna Anda dan semua grup yang Anda ikuti. stat menampilkan pemilik dan grup file. Bandingkan keduanya untuk mengetahui triad yang akan digunakan kernel bagi Anda.

Karena itu, direktori bersama biasanya diberi sebuah grup dan bit setgid. sudo chmod 2775 /srv/shared ditampilkan sebagai drwxrwsr-x, dan file yang dibuat di dalamnya akan mewarisi grup direktori, bukan grup pribadi pembuatnya. Dengan demikian, pengguna berikutnya tetap dapat menulis ke file tersebut. Memberikan setiap service akun tersendiri merupakan bagian lain dari konfigurasi ini, dan dibahas dalam satu pengguna Linux per service pada VPS.

umask menentukan mode setiap file baru

File baru tidak mengambil mode dari Anda. File tersebut mengambil mode dari program yang membuatnya, lalu menghapus bit yang dibersihkan oleh umask Anda. umask adalah mask untuk menghapus bit, sehingga umask yang lebih besar menghasilkan file yang lebih privat.

Sebagian besar distribusi menggunakan 022. Program yang membuat file biasa meminta mode 0666. Program yang membuat direktori meminta mode 0777. umask menghapus 022 dari kedua permintaan tersebut, sehingga file menjadi 644 dan direktori menjadi 755. Inilah pasangan nilai yang umum Anda lihat pada VPS baru.

umask
umask -S
touch ~/permdemo/new.txt && mkdir -p ~/permdemo/newdir
ls -ld ~/permdemo/new.txt ~/permdemo/newdir

umask -S menampilkan nilai yang sama dalam bentuk huruf, sehingga lebih mudah dibaca daripada 0022. Tetapkan umask 027 dalam ~/.profile untuk default yang lebih ketat: 640 pada file dan 750 pada direktori. Dengan demikian, grup Anda dapat membaca pekerjaan Anda dan pengguna lain tidak dapat mengaksesnya.

Ada dua batasan penting. umask hanya dapat menghapus bit, bukan menambahnya. Karena itu, file baru tidak pernah menjadi executable, apa pun nilai yang Anda tetapkan. Selain itu, service systemd tidak pernah membaca profil shell Anda. Jadi, tetapkan nilainya dalam file unit.

[Service]
UMask=0027

Mengapa file web menggunakan 644 dan direktori web menggunakan 755

Web server berjalan menggunakan account-nya sendiri, www-data pada Debian dan Ubuntu, serta nginx pada Rocky dan Alma. Proses tersebut memerlukan izin baca pada file yang dilayaninya dan izin traverse pada direktori di atasnya. Proses itu tidak perlu menulis ke file atau direktori tersebut, dan static site tidak boleh mengizinkannya.

Mode 644 pada file memberikan izin tulis kepada owner dan izin baca kepada semua pengguna, sehingga deploy user dapat memublikasikan file dan web user dapat melayaninya. Mode 755 pada direktori memberikan izin tulis kepada owner dan izin traverse kepada semua pengguna, sehingga web user dapat menelusuri path tanpa dapat menambahkan atau menghapus apa pun. Jika terdapat bug pada aplikasi, aplikasi tersebut tidak dapat menulis ulang halaman yang sedang dilayaninya.

Aturan traverse menjadi masalah tepat di sini. Jika site berada di /home/deploy/site dan /home/deploy memiliki mode 750, web user sama sekali tidak dapat memasuki home directory tersebut, sehingga request berakhir dengan HTTP 403 dan baris seperti berikut di /var/log/nginx/error.log:

open() "/home/deploy/site/index.html" failed (13: Permission denied), client: 203.0.113.5

Angka 13 tersebut adalah EACCES, yaitu penolakan izin oleh kernel. Tidak ada masalah pada network: port sedang listening dan request telah tiba. Hal inilah yang membuat masalah ini membingungkan saat Anda masih mempelajari cara kerja port listening di Linux. Jalankan namei -l /home/deploy/site/index.html, lalu telusuri rangkaian direktori tersebut untuk menemukan direktori pertama yang tidak memiliki x bagi pengguna lain.

Direktori yang digunakan aplikasi untuk menulis, seperti path upload, merupakan pengecualian. Berikan akses tersebut melalui ownership, bukan dengan mode yang lebih longgar: sudo chown -R www-data:www-data /srv/site/uploads, dan pertahankan mode 755. Batasi akses tulis hanya pada direktori yang memerlukannya.

chmod tanpa meratakan seluruh tree

chmod memiliki dua bentuk. Notasi oktal menetapkan kesembilan bit sekaligus: chmod 644 notes.txt. Notasi simbolik hanya mengubah bagian yang Anda sebutkan dan membiarkan bagian lainnya tetap: chmod u+x deploy.sh menambahkan izin eksekusi untuk owner, sedangkan chmod go-w notes.txt menghapus izin tulis dari group dan other.

Rekursi dapat merusak tree. chmod -R 755 . menandai setiap image dan setiap file konfigurasi sebagai executable karena chmod tidak dapat membedakan script dari JPEG. Gunakan huruf kapital X sebagai gantinya.

chmod -R u=rwX,go=rX ~/permdemo
stat -c '%a %n' ~/permdemo ~/permdemo/inner/notes.txt

X dengan huruf kapital menerapkan izin eksekusi pada direktori dan pada file yang sebelumnya sudah memiliki bit eksekusi di salah satu bagiannya. Direktori akan menjadi 755, file biasa menjadi 644, dan script yang sebelumnya sudah executable tetap demikian. Jika sebuah file sudah memiliki mode yang benar, chmod --reference=good.sh other.sh menyalin mode tersebut.

Pesan yang muncul saat bit izin salah

bash: ./deploy.sh: Permission denied berarti skrip tidak memiliki bit x pada triad yang berlaku untuk Anda, atau salah satu direktori dalam path-nya tidak memiliki x. chmod u+x deploy.sh memperbaiki kasus pertama.

bash: ./deploy.sh: cannot execute: required file not found adalah kesalahan berbeda dengan nama yang membingungkan. Bit x sudah benar, tetapi interpreter yang tercantum pada baris pertama tidak ditemukan. Penyebab yang umum adalah akhiran baris Windows, sehingga kernel mencari interpreter bernama /bin/bash\r. Perbaiki dengan sed -i 's/\r$//' deploy.sh.

Permissions 0644 for '/home/deploy/.ssh/id_ed25519' are too open. berasal dari SSH client, yang menolak menggunakan private key yang dapat dibaca oleh account lain. Key tersebut harus memiliki izin 600, sedangkan ~/.ssh harus memiliki izin 700. Penjelasan lengkap tentang pengelolaan key tersedia di mengelola SSH key dan izin filenya.

Authentication refused: bad ownership or modes for directory /home/deploy/.ssh muncul dalam journal server ketika home directory atau .ssh-nya dapat ditulis oleh group. Pengaturan sshd StrictModes menolak key tersebut. Dari sisi client, kondisi ini terlihat sebagai prompt password yang muncul tanpa penjelasan.

sudo: /etc/sudoers is world writable, yang diikuti oleh sudo: no valid sudoers sources found, quitting, berarti sudo memeriksa mode file konfigurasinya sendiri lalu menolak berjalan. File tersebut harus memiliki mode 0440. Ini adalah akibat klasik dari chmod rekursif yang diterapkan secara luas. Kondisi ini dapat muncul bersamaan dengan pesan sshd di atas, sehingga console milik provider menjadi satu-satunya cara untuk mendapatkan kembali akses.

Mengapa 777 bukan solusi

777 memberikan akses tulis kepada setiap akun di mesin dan setiap proses yang berjalan atas nama akun tersebut. Server menjalankan service menggunakan user masing-masing. Karena itu, cakupan "semua orang" pada VPS jauh lebih luas daripada pada laptop. Service yang berhasil dibobol dapat menulis ke lokasi mana pun yang diizinkan oleh 777.

Pada web root, dampaknya langsung terlihat. Direktori yang dapat ditulis oleh semua user dan juga disajikan oleh server dapat mengubah celah pengunggahan file menjadi cara untuk menanam script, lalu memintanya kembali.

777 hampir selalu merupakan jawaban yang salah untuk masalah kepemilikan. Gejalanya adalah "aplikasi tidak dapat menulis ke direktori ini". Penyebabnya adalah direktori tersebut dimiliki oleh user yang salah. sudo chown -R appuser:appuser /srv/app/storage dengan mode 755 menyelesaikan masalah itu dan mencegah semua akun lain mengaksesnya. Pembuatan akun tersebut sebelum apa pun di-deploy dibahas dalam sepuluh menit pertama pada VPS baru.

Akses tulis untuk semua user memang wajar di satu lokasi yang umum, yaitu /tmp, dan penulisannya adalah drwxrwxrwt. t di bagian akhir adalah sticky bit: direktori dapat ditulis oleh semua user, tetapi user hanya dapat menghapus file miliknya sendiri. Tanpa bit tersebut, akun mana pun dapat menghapus file sementara milik akun lain.

Baca mode sebelum mengubahnya

Perintah-perintah ini hanya membaca status, sehingga aman dijalankan di mana saja.

id
umask
stat -c '%A %a %U %G %n' ~/permdemo ~/permdemo/inner/notes.txt
namei -l ~/permdemo/inner/notes.txt
find ~/permdemo -perm -0002

find <path> -perm -0002 mencantumkan semua objek di bawah suatu path yang bit tulis untuk semua pengguna (world write) telah diaktifkan. Ini adalah cara tercepat untuk mengaudit sebuah server setelah seseorang memperbaiki berbagai hal menggunakan chmod 777.

Untuk memeriksa apakah akun service tertentu dapat masuk ke sebuah direktori, lakukan pemeriksaan sebagai akun tersebut. sudo -u www-data test -x /srv/site && echo yes || echo no mencetak yes jika pengguna itu memiliki hak traverse pada direktori, dan no jika tidak. Pemeriksaan sebagai root tidak membuktikan apa pun karena root melewati pemeriksaan tersebut, sehingga hasilnya selalu yes.

FAQ

Apa arti drwxr-xr-x di Linux?

Itu adalah direktori, yang ditunjukkan oleh d di awal, dengan mode 755. Triad pemilik adalah rwx, sehingga pemilik memiliki semua izin atas direktori tersebut. Triad grup adalah r-x dan triad pengguna lain adalah r-x, sehingga pengguna lain dapat melihat nama item di dalamnya dan melewati direktori tersebut, tetapi hanya pemilik yang dapat menambahkan atau menghapus apa pun. Konfirmasikan path apa pun dengan stat -c '%A %a %U %G %n' <path>, yang menampilkan bentuk huruf dan bentuk oktalnya secara berdampingan.

Mengapa file web memiliki mode 644 dan direktori web memiliki mode 755?

Web server berjalan dengan akun yang berbeda, yaitu www-data di Ubuntu. Akun tersebut memerlukan izin baca pada file yang dilayaninya dan izin traverse pada setiap direktori di atas file tersebut, tetapi tidak perlu memiliki izin tulis pada keduanya. Mode 644 memberikan izin tulis kepada pemilik dan izin baca kepada pengguna lain. Mode 755 memberikan izin tulis kepada pemilik dan izin traverse kepada pengguna lain. Direktori yang memang harus dapat ditulisi aplikasi sebaiknya diserahkan dengan chown kepada user aplikasi tersebut, bukan dengan memperluas mode untuk semua pengguna.

Apakah bit x berarti saya dapat mengeksekusi direktori?

Tidak. Pada direktori, x berarti traverse, yaitu hak untuk menyelesaikan satu nama di dalamnya saat kernel menelusuri path. cd memerlukannya, begitu juga setiap pembukaan file di bawah direktori tersebut. Setiap direktori di sepanjang path memerlukan x, sehingga file dengan mode 644 tetap tidak dapat diakses jika direktori di atasnya tidak memiliki x untuk Anda. namei -l /path/to/file menampilkan mode setiap direktori dalam rantai tersebut, sehingga Anda dapat melihat lokasi proses pencarian berhenti.

Apakah chmod 777 pernah menjadi solusi yang tepat?

Hampir tidak pernah pada server. Mode tersebut memberikan izin tulis kepada setiap akun di mesin, termasuk akun yang digunakan service, sehingga satu service yang telah dibobol dapat menulis ulang file tersebut. Jika aplikasi tidak dapat menulis ke sebuah direktori, masalah sebenarnya biasanya adalah kepemilikan: sudo chown -R appuser:appuser /srv/app/storage dengan mode 755 memberikan akses yang diperlukan aplikasi dan tetap menutup akses bagi pengguna lain. Pengecualian yang umum adalah /tmp pada mode 1777. Hal itu hanya aman karena sticky bit mencegah pengguna menghapus file milik pengguna lain.

Mengapa ls menampilkan titik atau tanda plus setelah izin?

Karakter kesebelas tersebut menjelaskan aturan di luar sembilan bit izin. Titik, seperti pada drwxr-xr-x., berarti konteks keamanan SELinux terpasang. Hal ini normal di Fedora dan Rocky. Tanda plus, seperti pada drwxr-xr-x+, berarti POSIX ACL (access control list) ditetapkan, sehingga user atau grup tertentu memiliki izin yang tidak ditampilkan oleh ketiga triad tersebut. Jalankan getfacl <path> untuk menampilkan entri tambahan tersebut.

#permissions#ls#chmod#linux-basics#octal