అధికారాలను తగ్గించిన తర్వాత: ఏ OpenVPN ఫైళ్లు ఇంకా పనిచేస్తున్నాయి?
తగ్గించడానికి ముందు తెరిచిన డిస్క్రిప్టర్లు పని కొనసాగిస్తాయి; తర్వాత మళ్లీ తెరిచే మార్గాలు కావు. మీ సెటప్ మూడు రన్టైమ్ ఫైళ్లలో ఏది మళ్లీ తెరవాలో నిర్ణయించండి.
దీర్ఘకాలిక నిర్వహణ సమయం ఆ క్షణంలో డీమన్ కలిగి ఉన్న అధికారాలతో ప్రారంభం విజయవంతమైందని మాత్రమే నిరూపిస్తుంది. ఇక్కడ ముఖ్యమైన వైఫల్యాలు తర్వాత వస్తాయి: కొత్త క్లయింట్ కనెక్ట్ అవుతుంది, రద్దు జాబితా భర్తీ చేయబడుతుంది, సహాయక స్క్రిప్ట్ ఫైల్ రాయాలి. ఇవి ప్రతి ఒక్కటి అధికారాలు లేని ఖాతా చేసే కొత్త తెరవడం, దాని స్వంత అనుమతి ప్రశ్న మరియు దాని స్వంత లోప సందేశంతో. మూడు నిర్ణయాలు పని కొనసాగించే కాన్ఫిగరేషన్ను తదుపరి సంఘటనలో విఫలమయ్యే దాని నుండి వేరు చేస్తాయి.
ముందుగా లోడ్ అయినదాన్ని తర్వాత తెరిచే దాని నుండి వేరు చేయండి
డిస్క్రిప్టర్ అనేది తెరిచిన ఫైల్ వివరణపై ఉన్న హ్యాండిల్, మరియు యాక్సెస్ మోడ్ ఆ వివరణ సృష్టించినప్పుడే నిర్ణయించబడింది. తర్వాత ప్రాసెస్ వినియోగదారుని మార్చడం హ్యాండిల్ను మూసివేయదు, అందుకే root గా చదివిన కీ ఫైల్ తగ్గించిన తర్వాత కూడా పనిచేస్తుంది. మోడ్ కూడా మారదు: చదవడానికి తెరిచిన హ్యాండిల్ రాయగలిగేదిగా మారదు, మరియు రాయగలిగే హ్యాండిల్ ఖాతా మార్గంపై తన హక్కులను కోల్పోయినందుకే ఉపసంహరించబడదు. ఈ రెండు వాస్తవాలు ఈ నివేదికల్లోని ఆశ్చర్యకర ప్రవర్తనలో ఎక్కువ భాగాన్ని వివరిస్తాయి.
మిగిలిన సగం జ్ఞాపకం. డీమన్ ధృవపత్రాన్ని విశ్లేషించి, విశ్లేషించిన పదార్థాన్ని ఉంచుకుని ఫైల్ను మూసివేయగలదు; వినియోగంలో ఉండేది డేటా, తెరిచిన ఫైల్ కాదు. కాబట్టి కొనసాగుతున్న ట్రాఫిక్ డిస్క్రిప్టర్ తెరిచి ఉందని లేదా మార్గం పేరు చేరుకోగలదని నిరూపించదు. ప్రస్తుత సెషన్కు అవసరమైన పదార్థం ముందే పొందబడిందని మాత్రమే నిరూపిస్తుంది.
తర్వాత తెరవడం మరో లావాదేవీ. ఇది ప్రస్తుత ఆధారాలు, ప్రస్తుత భద్రతా సందర్భం మరియు ప్రస్తుత మౌంట్ దృశ్యం కింద నడుస్తుంది, కాబట్టి ప్రారంభంలో చదవగలిగిన మార్గం తదుపరి కనెక్షన్లో తిరస్కరించబడవచ్చు. భ్రమణం ఒక ఉచ్చును జోడిస్తుంది: అదే మార్గం పేరుపై కొత్త ఫైల్ను రాయడం ఉన్న డిస్క్రిప్టర్ను పాత వస్తువుకు జోడించి ఉంచుతుంది, కాబట్టి మళ్లీ లోడ్ చేయడం విజయవంతమైనట్లు కనిపించవచ్చు, అయితే డీమన్ ఇంకా మునుపటి కంటెంట్ను ఉపయోగిస్తోంది. భ్రమణం అమల్లోకి వచ్చిందని నమ్మే ముందు ప్రాసెస్ కలిగి ఉన్న inode ను డిస్క్లో ఉన్న దానితో పోల్చండి.
మూడు రన్టైమ్ పఠనాలను మరియు ప్రతి ఒక్కటి ఎప్పుడు జరుగుతుందో పేర్కొనండి
మూడు వనరులు సాధారణంగా ప్రారంభం తర్వాత చాలా ఆలస్యంగా తెరవబడతాయి, మరియు అవి వేర్వేరు క్షణాల్లో విఫలమవుతాయి. నిర్దిష్ట క్లయింట్ కాన్ఫిగరేషన్ ఫైల్ ఆ క్లయింట్ కనెక్ట్ అయినప్పుడు చదవబడుతుంది, కాబట్టి మిగిలినవి కొనసాగుతున్నప్పుడు ఒక వినియోగదారుకు అది విరిగిపోవచ్చు. రద్దు డేటా తోటి ధృవీకరణ సమయంలో మరియు ఫైల్ భర్తీ అయినప్పుడు మళ్లీ చూడబడుతుంది. తాత్కాలిక డైరెక్టరీని స్క్రిప్ట్ లేదా ప్లగిన్ ఏదైనా రాసినప్పుడు మాత్రమే తాకబడుతుంది.
మూడింటిలో ఏదీ ప్రారంభ మార్గానికి చెందదు, అందుకే వారాల తరబడి ఆరోగ్యంగా ఉన్న సర్వర్ తదుపరి కనెక్షన్లో విఫలమవచ్చు. ఈ వర్గం సరిదిద్దే యజమానిని కూడా పేర్కొంటుంది: మొదటి రెండు డీమన్ ఖాతా కింద కాన్ఫిగరేషన్పై చదవడం అనుమతులు, మూడవది సన్నని ప్రయోజనంతో రాయగలిగే స్థలం.
| Path reopened later | What triggers the open | First sign when it fails |
|---|---|---|
| Client configuration file | A connection for that client identity | One client rejected while others connect |
| Revocation data | Peer authentication, including after replacement | Revoked and valid peers both refused |
| Script or plugin temporary directory | A helper needs to create a file | The helper exits with a path error |
persist-key చాలామంది ఊహించినదానికంటే సన్నని ప్రశ్నకు సమాధానం ఇస్తుంది. ఇది డాక్యుమెంట్ చేయబడిన SIGUSR1 మరియు ping-restart రీసెట్లలో కీ ఫైల్ను తెరిచి ఉంచుతుంది, మరియు CCD ఫైళ్లు, రద్దు డేటా, సహాయక ఎగ్జిక్యూటబుల్స్ లేదా ప్రాసెస్ పూర్తి పునఃప్రారంభానికి ఏమీ చేయదు. అవి ఇంకా తమ స్వంత తెరవడం మార్గాలను అనుసరిస్తాయి, ఆ సమయంలో నడుస్తున్న ఏ ఖాతా కిందనైనా.
ఖాతాను మరియు అది నిజంగా కలిగి ఉన్న దృశ్యాన్ని నిర్ధారించండి
unit ఫైల్ను నమ్మడం బదులు నడుస్తున్న డీమన్ను ఏ ఖాతా ఉపయోగిస్తోందో అడగండి, తర్వాత సమాధానాన్ని unit నిర్ణయించే దానితో పోల్చండి. అసమతౌల్యమే మొదట పరిష్కరించాల్సిన విషయం, ఎందుకంటే తదుపరి ప్రతి అనుమతి తనిఖీ ప్రాసెస్ నిజంగా ఎవరో వారిగానే నడుస్తుంది. తర్వాత మార్గాన్ని ఒక్కో భాగంగా నడవండి; దాటడం ప్రతి స్థాయిలో మూల్యాంకనం చేయబడుతుంది, కాబట్టి దాటలేని డైరెక్టరీలోని చదవగలిగిన ఫైల్ చదవలేనిదిగానే ఉంటుంది. తుది ఫైల్ మోడ్ మొదటి ప్రశ్న కాదు, చివరి ప్రశ్న.
నేమ్స్పేస్లు మరియు సేవా ఇసుకపెట్టెలు యాజమాన్యం మరియు మోడ్ బిట్లు వివరించని సరిహద్దులను జోడిస్తాయి. మీ షెల్లో కనిపించే మార్గం chroot, మౌంట్ నేమ్స్పేస్ లేదా ఇంటి డైరెక్టరీలను దాచే unit లోపల ఉండకపోవచ్చు లేదా చదవడానికి మాత్రమే ఉండవచ్చు. భద్రతా మాడ్యూల్స్ మరో పొరను జోడిస్తాయి, కాబట్టి చదవగలిగినట్లు కనిపించే ఫైల్ తెరిచినప్పుడు ఇంకా తిరస్కరించబడవచ్చు.
ps -o user:12,pid,args -C openvpn
systemctl show -p User -p Group -p ProtectHome -p RootDirectory [email protected]
sudo -u openvpn namei -l /etc/openvpn/ccd/aliceనిర్వాహకుడి షెల్లో విజయవంతమైన పఠనం ఆ సమ్మేళిత షరతుల్లో ఒకటి కూడా పరీక్షించదు. తనిఖీని డీమన్ ఖాతాగా, అదే నేమ్స్పేస్ మరియు ఇసుకపెట్టెతో నడపండి, లేదా ఫలితం సర్వర్ను కాదు మీ షెల్ను వివరిస్తుందని అంగీకరించండి. మూడవ ఆదేశం ఆ పరీక్ష యొక్క చవకైన సంస్కరణ: అది ప్రతి భాగం యొక్క మోడ్ను ముద్రిస్తుంది మరియు డీమన్ ఖాతా దాటలేని మొదటి భాగంలో విఫలమవుతుంది.
రన్టైమ్ రాయడానికి దాని సొంత డైరెక్టరీ ఇవ్వండి
పఠనం జాబితాలో సగం మాత్రమే. సహాయక స్క్రిప్ట్ స్థితి ఫైల్ను సృష్టించాల్సి రావచ్చు, ప్లగిన్ తన కాన్ఫిగరేషన్ పక్కన స్థితిని రాయాల్సి రావచ్చు, మరియు ఆ రాతలు కాన్ఫిగరేషన్ చెట్టును రాయగలిగేదిగా చేయడం ద్వారా కవర్ చేయబడవు. నిర్దిష్ట డైరెక్టరీకి దాని పనికి అవసరమైన రాయడం అనుమతి ఇవ్వండి, మీరు వివరించగలిగే యజమాని మరియు మోడ్తో. చదవబడే ప్రతిదానికి చదవడం-మాత్రమే యాక్సెస్కు ప్రాధాన్యం ఇవ్వండి.
ప్రైవేట్ కీ అనుమతులను విధాన ఫైళ్ల నుండి వేరుగా ఉంచండి. రీసెట్ తర్వాత మళ్లీ చదవాల్సిన కీకి ప్రతి కనెక్షన్లో చదవబడే క్లయింట్ ఫైల్ కంటే భిన్నమైన అవసరం ఉంటుంది, మరియు రెండింటికీ ఒకే సడలింపు మోడ్ సమస్య అడిగిన దానికంటే ఎక్కువ యాక్సెస్ ఇస్తుంది. సన్నని యాజమాన్యంతో ప్రత్యేక డీమన్ ఖాతా విస్తృత సమూహం కంటే సులభంగా ఆడిట్ చేయబడుతుంది. కీ రీసెట్లను తట్టుకోవాల్సి వచ్చినప్పుడు, persist-key డైరెక్టరీని విస్తరించడం బదులు మళ్లీ చదవడాన్ని తొలగిస్తుంది.
మీరు పునరుత్పత్తి చేయగల సంఘటన నుండి నిర్ణయించండి
సజీవ సొరంగం కోడ్ ద్వారా ఒకే మార్గాన్ని నిరూపిస్తుంది. ఫైల్ అవసరమయ్యే సంఘటన మీకు ముఖ్యమైన తెరవడాన్ని కవర్ చేసే ఏకైక పరీక్ష, అది కొత్త క్లయింట్ కనెక్షన్, భర్తీ చేయబడిన రద్దు ఫైల్, అనుమతించిన మృదువైన రీసెట్ లేదా ప్రణాళికాబద్ధ పునఃప్రారంభం అయినా. సంఘటనను ఎంచుకోండి, నడపండి, చివరి కాదు మొదటి లోపాన్ని ఉంచుకోండి.
మృదువైన రీసెట్ కోసం ఒక సిగ్నల్ మరియు unit యొక్క లాగ్ కీ మళ్లీ చదవబడిందా అని చూపుతాయి. సిగ్నల్ పంపండి, తర్వాత unit రాసిన చివరి పంక్తులను చదవండి:
systemctl kill -s SIGUSR1 [email protected]
journalctl -u [email protected] -n 40 --no-pagerఅధికారాలు తగ్గినందుకే రాజీపడిన డీమన్ ఇక ఫైళ్లను మార్చలేదని ముగించవద్దు. అది ఇంకా ఏమి చేయగలదు అనేది మిగిలిన ఆధారాలు, దాని సామర్థ్యాలు, అది రాయగలిగే డైరెక్టరీలు మరియు ఇంకా కలిగి ఉన్న ఏదైనా రాయగలిగే డిస్క్రిప్టర్పై ఆధారపడి ఉంటుంది. అధికార తగ్గింపు అధికార పరిధిని సన్నగా చేస్తుంది, రన్టైమ్ తెరవడాల జాబితాయే ఎంత వరకు అని చూపుతుంది. ఆ సరిహద్దును కాన్ఫిగరేషన్ పక్కన రాయండి, తదుపరి వ్యక్తి దాన్ని మళ్లీ కనుగొనాల్సి రాకుండా.