SSD Nodes Learn 🎉 VPS $5.50/నెల నుండి
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-08-13

drwxr-xr-x అర్థం: Linux permissions మరియు 755

drwxr-xr-x ను ఒక్కో అక్షరంగా చదివి 755 mode కు ఎలా సరిపోతుందో తెలుసుకోండి. directory లో x traverse ఎందుకు ఇస్తుందో, chmod 777 ఎందుకు పరిష్కారం కాదో చూడండి.

drwxr-xr-x అంటే ఏమిటి

drwxr-xr-x అనేది దాని యజమాని మార్చగలిగే, ఇతర ప్రతి వినియోగదారు మార్చకుండా చదవగలిగే మరియు దానిలోకి ప్రవేశించగలిగే directory ను వివరిస్తుంది. Octal రూపంలో ఆ mode 755. Linux ప్రతి ls -l output లోని ప్రతి line ప్రారంభంలో ఈ పది characters ను ముద్రిస్తుంది. అవి ఎల్లప్పుడూ అదే క్రమంలో ఒకే అర్థాన్ని కలిగి ఉంటాయి. అందువల్ల ఒక string నేర్చుకుంటే అన్నింటినీ అర్థం చేసుకోవచ్చు.

మిగతా నియమాలకంటే ముందు ఒక ముఖ్యమైన నియమం ఉంది. మీ స్వంత testing ద్వారా ఏదైనా నిర్ధారించగలరా అనేది ఈ నియమంపై ఆధారపడి ఉంటుంది. root user permission bits ను పట్టించుకోదు. Kernel root కు CAP_DAC_OVERRIDE capability (discretionary access control override) ఇస్తుంది. అందువల్ల mode అనుమతించకపోయినా root files ను open చేయగలదు. Bits ఏం చూపించినా, ఈ page లోని ప్రతి example root కోసం విజయవంతమవుతుంది. ఈ నియమాలు ఎలా పనిచేస్తున్నాయో పరిశీలించాలనుకుంటే normal user గా login అవ్వండి.

పది అక్షరాలను ఒక్కొక్కటిగా చూడటం

పరిశీలించడానికి ఒక directory మరియు ఒక file సృష్టించండి. ఇక్కడ కొత్త directory వెలుపల ఏదీ ప్రభావితం కాదు.

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

సాధారణ default umask 022 ఉంటే, రెండు directory పంక్తులు drwxr-xr-x తో ప్రారంభమవుతాయి. file పంక్తి -rw-r--r-- తో ప్రారంభమవుతుంది.

మొదటి అక్షరం permission కాదు; అది file type. d directory ను సూచిస్తుంది. - సాధారణ file ను సూచిస్తుంది. l symbolic link ను సూచిస్తుంది. c మరియు b character మరియు block device nodes ను సూచిస్తాయి. s socket ను సూచిస్తుంది. p named pipe ను సూచిస్తుంది. ఇది octal విలువకు వెలుపల ఉంటుంది. అందుకే drwxr-xr-x 755 అవుతుంది; d తో ప్రారంభమయ్యే విలువ కాదు.

దాని తరువాతి తొమ్మిది అక్షరాలు మూడు చొప్పున మూడు సమూహాలుగా ఉంటాయి. వాటి క్రమం ఎప్పుడూ మారదు.

  • 2 నుంచి 4 అక్షరాలు owner triad. ఇవి file ను కలిగి ఉన్న user కు వర్తించే bits.
  • 5 నుంచి 7 అక్షరాలు group triad. ఇవి file యొక్క group కు వర్తించే bits.
  • 8 నుంచి 10 అక్షరాలు other triad. ఇవి మిగిలిన అందరికీ వర్తించే bits.

ఒక triad లో slots ఎల్లప్పుడూ మొదట r, తరువాత w, తరువాత x గా ఉంటాయి. dash అంటే ఆ bit off లో ఉందని అర్థం. అక్షరాల స్థానాలు ఎప్పుడూ మారవు. r-x అంటే write లేకుండా read మాత్రమే. -w- అంటే read లేకుండా write మాత్రమే. ఇది చెల్లుబాటు అయ్యే, కానీ అరుదైన అమరిక.

అందువల్ల drwxr-xr-x ఇలా విభజించబడుతుంది: directory కోసం d, తరువాత owner కోసం rwx, తరువాత group కోసం r-x, తరువాత other కోసం r-x.

కొన్ని systems పదకొండవ అక్షరాన్ని కూడా చూపిస్తాయి. చివరలో కనిపించే dot, drwxr-xr-x., ఆ file కు SELinux (security enhanced Linux) context ఉందని సూచిస్తుంది. Fedora మరియు Rocky వంటి SELinux distributions దీన్ని default గా చూపిస్తాయి. చివరలో కనిపించే plus, drwxr-xr-x+, ఆ file కు POSIX ACL (access control list) ఉందని సూచిస్తుంది. ఇవి ఈ తొమ్మిది bits కు అదనంగా ఉండే rules. ఆ అదనపు rules ను getfacl <path> తో చదవండి.

డైరెక్టరీలో r, w మరియు x వేర్వేరు పనులు చేస్తాయి

ప్రారంభకులు తరచుగా తప్పుగా అర్థం చేసుకునే మొదటి నియమం ఇదే. ఫైల్‌కి, డైరెక్టరీకి అక్షరాలు ఒకటే. కానీ అవి ఇచ్చే అనుమతులు ఒకేలా ఉండవు.

  • ఫైల్‌పై r దాని కంటెంట్‌ను చదువుతుంది. డైరెక్టరీపై r దానిలోని పేర్లను జాబితా చేస్తుంది. సాధారణంగా ls కు ఇదే అవసరం.
  • ఫైల్‌పై w దాని కంటెంట్‌ను మార్చుతుంది. డైరెక్టరీపై w దానిలోని entries ను జోడించడానికి, తొలగించడానికి అనుమతిస్తుంది. ఫైల్‌ను తొలగించడం డైరెక్టరీలో మార్పు కాబట్టి, దానిని నిర్ణయించేది డైరెక్టరీపై ఉన్న write అనుమతి. ఫైల్ యొక్క mode కు ఇందులో ప్రభావం ఉండదు.
  • ఫైల్‌పై x దాన్ని ప్రోగ్రామ్‌గా అమలు చేస్తుంది. డైరెక్టరీపై x దానిలోకి traverse చేయడానికి అనుమతిస్తుంది. అంటే path lookup సమయంలో kernel దానిలోని ఒక పేరును resolve చేయగలదు.

Traverse చేసే అనుమతి చాలామందికి ఆశ్చర్యం కలిగిస్తుంది. డైరెక్టరీపై x ఏదీ అమలు చేయదు. /srv/site/index.html ను తెరవడానికి ముందుగా x పై / అవసరం. తరువాత x పై /srv, ఆపై x పై /srv/site, చివరగా ఫైల్‌పై r అవసరం. ఆ క్రమంలోని ఏదైనా డైరెక్టరీపై మీకు x లేకపోతే, lookup అక్కడే ఆగిపోతుంది. చివరలో ఉన్న ఫైల్‌కు ప్రపంచంలోని అందరికీ read అనుమతి ఉన్నా, మొత్తం path కోసం caller కు Permission denied అని తెలియజేయబడుతుంది. namei -l /srv/site/index.html ఆ క్రమంలోని ప్రతి దశను దాని mode మరియు owner తో చూపిస్తుంది. అందువల్ల ఏ link వద్ద lookup ఆగిపోయిందో చూడవచ్చు.

r ఉండి x లేని డైరెక్టరీని గుర్తుంచుకోవాలి. ఇది సాధారణం కాని అర్ధస్థితి. listing కు r అనుమతి సరిపోతుంది కాబట్టి సాధారణ user పేర్లను జాబితా చేయగలడు. కానీ ఏ entry ను stat చేయలేడు. అందువల్ల ls -l size మరియు mode columns లో question marks నింపి, ప్రతి entry కోసం ls: cannot access ...: Permission denied ను ముద్రిస్తుంది.

అక్షర రూపాన్ని 755గా మార్చడం

ప్రతి triad మూడు bit‌ల సంఖ్య. r విలువ 4, w విలువ 2, x విలువ 1. active‌గా ఉన్న bit‌ల విలువలను కలపండి.

  • rwx విలువ 4 + 2 + 1 = 7
  • rw- విలువ 4 + 2 = 6
  • r-x విలువ 4 + 1 = 5
  • r-- విలువ 4
  • --- విలువ 0

అందువల్ల drwxr-xr-x owner‌కు 7, group‌కు 5, other‌కు 5: 755. -rw-r--r-- విలువలు 6, 4, 4: 644. drwxrwxr-x విలువలు 7, 7, 5: 775. ఇది group‌కు write permission జోడించిన 755. అక్షరాలను చేతితో లెక్కించాల్సిన అవసరం లేదు, ఎందుకంటే stat రెండు రూపాలను ఒకేసారి చూపిస్తుంది.

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

%A అక్షర రూపం, %a octal రూపం, %U మరియు %G owner user మరియు owner group పేర్లను సూచిస్తాయి.

వ్యక్తులు వెతికే permission strings

నిజమైన సర్వర్‌లో మీరు తరచుగా ఎదుర్కొనే modes ఇవి. ప్రతి mode కు octal విలువ మరియు అది ఎక్కడ ఉపయోగించబడుతుందో ఇక్కడ ఉంది.

  • -rw-r--r-- 644. Service కేవలం చదివే సాధారణ files. ఉదాహరణకు config file లేదా HTML page.
  • -rw------- 600. Secrets: SSH private key లేదా application యొక్క .env file.
  • -rw-rw-r-- 664. Group share చేసిన directory లోని file. సహచరులు దానిలో write చేయాల్సి ఉంటుంది.
  • -rwxr-xr-x 755. Scripts మరియు binaries. ఉదాహరణకు /usr/local/bin/backup.sh మరియు /usr/bin లోని చాలా files.
  • -rwx------ 700. దాని owner మాత్రమే run చేయగల private script.
  • drwxr-xr-x 755. దాదాపు ప్రతి system directory మరియు website యొక్క document root.
  • drwx------ 700. ~/.ssh మరియు locked down box లోని home directories.
  • drwxrwxr-x 775. Owner యొక్క group write చేయగల directory.
  • drwxrwsr-x 2775. ఇదే permission తో పాటు setgid bit కూడా ఉంటుంది. అందువల్ల లోపల సృష్టించే కొత్త files ఆ directory యొక్క group ను inherit చేస్తాయి.
  • drwxrwxrwt 1777. /tmp. చివరలోని t sticky bit. అందువల్ల user తన files ను మాత్రమే delete చేయగలరు.
  • -rwsr-xr-x 4755. Owner గా run అయ్యే setuid binary. ఉదాహరణకు /usr/bin/passwd మరియు /usr/bin/sudo.
  • -rw-rw-rw- 666, అలాగే drwxrwxrwx 777. అందరికీ write అనుమతి ఉంటుంది. సర్వర్‌లో ఇది దాదాపు ఎల్లప్పుడూ పొరపాటు.
  • lrwxrwxrwx ప్రతి symbolic link చూపించే విలువ. Linux link పైని mode bits ను పట్టించుకోదు; బదులుగా target ను తనిఖీ చేస్తుంది. అందువల్ల ఈ string కు అసలు అర్థం ఉండదు.

మీకు వర్తించే triad

ప్రారంభకులు తరచుగా తప్పుగా అర్థం చేసుకునే రెండవ నియమం ఇదే. kernel ఖచ్చితంగా ఒక triad ను మాత్రమే ఎంచుకుని అక్కడే ఆగుతుంది.

మీ user ID file owner తో సరిపోతే, మీకు owner triad వర్తిస్తుంది. group మరియు other bits ను అసలు పరిశీలించదు. లేకపోతే, ఆ file యొక్క group మీ groups లో ఒకటైతే group triad వర్తిస్తుంది. అది కూడా కాకపోతే other triad వర్తిస్తుంది.

దీని నుంచి రెండు విషయాలు స్పష్టమవుతాయి. owner triad అత్యంత restrictive గా ఉన్నా అది వర్తిస్తుంది. mode 0466 కలిగిన file `-r--rw-rw-` గా కనిపిస్తుంది. ఇది owner కు read మాత్రమే ఇస్తుంది, మిగతా అందరికీ write అనుమతి ఇస్తుంది. కారణం, owner check ముందుగా సరిపోలింది. దాని తర్వాతి bits ను kernel చదవలేదు. ఇది చట్టబద్ధమైన configuration, కానీ మొదటిసారి చూసినప్పుడు అందరినీ గందరగోళానికి గురి చేస్తుంది.

తర్వాత group triad ను మీరు చెందిన groups జాబితా నిర్ణయించదు. file యొక్క group నిర్ణయిస్తుంది. `ls -l` ప్రతి line లో రెండు పేర్లను చూపిస్తుంది: ముందుగా owner, తరువాత group. ఆ రెండవ group కు మాత్రమే ఆ file పై ప్రభావం ఉంటుంది. మీరు ఇరవై groups కు చెందినవారైనా, file వాటిలో ఒక group ను కలిగి ఉన్నప్పుడే ప్రయోజనం ఉంటుంది.

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

`id మీ user మరియు మీరు చెందిన ప్రతి group ను చూపిస్తుంది. stat` file యొక్క owner మరియు group ను చూపిస్తుంది. ఈ రెండింటినీ పోల్చితే kernel మీ కోసం ఏ triad ను ఉపయోగిస్తుందో తెలుస్తుంది.

అందుకే shared directory కు సాధారణంగా ఒక group మరియు setgid bit ఇస్తారు. `sudo chmod 2775 /srv/shared ఇలా drwxrwsr-x` గా కనిపిస్తుంది. ఆ directory లో సృష్టించే files, వాటిని సృష్టించిన వ్యక్తి యొక్క వ్యక్తిగత group కు బదులుగా directory యొక్క group ను inherit చేసుకుంటాయి. అందువల్ల తరువాతి వ్యక్తి వాటిని రాయగలడు. ప్రతి service కు ప్రత్యేక account ఇవ్వడం ఈ విధానంలోని మరో భాగం. దీని గురించి VPS పై ప్రతి service కు ఒక Linux user లో వివరించబడింది.

umask ప్రతి కొత్త ఫైల్‌కు mode ను నిర్ణయిస్తుంది

కొత్త ఫైల్ తన mode ను మీ నుంచి తీసుకోదు. దాన్ని సృష్టించిన ప్రోగ్రామ్ నిర్ణయించిన mode నుంచి, మీ umask తొలగించే bits ను తీసివేసిన తర్వాత మిగిలిన mode ను అది పొందుతుంది. umask తొలగించాల్సిన bits కు mask వంటిది. అందువల్ల umask విలువ ఎక్కువగా ఉంటే ఫైళ్లు మరింత private గా ఉంటాయి.

చాలా distributions లో default గా 022 ఉంటుంది. Regular file ను సృష్టించే ప్రోగ్రామ్ 0666 ను అభ్యర్థిస్తుంది. Directory ను సృష్టించే ప్రోగ్రామ్ 0777 ను అభ్యర్థిస్తుంది. umask రెండు అభ్యర్థనల నుంచీ 022 ను తొలగిస్తుంది. అందువల్ల files కు 644, directories కు 755 లభిస్తాయి. కొత్త VPS లో సాధారణంగా కనిపించే జత ఇదే.

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

umask -S అదే విలువను letters రూపంలో చూపిస్తుంది. ఇది 0022 కంటే చదవడానికి సులభంగా ఉంటుంది. మరింత కఠినమైన default కోసం umask 027 ను ~/.profile లో సెట్ చేయండి. అప్పుడు files కు 640, directories కు 750 లభిస్తాయి. మీ group మీ పనిని చదవగలదు. ఇతరులకు అనుమతి ఉండదు.

రెండు పరిమితులు ముఖ్యమైనవి. umask bits ను తొలగించగలదు మాత్రమే; వాటిని జోడించలదు. అందుకే మీరు ఏ విలువ సెట్ చేసినా కొత్తగా సృష్టించిన file executable గా ఉండదు. అలాగే systemd service మీ shell profile ను ఎప్పుడూ చదవదు. కాబట్టి ఆ విలువను unit file లోనే సెట్ చేయండి.

[Service]
UMask=0027

వెబ్ ఫైళ్లు 644 మరియు వెబ్ డైరెక్టరీలు 755 ఎందుకు ఉండాలి

వెబ్ సర్వర్ తన స్వంత ఖాతా కింద నడుస్తుంది. Debian మరియు Ubuntuలో అది www-data, Rocky మరియు Almaలో nginx. ఆ process అందించే ఫైళ్లను చదవాలి, అలాగే వాటికి పైన ఉన్న డైరెక్టరీలను traverse చేయాలి. వాటిలో రాయాల్సిన అవసరం దానికి లేదు. Static site లో దీనిని ఎప్పుడూ అనుమతించకూడదు.

ఫైల్‌పై 644 mode owner కు write మరియు అందరికీ read అనుమతిని ఇస్తుంది. అందువల్ల deploy user publish చేయగలదు, web user serve చేయగలదు. డైరెక్టరీపై 755 mode owner కు write మరియు అందరికీ traverse అనుమతిని ఇస్తుంది. అందువల్ల web user path లోని డైరెక్టరీలను దాటగలదు, కానీ ఏదీ add లేదా delete చేయలేడు. అప్లికేషన్‌లోని bug అది అందిస్తున్న పేజీలను మళ్లీ రాయలేడు.

Traverse నియమం ఇక్కడే సమస్య కలిగిస్తుంది. Site /home/deploy/site లో ఉండి, /home/deploy mode 750 కలిగి ఉంటే, web user home directory లోకి ప్రవేశించలేడు. అప్పుడు request HTTP 403గా ముగుస్తుంది. /var/log/nginx/error.log లో ఇలాంటి line కనిపిస్తుంది:

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

ఆ 13 అనేది EACCES. ఇది kernel permission refusal. Networkలో సమస్య లేదు. Port listeningలో ఉంది, request కూడా చేరింది. Linuxలో listening ports ఎలా పనిచేస్తాయో ఇంకా నేర్చుకుంటున్నప్పుడు ఈ పరిస్థితి గందరగోళంగా అనిపించడానికి ఇదే కారణం. namei -l /home/deploy/site/index.html నడిపి, chainలో దిగుతూ ఇతరుల కోసం x లేని మొదటి డైరెక్టరీని కనుగొనండి.

అప్లికేషన్ రాయాల్సిన డైరెక్టరీ దీనికి మినహాయింపు. ఉదాహరణకు upload path. దీనికి విస్తృతమైన mode ఇవ్వకుండా ownership ద్వారా అనుమతి ఇవ్వండి: sudo chown -R www-data:www-data /srv/site/uploads. Mode ను 755గానే ఉంచండి. అవసరమైన ఆ ఒక్క డైరెక్టరీకే write access పరిమితం చేయండి.

chmod, మొత్తం directory tree కు ఒకే విధంగా మార్చకుండా

chmod రెండు రూపాల్లోనూ ఉపయోగించవచ్చు. Octal పద్ధతి మొత్తం తొమ్మిది bits ను ఒకేసారి సెట్ చేస్తుంది: chmod 644 notes.txt. Symbolic పద్ధతి మీరు పేర్కొన్న permissions ను మాత్రమే మార్చి, మిగతావాటిని అలాగే ఉంచుతుంది: chmod u+x deploy.sh owner కు execute permission జోడిస్తుంది, chmod go-w notes.txt group మరియు other నుంచి write permission తొలగిస్తుంది.

Directory tree లపై recursive మార్పులు చేసేటప్పుడు నష్టం కలగవచ్చు. chmod -R 755 . ప్రతి image file మరియు ప్రతి config file కు execute permission ఇస్తుంది, ఎందుకంటే chmod ఒక script ను JPEG file నుంచి వేరు చేయలేదు. బదులుగా capital X ను ఉపయోగించండి.

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

Capital X directories కు execute permission ఇస్తుంది. ఏదైనా file లో ఇప్పటికే ఎక్కడైనా execute bit ఉంటే, ఆ file కు కూడా దాన్ని వర్తింపజేస్తుంది. Directories 755 permissions తో, సాధారణ files 644 permissions తో వస్తాయి. ఇప్పటికే executable గా ఉన్న scripts అలాగే ఉంటాయి. ఒక file కు మీరు నమ్మకంగా ఉపయోగించగల mode ఉంటే, chmod --reference=good.sh other.sh దాన్ని ఇతర files కు copy చేస్తుంది.

తప్పు ఉన్నప్పుడు కనిపించే సందేశాలు

bash: ./deploy.sh: Permission denied అంటే మీకు వర్తించే triad లో script కు x bit లేదు లేదా దాని path లోని ఏదైనా directoryకి x లేదు. మొదటి పరిస్థితిని chmod u+x deploy.sh సరిచేస్తుంది.

bash: ./deploy.sh: cannot execute: required file not found అనేది గందరగోళపరిచే పేరున్న మరో సమస్య. x bit సరిగానే ఉంది, కానీ మొదటి lineలో పేర్కొన్న interpreter లేదు. సాధారణ కారణం Windows line endings. అందువల్ల kernel /bin/bash\r అనే interpreter కోసం వెతుకుతోంది. దీన్ని sed -i 's/\r$//' deploy.sh తో సరిచేయండి.

ఇతర accounts చదవగలిగే private key ను SSH client ఉపయోగించడానికి నిరాకరించినప్పుడు Permissions 0644 for '/home/deploy/.ssh/id_ed25519' are too open. కనిపిస్తుంది. Keyకు 600 permissions, ~/.ssh కు 700 permissions అవసరం. Key నిర్వహణ మొత్తం SSH keys మరియు వాటి file permissions నిర్వహణ లో ఉంది.

Home directory లేదా దాని .ssh group-writable గా ఉన్నప్పుడు server journal లో Authentication refused: bad ownership or modes for directory /home/deploy/.ssh కనిపిస్తుంది. sshd లోని StrictModes setting ఆ keyని తిరస్కరిస్తుంది. Client వైపు దీనివల్ల కారణం చూపకుండా ఊహించని password prompt కనిపిస్తుంది.

sudo: /etc/sudoers is world writable తర్వాత sudo: no valid sudoers sources found, quitting కనిపిస్తే, sudo తన configuration file permissions ను పరిశీలించి అమలు కావడానికి నిరాకరించిందని అర్థం. ఆ fileకు 0440 permissions ఉండాలి. విస్తృత recursive chmod చేసిన తర్వాత సాధారణంగా ఈ సమస్య వస్తుంది. పై sshd సందేశంతో ఇది కలసి రావచ్చు. అప్పుడు తిరిగి login చేయడానికి provider console మాత్రమే మార్గంగా మిగులుతుంది.

777 పరిష్కారం ఎందుకు కాదు

777 మెషీన్‌లోని ప్రతి account కు, అలాగే ఆ account లలో ఏదైనా account కింద నడుస్తున్న ప్రతి process కు write access ఇస్తుంది. Server services సాధారణంగా వాటి స్వంత users కింద నడుస్తాయి. అందువల్ల VPSలో "everyone" పరిధి laptop కంటే చాలా విస్తృతంగా ఉంటుంది. Compromise అయిన service, 777 అనుమతించే ఏ స్థానంలోనైనా రాయగలదు.

Web root కింద దీని ప్రభావం నేరుగా కనిపిస్తుంది. Server అందించే directory కు world-writable అనుమతి ఉంటే, file upload లోని లోపాన్ని ఉపయోగించి script ను అక్కడ ఉంచి, తరువాత దాన్ని request చేయవచ్చు.

Ownership సమస్యకు 777 దాదాపు ఎప్పుడూ సరైన సమాధానం కాదు. కనిపించే సమస్య: "app ఈ directory లో రాయలేకపోతోంది". కారణం: ఆ directory తప్పు user కు చెందింది. sudo chown -R appuser:appuser /srv/app/storage కు mode 755 ఇవ్వడం ద్వారా సమస్య పరిష్కరించబడుతుంది. అదే సమయంలో మిగతా అన్ని accounts కు access నిరోధించబడుతుంది. ఏదైనా deploy చేయడానికి ముందే ఆ accounts సృష్టించడం కొత్త VPSలో మొదటి పది నిమిషాల్లో చేయాల్సిన పనిలో భాగం.

ఒక పరిచితమైన స్థానంలో world write సముచితమే: /tmp. దాని సరైన రూపం drwxrwxrwt. చివరలోని t sticky bit ను సూచిస్తుంది. Directory అందరికీ writable గా ఉంటుంది, కానీ user తాను స్వంతం చేసుకున్న files ను మాత్రమే delete చేయగలడు. ఆ bit లేకపోతే, ఏ account అయినా మరొక account కు చెందిన temporary files ను delete చేయగలదు.

మోడ్‌ను మార్చే ముందు దాన్ని చదవండి

ఈ commands స్థితిని మాత్రమే చదువుతాయి. అందువల్ల వాటిని ఎక్కడైనా సురక్షితంగా అమలు చేయవచ్చు.

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

ప్రపంచ write bit సెట్ చేసిన path కింద ఉన్న ప్రతిదాన్ని find <path> -perm -0002 జాబితా చేస్తుంది. ఎవరైనా chmod 777 ఉపయోగించి సిస్టమ్‌లో మార్పులు చేసిన తర్వాత దాన్ని audit చేయడానికి ఇది వేగవంతమైన మార్గం.

ఒక నిర్దిష్ట service account directoryలోకి ప్రవేశించగలదో తెలుసుకోవాలంటే, ఆ accountగా ప్రశ్నను అమలు చేయండి. ఆ userకు directoryపై traverse అనుమతి ఉంటే sudo -u www-data test -x /srv/site && echo yes || echo no, లేకపోతే yes ముద్రిస్తుంది. traverse అనుమతి లేనప్పుడు no ముద్రిస్తుంది. rootగా ప్రశ్నించడం వల్ల ఉపయోగం లేదు. root ఈ తనిఖీని దాటవేస్తుంది కాబట్టి సమాధానం ఎల్లప్పుడూ yes ఉంటుంది.

FAQ

Linuxలో drwxr-xr-x అంటే ఏమిటి?

ఇది ఒక directory. మొదట కనిపించే d అది directory అని చూపిస్తుంది. దీని mode 755. Owner triad rwx కావడంతో ownerకు దానిపై అన్ని permissions ఉంటాయి. Group triad r-x, other triad r-x. అందువల్ల మిగతా అందరూ లోపల ఉన్న పేర్లను list చేయగలరు, directory ద్వారా traverse చేయగలరు. అయితే owner తప్ప మరెవరూ ఏదీ add లేదా remove చేయలేరు. ఏదైనా path ను stat -c '%A %a %U %G %n' <path> తో నిర్ధారించండి. ఇది letter form మరియు octal form ను పక్కపక్కన చూపిస్తుంది.

Web files 644, web directories 755 ఎందుకు ఉంటాయి?

Web server వేరే account కింద నడుస్తుంది. Ubuntuలో ఆ account www-data. అది అందించే files ను చదవాలి. ఆ files కు పైన ఉన్న ప్రతి directory ను traverse చేయాలి. వాటిలో ఏదింటిలోనూ write చేయాల్సిన అవసరం లేదు. 644 ownerకు write, మిగతా అందరికీ read ఇస్తుంది. 755 ownerకు write, మిగతా అందరికీ traverse ఇస్తుంది. Application నిజంగా write చేయాల్సిన directory ఉంటే, అందరికీ mode విస్తరించకుండా chown తో ఆ application's userకు అప్పగించాలి.

x bit అంటే directoryను execute చేయగలనని అర్థమా?

కాదు. Directoryపై x అంటే traverse. Kernel pathను పరిశీలిస్తున్నప్పుడు దానిలోని ఒక పేరును resolve చేయడానికి ఇది అవసరమైన హక్కు. cd కు ఇది అవసరం. దాని కింద ఉన్న fileను open చేయడానికి కూడా ఇది అవసరం. Pathలోని ప్రతి directoryకి x అవసరం. అందువల్ల directory పైన ఎక్కడైనా మీకు x లేకపోతే, mode 644 ఉన్న fileను కూడా చేరుకోలేరు. Chainలోని ప్రతి directory modeను namei -l /path/to/file చూపిస్తుంది. Lookup ఎక్కడ ఆగుతుందో దీనివల్ల తెలుస్తుంది.

chmod 777 ఎప్పుడైనా సరైన పరిష్కారమా?

Serverపై దాదాపు ఎప్పుడూ కాదు. ఇది machineలోని ప్రతి accountకు write ఇస్తుంది. Services నడిచే accounts కూడా ఇందులో ఉంటాయి. అందువల్ల ఒక compromised service fileను మార్చగలదు. Application directoryలో write చేయలేకపోతే, అసలు సమస్య సాధారణంగా ownership అవుతుంది. Mode 755తో sudo chown -R appuser:appuser /srv/app/storage applicationకు అవసరమైన హక్కులను ఇస్తుంది, మిగతావారిని బయట ఉంచుతుంది. సాధారణంగా కనిపించే మినహాయింపు /tmp at 1777. Sticky bit users ఒకరి filesను మరొకరు delete చేయకుండా ఆపడం వల్ల మాత్రమే ఇది పనిచేస్తుంది.

Permissions తర్వాత ls dot లేదా plus ఎందుకు చూపిస్తుంది?

ఆ పదకొండవ character తొమ్మిది permission bitsకు అదనంగా ఉన్న rulesను వివరిస్తుంది. drwxr-xr-x. లాంటి dot అంటే SELinux security context అనుసంధానించబడి ఉందని అర్థం. Fedora మరియు Rockyలో ఇది సాధారణం. drwxr-xr-x+ లాంటి plus అంటే POSIX ACL (access control list) అమలులో ఉందని అర్థం. అంటే మూడు triadsలో కనిపించని rights ఏదైనా user లేదా groupకు ఉన్నాయి. ఆ అదనపు entriesను list చేయడానికి getfacl <path> అమలు చేయండి.

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