SSD Nodes Learn 🎉 VPS mula $5.50/buwan
Mga Gabay Matt ConnorNi Matt Connor · Na-update 2026-08-13

drwxr-xr-x: Kahulugan ng Linux Permissions

Alamin ang kahulugan ng drwxr-xr-x, i-convert ito sa 755, at unawain kung bakit x sa directory ay traverse permission at hindi tamang solusyon ang chmod 777.

Ang ibig sabihin ng drwxr-xr-x

Ang drwxr-xr-x ay isang directory na maaaring baguhin ng owner nito. Mababasa at madadaanan ito ng lahat ng ibang user nang walang anumang pagbabago. Sa octal, ang mode na ito ay 755. Ipinapakita ng Linux ang sampung character na ito sa simula ng bawat linya ng output ng ls -l. Pareho ang kahulugan at pagkakasunod-sunod ng mga ito sa bawat pagkakataon. Kaya kapag natutuhan mo ang isang string, nauunawaan mo na ang lahat ng katulad nito.

May isang panuntunang kailangang unahin dahil nakaaapekto ito sa resulta ng sarili mong testing. Hindi sinusunod ng root user ang permission bits. Ibinibigay ng kernel sa root ang capability na CAP_DAC_OVERRIDE (discretionary access control override), kaya nabubuksan ng root ang mga file na ipinagbabawal ng mode. Matagumpay ang bawat halimbawa sa page na ito kapag root ang gumagamit, anuman ang nakasaad sa bits. Mag-login bilang normal na user kapag gusto mong makita kung paano ipinapatupad ang mga panuntunan.

Sampung character, isa-isa

Gumawa ng directory at file na susuriin. Walang anumang bahagi rito ang umaabot sa labas ng bagong directory.

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

Sa karaniwang default na umask na 022, nagsisimula sa drwxr-xr-x ang dalawang linya ng directory at nagsisimula sa -rw-r--r-- ang linya ng file.

Ang Character 1 ay uri ng file, hindi permission. Ang d ay directory. Ang - ay regular file. Ang l ay symbolic link. Ang c at b ay character at block device node. Ang s ay socket, at ang p ay named pipe. Hindi ito kabilang sa octal value. Kaya nagiging 755 ang drwxr-xr-x sa halip na magsimula sa d.

Ang siyam na character pagkatapos nito ay binubuo ng tatlong grupo na tig-tatlo. Hindi nagbabago ang pagkakasunod-sunod ng mga ito.

  • Ang Characters 2 hanggang 4 ay ang owner triad, ang mga bit na nalalapat sa user na nagmamay-ari ng file.
  • Ang Characters 5 hanggang 7 ay ang group triad, ang mga bit na nalalapat sa group ng file.
  • Ang Characters 8 hanggang 10 ay ang other triad, ang mga bit na nalalapat sa lahat ng iba pang user.

Sa loob ng isang triad, palaging r muna, kasunod ang w, at pagkatapos ang x. Ibig sabihin ng dash ay naka-off ang bit na iyon. Hindi nagbabago ang posisyon ng mga letra. Ang r-x ay read nang walang write. Ang -w- ay write nang walang read. Legal ito pero bihira.

Kaya hinahati ang drwxr-xr-x nang ganito: d para sa directory, kasunod ang rwx para sa owner, pagkatapos ang r-x para sa group, at panghuli ang r-x para sa other.

May ilang system na nagpi-print ng pang-onse na character. Ang trailing dot, drwxr-xr-x., ay nangangahulugang may SELinux (security enhanced Linux) context ang file. Karaniwang naka-print ito bilang default ng mga SELinux distribution gaya ng Fedora at Rocky. Ang trailing plus, drwxr-xr-x+, ay nangangahulugang may POSIX ACL (access control list) ang file, o karagdagang set ng rules bukod sa siyam na bit na ito. Basahin ang mga karagdagang rule gamit ang getfacl <path>.

r, w, at x ay may magkakaibang gamit sa isang directory

Ito ang unang rule na madalas mali ang pagkaunawa ng mga beginner. Pareho ang mga letra sa file at directory. Magkaiba ang access na ibinibigay ng mga ito.

  • Ang r sa file ay nagbabasa ng laman nito. Ang r sa directory ay naglilista ng mga pangalan sa loob nito, na kailangan ng plain ls.
  • Ang w sa file ay nagbabago ng laman nito. Ang w sa directory ay nagdadagdag at nag-aalis ng mga entry dito. Ang pag-delete ng file ay pagbabago sa directory, kaya ang write permission sa directory ang nagdedesisyon nito. Walang epekto rito ang mode ng file mismo.
  • Ang x sa file ay nagpapatakbo rito bilang program. Ang x sa directory ay nagta-traverse dito. Ibig sabihin, maaaring i-resolve ng kernel ang isang pangalan sa loob nito habang nagso-solve ng path.

Ang traverse ang bahaging madalas ikinagugulat ng mga tao. Walang ine-execute ang x sa directory. Para ma-open ang /srv/site/index.html, kailangan ang x sa /, kasunod ang x sa /srv, pagkatapos ang x sa /srv/site, at sa huli ang r sa file. Kung may isang directory sa chain na walang x para sa iyo, doon hihinto ang lookup. Ibabalik sa caller ang Permission denied para sa buong path, kahit world-readable ang file sa dulo. Ipinapakita ng namei -l /srv/site/index.html ang bawat step ng chain kasama ang mode at owner nito, kaya makikita mo kung aling link ang humihinto sa lookup.

Ang directory na may r ngunit walang x ay isang kakaibang half state na mahalagang makilala. Maaaring ilista ng normal user ang mga pangalan dahil ito ang ibinibigay ng r, ngunit hindi niya ma-stat ang alinmang entry. Dahil dito, pinupunan ng ls -l ng question marks ang size at mode columns at ipinapakita ang ls: cannot access ...: Permission denied para sa bawat entry.

Pag-convert ng mga letra sa 755

Ang bawat triad ay isang three-bit number. Ang r ay 4, ang w ay 2, at ang x ay 1. Pagsamahin ang mga bit na naka-on.

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

Samakatuwid, ang drwxr-xr-x ay 7 para sa owner, 5 para sa group, at 5 para sa others: 755. Ang -rw-r--r-- ay 6, 4, 4: 644. Ang drwxrwxr-x ay 7, 7, 5: 775, na 755 na may idinagdag na write permission para sa group. Hindi mo kailangang magbilang ng mga character nang mano-mano dahil ipinapakita ng stat ang dalawang form nang sabay.

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

Ang %A ay ang letter form, ang %a ay ang octal, at tinutukoy ng %U at %G ang owning user at owning group.

Mga permission string na madalas hanapin

Ito ang mga mode na makikita sa aktuwal na server, kasama ang octal value at kung saan ginagamit ang bawat isa.

  • -rw-r--r-- ay 644. Mga ordinaryong file na binabasa lamang ng isang service, gaya ng config file o HTML page.
  • -rw------- ay 600. Mga secret: SSH private key o .env file ng isang application.
  • -rw-rw-r-- ay 664. File sa directory na shared ng isang group, kung saan kailangan ng mga teammate ng write access.
  • -rwxr-xr-x ay 755. Mga script at binary, gaya ng /usr/local/bin/backup.sh at karamihan ng /usr/bin.
  • -rwx------ ay 700. Private script na owner lamang ang maaaring magpatakbo.
  • drwxr-xr-x ay 755. Halos lahat ng system directory at ang document root ng isang website.
  • drwx------ ay 700. ~/.ssh at mga home directory sa isang naka-lock-down na machine.
  • drwxrwxr-x ay 775. Directory na maaaring sulatan ng group ng owner.
  • drwxrwsr-x ay 2775. Kapareho nito, ngunit may setgid bit, kaya namamana ng mga bagong file sa loob ang group ng directory.
  • drwxrwxrwt ay 1777. /tmp. Ang hulíng t ay sticky bit, kaya sariling file lamang ng user ang maaari niyang i-delete.
  • -rwsr-xr-x ay 4755. Setuid binary na tumatakbo bilang owner nito, gaya ng /usr/bin/passwd at /usr/bin/sudo.
  • -rw-rw-rw- ay 666, at drwxrwxrwx ay 777. World writable ang mga ito, na sa isang server ay halos palaging pagkakamali.
  • lrwxrwxrwx ang ipinapakita ng bawat symbolic link. Binabalewala ng Linux ang mode bits ng link at sinusuri ang target nito, kaya walang kahulugan ang string na ito.

Aling triad ang nalalapat sa iyo

Narito ang ikalawang rule na madalas mali ng mga beginner. Eksaktong isang triad lang ang pinipili ng kernel at doon ito tumitigil.

Kung tumutugma ang user ID mo sa owner ng file, makukuha mo ang owner triad, at hindi na kokonsultahin ang group at other bits. Kung hindi, at kabilang ang group ng file sa isa sa mga group mo, makukuha mo ang group triad. Kung hindi pa rin, other triad ang gagamitin.

Dalawang bagay ang kasunod nito. Nalalapat ang owner triad kahit ito ang may pinakamaraming restriction. Ang file na may mode na 0466, na ipinapakita bilang -r--rw-rw-, ay nagbibigay sa owner nito ng read lamang habang maaaring mag-write ang lahat ng iba, dahil unang tumugma ang owner check at hindi na binasa ang mga kasunod na bit. Legal ito, at nakalilito sa unang pagkikita rito.

Ang group triad ay pinipili batay sa group ng file, hindi sa listahan ng mga group na kinabibilangan mo. ls -l ang nagpi-print ng dalawang pangalan sa bawat linya: una ang owner, pagkatapos ang group. Ang ikalawang group lang na iyon ang may epekto sa file na iyon. Makakatulong ang pagiging kabilang sa dalawampung group kapag isa sa mga iyon ang group ng file.

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

id ang nagpi-print ng user mo at ng bawat group na kinabibilangan mo. stat ang nagpi-print ng owner at group ng file. Ihambing ang dalawang output at malalaman mo kung aling triad ang gagamitin ng kernel para sa iyo.

Ito ang dahilan kung bakit karaniwang nilalagyan ng group at setgid bit ang isang shared directory. Ang sudo chmod 2775 /srv/shared ay ipinapakita bilang drwxrwsr-x, at ang mga file na ginagawa sa loob nito ay nagmamana ng group ng directory sa halip na personal na group ng gumawa, kaya maaari pa rin silang i-write ng susunod na tao. Ang pagbibigay sa bawat service ng sarili nitong account ang kabilang bahagi ng usaping ito, at tinatalakay ito sa isang Linux user para sa bawat service sa isang VPS.

umask ang nagtatakda ng mode ng bawat bagong file

Hindi direktang kinukuha ng bagong file ang mode nito mula sa iyo. Kinukuha ito mula sa program na lumikha rito, pagkatapos alisin ang mga bit na bina-block ng iyong umask. Mask ng mga bit na aalisin ang umask, kaya mas maraming private file ang nalilikha kapag mas malaki ang umask.

Karamihan sa mga distribution ay may default na 022. Kapag gumagawa ng regular file ang isang program, humihiling ito ng 0666. Kapag directory naman, humihiling ito ng 0777. Inaalis ng umask ang 022 sa parehong request, kaya nagiging 644 ang mga file at 755 ang mga directory. Ito mismo ang pares na karaniwang makikita sa bagong VPS.

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

Ipinapakita ng umask -S ang parehong value bilang mga letra, kaya mas madaling basahin kaysa sa 0022. Itakda ang umask 027 sa ~/.profile para sa mas mahigpit na default: 640 sa mga file at 750 sa mga directory. Sa ganitong paraan, mababasa ng iyong group ang iyong mga file at walang ibang makakabasa nito.

Mahalaga ang dalawang limitasyon. Maaari lamang mag-alis ng mga bit ang umask at hindi ito maaaring magdagdag ng mga bit. Kaya hindi kailanman magiging executable ang bagong file, anuman ang itakda mo. Hindi rin binabasa ng systemd service ang iyong shell profile, kaya itakda ang value sa unit file.

[Service]
UMask=0027

Bakit 644 ang web files at 755 ang web directories

Tumatakbo ang web server sa sarili nitong account: www-data sa Debian at Ubuntu, at nginx sa Rocky at Alma. Kailangan ng process na iyon ng read permission sa mga file na sine-serve nito at traverse permission sa mga directory na nasa path ng mga ito. Wala itong dahilan para magsulat sa mga iyon, at hindi ito dapat payagan ng static site.

Ang 644 sa isang file ay nagbibigay ng write sa owner at read sa lahat. Dahil dito, maaaring mag-publish ang deploy user at mag-serve ang web user. Ang 755 sa isang directory ay nagbibigay ng write sa owner at traverse sa lahat. Kaya nitong tahakin ng web user ang path nang hindi nakakapagdagdag o nakakapagbura ng anuman. Kung may bug ang application, hindi nito mare-rewrite ang mga page na sine-serve nito.

Dito nagiging mahalaga ang traverse rule. Kung nasa /home/deploy/site ang site at 750 ang /home/deploy, hindi man lang makakapasok ang web user sa home directory. Magtatapos ang request sa HTTP 403, na may ganitong linya sa /var/log/nginx/error.log:

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

Ang 13 ay EACCES, ang pagtanggi ng kernel sa permission. Walang problema sa network: listening ang port at dumating ang request. Ito ang dahilan kung bakit nakakalito ito habang pinag-aaralan mo pa kung paano gumagana ang listening ports sa Linux. Patakbuhin ang namei -l /home/deploy/site/index.html at sundan ang chain pababa para makita ang unang directory na walang x para sa ibang user.

Ang directory na sinusulatan ng application, gaya ng upload path, ang exception. Ibigay ang access sa pamamagitan ng ownership sa halip na gumamit ng mas maluwag na mode: sudo chown -R www-data:www-data /srv/site/uploads at panatilihing 755 ang mode. Panatilihin ang write access sa nag-iisang directory na nangangailangan nito.

chmod, nang hindi binabago ang buong directory tree

chmod ay may dalawang anyo. Itinatakda ng octal ang lahat ng siyam na bit nang sabay-sabay: chmod 644 notes.txt. Ang symbolic form ay binabago lamang ang tinukoy mo at iniiwan ang iba: idinadagdag ng chmod u+x deploy.sh ang execute permission para sa owner, at inaalis ng chmod go-w notes.txt ang write permission para sa group at other.

Sa recursion kadalasang nasisira ang mga tree. Ginagawang executable ng chmod -R 755 . ang bawat image at config file, dahil hindi matukoy ng chmod kung script o JPEG ang isang file. Sa halip, gamitin ang capital X.

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

Inilalapat ng capital X ang execute permission sa mga directory at sa mga file na mayroon nang execute bit sa alinmang bahagi. Nagiging 755 ang mga directory, 644 ang mga ordinary file, at nananatiling executable ang mga script na dati nang executable. Kapag may isang file na ang mode ay pinagkakatiwalaan mo, kinokopya ito ng chmod --reference=good.sh other.sh sa iba.

Ang mga mensaheng makikita kapag may maling bit

bash: ./deploy.sh: Permission denied ay nangangahulugang walang x bit ang script sa triad na naaangkop dito, o walang x ang isang directory sa path nito. Inaayos ng chmod u+x deploy.sh ang unang kaso.

Ibang problema ang bash: ./deploy.sh: cannot execute: required file not found kahit nakalilito ang pangalan nito. Tama ang x bit, ngunit nawawala ang interpreter na nakalagay sa unang linya. Karaniwang sanhi nito ang Windows line endings, kaya naghahanap ang kernel ng interpreter na tinatawag na /bin/bash\r. Ayusin ito gamit ang sed -i 's/\r$//' deploy.sh.

Nagmumula ang Permissions 0644 for '/home/deploy/.ssh/id_ed25519' are too open. sa SSH client, na tumatangging gumamit ng private key na maaaring basahin ng ibang account. Kailangang 600 ang permission ng key at 700 naman ang kailangan ng ~/.ssh. Nasa pamamahala ng SSH keys at mga file permission ng mga ito ang kumpletong impormasyon tungkol sa key handling.

Lumilitaw ang Authentication refused: bad ownership or modes for directory /home/deploy/.ssh sa journal ng server kapag group-writable ang home directory o ang .ssh nito. Tinatanggihan ng sshd StrictModes setting ang key. Sa panig ng client, nagmumukha itong hindi inaasahang password prompt na walang paliwanag.

Ang sudo: /etc/sudoers is world writable, na sinusundan ng sudo: no valid sudoers sources found, quitting, ay nangangahulugang sinuri ng sudo ang mode ng sarili nitong config at tumangging tumakbo. Dapat 0440 ang permission ng file na iyon. Karaniwang resulta ito ng malawakang recursive na chmod. Maaari rin itong mangyari kasabay ng mensahe ng sshd sa itaas, kaya ang console ng provider ang tanging paraan upang makabalik sa server.

Bakit hindi solusyon ang 777

Nagbibigay ang 777 ng write access sa bawat account sa machine at sa bawat process na tumatakbo sa ilalim ng alinman sa mga account na iyon. Sa isang server, tumatakbo ang mga service sa ilalim ng kani-kanilang user, kaya mas marami ang sakop ng “everyone” sa isang VPS kaysa sa laptop. Kapag na-compromise ang isang service, maaari itong magsulat sa anumang lokasyong pinapayagan ng 777.

Direkta ang pinsala kapag nasa ilalim ito ng web root. Kapag world-writable ang isang directory at sine-serve rin ito ng server, maaaring magamit ang file upload flaw upang maglagay ng script at pagkatapos ay i-request ito.

Halos palaging maling sagot ang 777 sa tanong tungkol sa ownership. Ang sintomas ay “hindi makapagsulat ang app sa directory na ito”. Ang sanhi ay pagmamay-ari ng maling user ang directory. Nalulutas ito ng sudo chown -R appuser:appuser /srv/app/storage na may mode 755, habang napapanatiling walang access ang lahat ng ibang account. Ang paggawa ng mga account na ito bago mag-deploy ng anuman ay bahagi ng unang sampung minuto sa bagong VPS.

May lehitimong gamit ang world write sa isang pamilyar na lugar, ang /tmp, at ang tamang spelling nito ay drwxrwxrwt. Ang nasa hulihan na t ay ang sticky bit: writable ang directory ng lahat, pero maaari lamang mag-delete ang isang user ng mga file na pagmamay-ari niya. Kung wala ang bit na ito, maaaring mag-delete ang anumang account ng temporary files ng ibang account.

Basahin ang mode bago ito baguhin

Binabasa lamang ng mga command na ito ang state, kaya ligtas silang patakbuhin kahit saan.

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

Inililista ng find <path> -perm -0002 ang lahat ng nasa ilalim ng path na may nakatakdang world write bit. Ito ang pinakamabilis na paraan para i-audit ang isang box matapos may mag-repair gamit ang chmod 777.

Para malaman kung makakapasok ang isang partikular na service account sa isang directory, patakbuhin ang pagsusuri bilang account na iyon. Nagpi-print ang sudo -u www-data test -x /srv/site && echo yes || echo no ng yes kapag may traverse permission ang user na iyon sa directory, at ng no kapag wala. Walang napapatunayan ang pagsusuri bilang root, dahil nilalampasan ng root ang check at palaging yes ang sagot.

FAQ

Ano ang ibig sabihin ng drwxr-xr-x sa Linux?

Isa itong directory, na ipinapakita ng nauunang d, na may mode 755. Ang triad ng owner ay rwx, kaya lahat ng permission ay mayroon ang owner. Ang triad ng group ay r-x at ang triad ng others ay r-x, kaya maaaring ilista ng lahat ang mga pangalan sa loob at dumaan sa directory, pero ang owner lamang ang maaaring magdagdag o mag-alis ng anuman. Kumpirmahin ang anumang path gamit ang stat -c '%A %a %U %G %n' <path>, na nagpi-print ng letter form at octal form nang magkatabi.

Bakit 644 ang web files at 755 ang web directories?

Tumatakbo ang web server gamit ang ibang account, www-data sa Ubuntu. Kailangan nito ng read permission sa mga file na sine-serve nito at traverse permission sa bawat directory na nasa itaas ng mga iyon. Wala itong dahilan para magsulat sa alinman sa mga ito. Ibinibigay ng 644 ang write permission sa owner at read permission sa iba. Ibinibigay ng 755 ang write permission sa owner at traverse permission sa iba. Ang directory na talagang kailangang sulatan ng application ay dapat ipasa sa user ng application gamit ang chown, sa halip na palawakin ang mode para sa lahat.

Ibig bang sabihin ng x bit ay maaari kong i-execute ang isang directory?

Hindi. Sa directory, ang x ay nangangahulugang traverse. Ito ang karapatang i-resolve ang isang pangalan sa loob nito habang tinatahak ng kernel ang isang path. Kailangan ito ng cd, at kailangan din ito sa bawat pag-open ng file sa ilalim nito. Kailangan ng bawat directory sa path ang x, kaya hindi pa rin maaabot ang file na may mode 644 kapag kulang ang directory sa itaas nito ng x para sa iyo. Pini-print ng namei -l /path/to/file ang mode ng bawat directory sa chain, kaya makikita kung saan humihinto ang lookup.

Tama bang gamitin ang chmod 777 bilang fix?

Halos hindi kailanman sa isang server. Nagbibigay ito ng write permission sa bawat account sa machine, kabilang ang mga account na ginagamit ng services. Dahil dito, maaaring baguhin ng isang breached service ang file. Kapag hindi makapagsulat ang isang application sa isang directory, ownership ang karaniwang tunay na problema: binibigyan ng sudo chown -R appuser:appuser /srv/app/storage na may mode 755 ang application ng kailangan nito at hindi isinasama ang iba. Ang karaniwang exception ay /tmp sa 1777. Gumagana lamang ito dahil pinipigilan ng sticky bit ang mga user na mag-delete ng files ng isa't isa.

Bakit nagpi-print ang ls ng tuldok o plus pagkatapos ng permissions?

Inilalarawan ng ikalabing-isang character ang mga rule na lampas sa siyam na permission bit. Ang tuldok, gaya ng nasa drwxr-xr-x., ay nangangahulugang may nakakabit na SELinux security context. Normal ito sa Fedora at Rocky. Ang plus, gaya ng nasa drwxr-xr-x+, ay nangangahulugang may nakatakdang POSIX ACL (access control list), kaya may user o group na may mga karapatang hindi ipinapakita ng tatlong triad. Patakbuhin ang getfacl <path> upang ilista ang mga karagdagang entry na iyon.

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