Jinsi ya kuendesha Claude Code kwa usalama
Jifunze jinsi ya kutumia sandbox au VPS ili kuzuia madhara ya amri za shell. Eleza tofauti ya flag ya skip permissions kwa usalama wa seva yako.
Maana ya kuendesha Claude Code kwa usalama kwenye seva
Ili kuendesha Claude Code kwa usalama kwenye seva, washa maelezo ya ruhusa (permission prompts), iendeshe kama mtumiaji maalum asiye na mamlaka (unprivileged user), na uipe kazi zisizo na usimamizi mipaka halisi badala ya uaminifu: sandbox iliyojengwa ndani, container, au VPS inayoweza kutupwa ambayo haina kitu chochote cha muhimu kwako. Flag ya --dangerously-skip-permissions huondoa hatua ya kuidhinisha kati ya modeli na shell yako. Mabadiliko hayo yanaweza kuwa ya kuridhisha kwa kazi zisizo na usimamizi, lakini ni ndani tu ya mipaka inayozuia amri moja mbaya kufikia vitu vingine. Mwongozo huu unaelezea kile flag hiyo inachobadilisha, na jinsi ya kujenga mipaka hiyo kwa hatua zinazoongeza ulinzi.
Yale Claude Code yanayoweza kufanya kwenye mashine yako
Claude Code ni wakala wa uandishi wa kodi (coding agent) unaojiendesha kwenye terminal yako. Inasoma mafaili, inaandika mafaili, na inarun amri za shell kama mtumiaji aliyeyiwashe. Hii ndiyo thamani ya chombo hiki: inaweza ku-clone repository, kuhariri kodi, kuendesha majaribio (tests), kusoma makosa, na kurekebisha kodi katika mzunguko, bila wewe kuandika kila amri. Kama bado hujaikiweka kwenye seva, kuendesha Claude Code kwenye VPS kwa kutumia tmux kunaelezea ufungaji na usimamizi wa session. Ukurasa huu unaelezea nguvu unazompa mara tu inapokuwa hapo.
Hatari ni sawa na sentensi inayosomwa mara ya pili. Mchakato unaorun amri za shell kama mtumiaji wako unaweza kufanya chochote ambacho mtumiaji wako anaweza kufanya. Inaweza kusoma ~/.ssh/id_ed25519, ~/.aws/credentials, na kila faili ya .env ambayo mtumiaji wako anaweza kuifungua. Inaweza kuendesha curl na kutuma data kwenye host yoyote ambayo seva inaweza kuifikia. Inaweza kuendesha git push --force. Wakala hana nia yake mwenyewe. Hatari ni kwamba kazi inaweza kukwama, au maandishi aliyosoma wakati akifanya kazi yanaweza kuwa na maelekezo yaliyoandikwa na mtu mwingine: ukurasa wa web ulioupata, au maoni (comment) kwenye issue aliyoombwa kuirekebisha. Hali hiyo ya pili inaitwa prompt injection, na ndiyo sababu "model huwa na busara" si mpango wa usalama. Panga kwa ajili ya mzunguko mbaya, si kwa ajili ya mzunguko wa kawaida.
Mfumo wa ruhusa kwa lugha rahisi
Kawaida, Claude Code huuliza kabla ya kuchukua hatua. Kusoma mafaili ndani ya mradi hufanyika kimya kimya, lakini kuhariri faili au kuendesha amri ya shell huonyesha editi au amri kamili kwanza na kusubiri utikite "ndiyo". Unaweza kuidhinisha hatua moja, au kuidhinisha aina hiyo ya hatua kwa sehemu nyingine zote za session. Idhini hizo ni za kiwango cha session: funga CLI, na session inayofuata itaanza kwa tahadhari tena. Kwa sheria unazotaka kuzihifadhi, faili la mipangilio (settings file) huhifadhi orodha za kuruhusu (allow), kuuliza (ask), na kukataa (deny) ambazo ni za kudumu. Kwa mfano: ruhusu git status, uliza kwenye git push, kataa kusoma .env. Sheria za kukataa (deny rules) kila wakati hushinda.
Muundo huu unadhani kuwa kuna binadamu anayechunguza terminal, na kwenye laptop hiyo ni kweli. Kwenye seva, lengo mara nyingi ni kwamba hakuna anayechunguza. Unaanza kazi ndefu ndani ya tmux na kwenda kulala, na wakala anayesimama kuuliza swali saa 2 asubuhi haifanyi maendeleo hadi asubuhi. Kusimama huko kuna gharama ya pesa na muda, kwa sababu session ya Claude Code isiyotumika inapoteza warm prompt cache yake na mzunguko unaofuata unalipia kuijenga upya. Hii ndiyo sababu ya kweli watu hutumia flag ya kuruka (skip flag) kwenye seva, na tatizo linalotatuliwa ni halisi. Sehemu nyingine ya mwongozo huu ni kuhusu kutatua hilo bila kuacha kila ulinzi.
Yale --dangerously-skip-permissions inachobadilisha
claude --dangerously-skip-permissions huzima hatua ya kuidhinisha. Editi hufanyika bila kuuliza. Amri za shell zinaendeshwa bila kuuliza. Ukaguzi wa njia zilizolindwa (protected-path checks) ambao kwa kawaida hulinda maeneo nyeti pia hupitiwa. Sheria zako za kukataa (deny rules) bado zinafanya kazi, na baadhi ya vitendo vikubwa bado vitasimama kuuliza, lakini muhtasari wa kazi ni rahisi: chochote ambacho modeli imeamua kurun, kinaendeshwa.
Mambo mawili kuhusu flag hiyo ni muhimu kwenye seva. Kwanza, inazuiliwa wakati Claude Code inapoendeshwa kama root au chini ya sudo kwenye Linux na macOS, kwa sababu root bila maelezo ya ruhusa anaweza kubadilisha faili au huduma yoyote kwenye mashine. Wakala anahitaji akaunti yake mwenyewe isiyo na mamlaka anyway, na flag hiyo inasisitiza hilo. Pili, flag hiyo haibadilishi tabia ya modeli kwa njia yoyote. Inaondoa binadamu kwenye mzunguko na haibadili kitu kingine, hivyo kila kosa ambalo prompt lingekamata sasa linatekelezwa.
Hivyo hapa kuna hesabu ya kweli. Ukiruka ruhusa, swali la usalama linabadilika kutoka "je wakala atafanya kitu kibaya" kuwa "je amri moja mbaya inaweza kusababisha uharibifu kiasi gani". Unacha kujaribu kudhibiti kila uamuzi na kuanza kudhibiti eneo la uharibifu (blast radius). Kudhibiti eneo hilo ndiyo jibu, na linakuja kwa hatua.
Sandbox ya ndani ya Claude Code
Kabla ya hatua hizo, jua kuwa Claude Code sasa inakuja na sandbox ya kiwango cha OS kwa amri zinazozirun, na inaondoa sababu nyingi ambazo watu walikuwa wakitumia flag ya kuruka. Kwenye Linux inatumia bubblewrap kwa ajili ya kutenganisha mfumo wa mafaili (filesystem isolation), pamoja na socat ili kupitisha trafiki ya mtandao kupitia proxy. Ndani ya sandbox, amri inaweza kuandika tu kwenye directory ya mradi na directory ya muda ya session, na inaweza kufikia mtandao tu kupitia proxy inayokagua kila domain dhidi ya orodha ya kuruhusiwa. Mara ya kwanza amri inapotaka domain mpya, Claude Code inakuuliza.
Iwashe kwa kutumia amri ya /sandbox ndani ya session. Kwenye Ubuntu na Debian, install kwanza vifurushi viwili vinavyohitajika:
sudo apt install bubblewrap socatKwenye Ubuntu 24.04 na baadaye, sera ya AppArmor ya kawaida inazuia bubblewrap kuunda user namespaces zinazohitajika. Panel ya sandbox itakuambia ikiwa kitu kinakosekana, na nyaraka za sandboxing za Claude Code zina programu ndogo ya AppArmor inayotatua hilo.
Sandbox ina hali ya kujiruhusu (auto-allow mode): amri za sandboxed zinaendeshwa bila kuuliza, kwa sababu mipaka iliyowekwa sasa inafanya kazi ambayo prompt ilikuwa inafanya. Amri ambazo haziwezi kuendeshwa ndani ya sandbox hurudi kwenye mtiririko wa kawaida wa ruhusa, hivyo vitendo vya kipekee bado vinauliza. Kwa mifumo mingi ya seva hii ndiyo mbadala sahihi wa flag ya kuruka, kwa sababu unapata maswali machache sana na mipaka inayodhibitiwa na OS badala ya kutokuwa na kitu.
Kuwa mkweli kuhusu ukomo wake. Kwa kawaida amri ya sandboxed bado inaweza kusoma sehemu kubwa ya mfumo wa mafaili, ikiwa ni pamoja na mafaili ya siri, isipokuwa uikatae njia hizo; mpangilio wa sandbox.credentials upo kwa ajili hiyo hasa. Proxy ya mtandao hukagua majina ya domain na haikagui trafiki yenyewe, hivyo kuruhusu kwa upana kama github.com bado kuna nafasi ya kutoa data nje. Docker haifanyi kazi ndani yake. Sandbox inaongeza ulinzi kwa kiasi kikubwa. Si mipaka kamili ya kutenganisha, ndiyo maana hatua za chini bado ni muhimu.
Ngazi ya udhibiti (The containment ladder)
Hatua tatu, katika mpangilio unaoongezeka wa ulinzi. Chagua hatua ya chini kabisa inayolingana na vitu vingine vilivyo kwenye mashine.
Hatua ya 1: mtumiaji maalum asiye na mamlaka. Wakala anapata akaunti yake mwenyewe, directory yake ya nyumbani, directory yake ya mradi, na hana sudo:
sudo adduser --disabled-password --gecos "" agentMipaka ya akaunti inamweka wakala mbali na mafaili yako: funguo zako za SSH na kila mradi mwingine kwenye mashine. Pia inafanya flag ya kuruka iweze kutumika kabisa, kwa sababu flag hiyo inakataa kuendeshwa kama root. Huu ni kanuni sawa na kuendesha kila huduma kama mtumiaji asiye na mamlaka, unaotumika kwa wakala. Kile ambacho hatua ya 1 haikidhibiti: mtandao, na kitu chochote kwenye mashine ambacho kinaweza kusomwa na kila mtu.
Hatua ya 2: container. Anthropic inatoa devcontainer ya marejeleo inayorun Claude Code kama mtumiaji asiye na root, ikiwa na sheria za firewall zinazodhibiti host ambazo wakala anaweza kuzifikia, na container unayojijengea mwenyewe hufanya kazi hiyo hiyo. Mfumo wa mafaili unapunguzwa hadi kwenye volumes unazozifunga (mount), na utoaji wa data unapunguzwa hadi kile ambacho sheria za container zinaruhusu. Hii ndiyo hatua ya kati sahihi wakati seva inashughulikia huduma nyingine muhimu kwako. Ukomo wake ni kwamba container zinashiriki kernel ya host, na kufunga (mount) kimoja kwa uzembe kunaondoa mipaka; mpe container /var/run/docker.sock na inaweza kufikia host nzima.
Hatua ya 3: VPS maalum. Hatua yenye nguvu zaidi ni ya moja kwa moja: mpe wakala mashine nzima ambayo haina kitu chochote cha muhimu kwako. VPS ndogo ina gharama ya dola chache kwa mwezi. Iweke kwa kutumia mwongozo wa dakika kumi za kwanza kwenye VPS mpya, fanya snapshot ya hali safi, na mruhusu wakala afanye kazi. Hakuna kingine kinachoishi hapo. Hakuna SSH key ya kibinafsi, ni deploy key tu iliyowekwa kwa repository moja. Hakuna siri za cloud, hakuna data ya uzalishaji (production data). Wakati mzunguko unapokwenda vibaya, au unapotaka tu kuanza upya, rudisha snapshot au vibomoza na uijenge upya mashine ndani ya dakika chache. Eneo la uharibifu ni kodi tu. Hii ndiyo mipangilio ambapo --dangerously-skip-permissions haipati hofu, kwa sababu matokeo mbaya zaidi yanayowezekana ni seva iliyojengwa upya na token moja iliyofutwa.
Hatua hizo zinafuatana. Wakala aliye ndani ya sandbox, anayerun kama mtumiaji asiye na mamlaka, kwenye VPS inayoweza kutupwa, haigharimu karibu kitu cha ziada na hufanya hadithi za kushindika kuwa za kawaida. Kawaida ndiyo lengo.
Linda siri (credentials)
Sheria inayolipa kwa kila kitu kingine: mtumiaji wa wakala lazima asiweze kusoma siri zinazomilikiwa na kitu kingine chochote.
Mpe wakala API key na usimpe mtu mwingine yoyote. Iweke kwenye faili linalomilikiwa na mtumiaji wa wakala kwa mode 600, na uipakue wakati shell inapoanza:
install -m 600 /dev/null /home/agent/claude.env
echo 'export ANTHROPIC_API_KEY=your-key-here' >> /home/agent/claude.env
echo 'source ~/claude.env' >> /home/agent/.bashrcKisha funga upande mwingine. Kwenye Debian na Ubuntu, directory za nyumbani mara nyingi hutengenezwa ziweze kusomwa na kila mtumiaji kwenye mashine, hivyo imarisha yako: chmod 750 /home/youruser. Kagua kwa ls -ld /home/* na urekebishe chochote ambacho akaunti ya wakala inaweza kukilista.
Weka mipaka kwa kila token. GitHub token yenye ukomo mdogo iliyowekwa kwenye repository moja, au deploy key ya kila repository, inamaanisha siri iliyovuja inapoteza mradi mmoja na si akaunti yako nzima. Ukitumia sandbox, ongeza mipangilio yake ya siri ili ~/.ssh na ~/.aws zikatiwe marufuku hata kwa kusoma. Na uweke siri za uzalishaji (production credentials) mbali na mashine kabisa, kwa sababu wakala hawezi kuvuja siri ambayo haikuwepo hapo.
Git ni mtandao wa usalama
Kila mabadiliko ambayo wakala anafanya yanapaswa kuweza kuhakikiwa na kurudishwa nyuma, na git inakupa yote mawili bure ikiwa wakala anafanya kazi kwenye branch:
git switch -c agent/refactor-authKagua mzunguko baada ya hapo kwa git diff main...agent/refactor-auth, ungalisha yaliyo mazuri, na futa branch ikiwa mzunguko haukuleta matokeo. Linda branch kuu (main branch) upande wa forge, ili token ya wakala isiweze ku-push kwake na isiweze kufanya force-push popote. Historia ya commit pia ni log ya ukaguzi ya kile kilichotokea wakati ulipokuwa umelala, ambayo ina thamani zaidi kuliko lolote la terminal scrollback.
Mtandao ni sehemu ya eneo la uharibifu
Wakala anaweza kuendesha curl. Sentensi hiyo ndiyo tatizo lote la utoaji wa data (egress): chochote ambacho wakala anaweza kusoma, anaweza pia kukituma mahali fulani, na wakala aliyeingizwa na prompt (prompt-injected) anaweza kufanya hivyo. Mtumiaji wa kawaida asiye na mamlaka hauzuiliwi kabisa, kwa sababu mtumiaji yeyote anaweza kufikia chochote ambacho seva inaweza kufikia. Sandbox inazuia kupitia domain kupitia proxy yake. Container inaweza kuzuia kupitia sheria zake za firewall. VPS maalum inazuia kile kinachoweza kuvuja kwanza kabisa, ambayo ndiyo jibu imara zaidi kati ya tatu.
Usijaribu kutatua utoaji wa data kwa ufw pekee. ufw inaruhusu trafiki yote inayotoka kwa kawaida, na kuandika sheria za kutokea ambazo bado zinaruhusu apt, npm, git, na Claude API ni kazi ngumu inayovunja mambo kimya kimya. Badala yake chagua mipaka katika kiwango cha sandbox, container, au mashine, ambapo orodha ya kuruhusu domain au mashine tupu hufanya kazi hiyo hiyo kwa usafi.
Kama unajenga wakala wako mwenyewe dhidi ya API badala ya kuendesha Claude Code, mawazo yaleyo yanatumika bila kubadilika. Kujenga wakala wa AI kwa kutumia Claude kwenye VPS inaelezea njia hiyo, na wakala wake anastahili mtumiaji maalum, token zenye ukomo, na mashine inayoweza kutupwa.
Imarisha mashine kwanza
Chochote utakachochagua, mashine yenyewe bado inahitaji misingi kabla ya wakala kuingia: funguo za SSH pekee, bila kuingia kama root, firewall inayokataa kila kitu kwa kawaida, na sasisho za usalama za kiotomatiki. Tengeneza orodha yako ya ukaguzi hapa na uifanyie kazi mara moja:
FAQ
Je --dangerously-skip-permissions ni salama kutumia kwenye seva?
Hapana pekee yake. Flag hiyo huondoa kila prompt ya kuidhinisha, hivyo amri mbaya ya kwanza inafanya kazi mara tu modeli inapoitoa. Inakuwa mabadiliko yanayokubalika wakati eneo la uharibifu limezuiliwa: mtumiaji maalum asiye na mamlaka angalau, na kwa kazi zisizo na usimamizi container au VPS inayoweza kutupwa ambayo ina mradi mmoja na token moja iliyowekwa ukomo. Kamwe usitumie kwenye mashine inayoshikilia siri za uzalishaji au data ambayo huwezi kuipoteza.
Je Claude Code ina sandbox?
Ndiyo. Claude Code inakuja na sandbox iliyojengwa ndani kwa ajili ya amri za shell, inayofunguliwa kwa kutumia amri ya /sandbox. Inatumia bubblewrap kwenye Linux na Seatbelt kwenye macOS, inazuia uandishi kwenye directory ya mradi, na inapitisha ufikiaji wa mtandao kupitia proxy inayoruhusu tu domain zilizoidhinishwa. Hali yake ya kujiruhusu (auto-allow mode) inaendesha amri za sandboxed bila kuuliza, hivyo inapunguza usumbufu kama flag ya kuruka huku ikibaki na mipaka inayodhibitiwa na OS. Si mipaka kamili ya kutenganisha, hivyo iunganishe na mtumiaji maalum au mashine maalum kwa mzunguko usio na usimamizi.
Kwa nini flag ya kuruka inakataa kuendeshwa kama root?
Kwa sababu root bila maelezo ya ruhusa anaweza kubadilisha faili yoyote na huduma yoyote kwenye mfumo, Claude Code inazuia --dangerously-skip-permissions wakati inapoendeshwa kama root au chini ya sudo kwenye Linux na macOS. Suluhisho si kupigana ukaguzi huo. Tengeneza mtumiaji asiye na mamlaka kwa ajili ya wakala na uendeshe hapo; mipaka hiyo ya akaunti ndiyo ngazi ya kwanza na ya bei nafuu ya udhibiti.
Je Claude Code inaweza kusoma funguo zangu za SSH na mafaili ya .env?
Inaweza kusoma chochote ambacho mtumiaji anayerunisha anaweza kusoma, na hata sera ya kawaida ya sandbox inaruhusu kusoma njia za siri hadi usizikatae. Kwa hivyo endesha wakala kama mtumiaji wake mwenyewe, weka directory yako ya nyumbani katika mode 750 au imara zaidi, kataa njia za siri katika mipangilio ya sandbox, na uweke siri za uzalishaji mbali na mashine kabisa. Siri ambayo mashine haikuwahi kuishikilia haiwezi kusomwa au kuvuja.
Ni njia gani salama zaidi ya kuendesha Claude Code bila usimamizi?
VPS maalum na ya bei rahisi inayotumika tu kwa kazi za wakala: iliyoimarishwa kwa dakika kumi, iliyofanyiwa snapshot ikiwa safi, inayerun Claude Code chini ya mtumiaji asiye na mamlaka akiwa amewasha sandbox, faili la mode-600 linaloshikilia API key, deploy key ya kila repository, na kazi zote kwenye branch unazozikagua kabla ya kuunganisha (merge). Mzunguko ukikwenda vibaya, unaondoa token moja na unarudisha snapshot, na hakuna kingine unachomiliki kinachoathirika.