What if a script could silently change or steal your files? Learn how Deno stops that with simple permission flags.
Why File system permissions (--allow-read, --allow-write) in Deno? - Purpose & Use Cases
Imagine running a script that reads or writes files on your computer without any restrictions. You might accidentally overwrite important documents or expose sensitive data.
Without controlled permissions, scripts can access any file, leading to security risks and accidental data loss. Manually checking every file access is tedious and unreliable.
Deno uses explicit file system permissions like --allow-read and --allow-write to let you safely control which files a script can access, preventing unwanted changes or leaks.
deno run --allow-all script.ts // script can read/write any file without restriction
deno run --allow-read=./data --allow-write=./output script.ts // script only reads from ./data and writes to ./output
This lets you run scripts confidently, knowing they only access files you explicitly allow, improving security and control.
When running a tool that processes user data files, you can restrict it to only read the input folder and write results to a specific output folder, avoiding accidental file damage elsewhere.
Manual file access is risky and hard to control.
Deno's --allow-read and --allow-write flags limit file access safely.
This improves security and prevents accidental data loss.
Practice
--allow-read flag do when running a Deno program?Solution
Step 1: Understand the purpose of
This flag grants permission to read files or folders.--allow-readStep 2: Compare with other flags
--allow-writeis for writing, not reading. Network access is unrelated.Final Answer:
Allows the program to read files or folders specified. -> Option AQuick Check:
--allow-read= read permission [OK]
- Confusing read permission with write permission
- Thinking it controls network access
- Assuming it grants all permissions
app.ts with permission to write files?Solution
Step 1: Recall Deno command syntax
The flags come immediately afterdeno runand before the script name.Step 2: Identify correct flag placement
deno run --allow-write app.tsis correct; options A and C have wrong order, D uses wrong flag.Final Answer:
deno run --allow-write app.ts -> Option DQuick Check:
Flags go afterdeno run[OK]
- Placing flags after the script name
- Mixing up --allow-read and --allow-write
- Putting flags before 'run'
readfile.ts that reads data.txt and prints its content. What happens if you run deno run readfile.ts without any flags?Solution
Step 1: Understand default permissions
Without--allow-read, Deno denies file reading for safety.Step 2: Predict script behavior
Trying to readdata.txtwithout permission causes a runtime error.Final Answer:
The script throws a permission error. -> Option CQuick Check:
No--allow-readmeans no file reading [OK]
- Assuming Deno allows reading by default
- Thinking the file is created automatically
- Believing the script prints empty content silently
log.txt. Running deno run --allow-read write.ts causes a permission error when writing. What is the fix?Solution
Step 1: Identify the permission needed
Writing files requires--allow-write, not just--allow-read.Step 2: Apply correct flag
Run the script with--allow-writeto allow file writing.Final Answer:
Add--allow-writeflag when running the script. -> Option AQuick Check:
Write permission needs--allow-write[OK]
- Using only --allow-read for writing
- Removing flags thinking it grants all permissions
- Confusing network permission with file permission
input.txt and writes to output.txt. Which command correctly grants the minimum permissions needed?Solution
Step 1: Understand fine-grained permissions
Using--allow-read=pathand--allow-write=pathlimits access to specific files.Step 2: Match permissions to files
Read permission forinput.txtand write permission foroutput.txtis needed.Step 3: Check options
deno run --allow-read=./input.txt --allow-write=./output.txt script.ts correctly assigns read to input and write to output. deno run --allow-read --allow-write script.ts grants full access, which is more than needed. deno run --allow-write=./input.txt --allow-read=./output.txt script.ts swaps permissions. deno run --allow-net script.ts is unrelated.Final Answer:
deno run --allow-read=./input.txt --allow-write=./output.txt script.ts -> Option BQuick Check:
Grant only needed file permissions [OK]
- Granting full read/write when only specific files needed
- Swapping read and write paths
- Using unrelated flags like --allow-net
Ready to prove it?
Pass the test and this pattern moves unknown
