Skip to main content

Unable to Edit Files in WSL Ubuntu – Permission Denied Fix

Issue Overview

While working on a Python project in WSL (Windows Subsystem for Linux) with Ubuntu, I faced an issue where I couldn't save changes to a file (app.py) using Notepad++ or even IDLE.

Subsystem path: \\wsl.localhost\Ubuntu\home\atif\tts-app 

Error in Notepad++

When trying to save, the following message appeared:

Save failed
Please check whether the network where the file is located is connected.

Error in IDLE

In IDLE, the error was clearer:

Permission denied

This suggested that it might be a file ownership or permission issue.

Investigation and Debugging

To debug the issue, I opened the WSL terminal and navigated to the project folder:

cd ~/tts-app
ls -l

Here’s the output:

total 48
drwxr-xr-x 2 atif atif  4096 Jul  9 16:06 __pycache__
-rw-r--r-- 1 root root  4210 Jul  9 16:04 app.py
-rw-r--r-- 1 atif atif  4210 Jul  9 16:04 app.py.bak
drwxr-xr-x 2 root root  4096 Jul  9 16:03 backupCode
drwxr-xr-x 2 atif atif 12288 Jul 10 12:11 logs
drwxr-xr-x 3 atif atif  4096 Jul  9 15:42 static
drwxr-xr-x 2 root root  4096 Jul  9 15:41 templates
drwxr-xr-x 6 atif atif  4096 Jul  9 14:29 venv

As you can see, app.py and the backupCode directory were owned by root, not by the current user atif. This is why the file couldn’t be modified from regular editors like Notepad++ or IDLE — because they don’t run with root privileges.

Solution: Change File Ownership

To fix this, I changed the ownership of all files and folders inside the current directory to my user (atif) using the chown command:

sudo chown -R atif:atif .

After running this command, I verified again with ls -l:

total 56
drwxr-xr-x 2 atif atif  4096 Jul  9 16:06 __pycache__
-rw-r--r-- 1 atif atif  4210 Jul  9 16:04 app.py
-rw-r--r-- 1 atif atif  4211 Jul 10 13:37 app.py.bak
-rw-r--r-- 1 atif atif  4210 Jul  9 16:04 app.py.bak.bak
drwxr-xr-x 2 atif atif  4096 Jul  9 16:03 backupCode
drwxr-xr-x 2 atif atif 12288 Jul 10 12:11 logs
drwxr-xr-x 3 atif atif  4096 Jul  9 15:42 static
drwxr-xr-x 2 atif atif  4096 Jul  9 15:41 templates
drwxr-xr-x 6 atif atif  4096 Jul  9 14:29 venv

Now all files are correctly owned by atif, and I was finally able to save them through both Notepad++ and IDLE without any errors.

wsl folder files not editable

Final Notes

  • This issue typically occurs when files or directories are created or copied using sudo or another tool that assigns ownership to root.

  • Always check file permissions using ls -l when you encounter saving or editing issues in WSL.

  • Use chown carefully — make sure you understand which directory you're applying it to.


 

Comments

Popular posts from this blog

How to set Profile Attribute in Siebel Workflow

For setting the Profile Attribute in Siebel Workflow, follow below steps: Add Business Service box in workflow. Open Business Service properties. Set  SessionAccessService in Business Service Name. Set  SetProfileAttr in Method Name. Then click on Business Service and set Input Arguments as below: Against Name argument you will add your profile attribute name and against Value argument you will add value for the new profile attribute, it could be from Process Property or Literal.

How to call Popup Applet through Server Script in Siebel

Background: Based on the requirements you need to show data or reports on a popup applet. You can invoke popup applet using workflow (below business service will be used in business service step), applet server script or browser script and using vanilla method and setting field user properties. Procedure: Below is the script for calling popup applet through server script: if (MethodName == "MethodName") { var oServiceAF = TheApplication().GetService("SLM Save List Service"); var inputPropAF = TheApplication().NewPropertySet(); var outputPropAF = TheApplication().NewPropertySet(); inputPropAF.SetProperty("Applet Name","ABC Popup Applet"); inputPropAF.SetProperty("Applet Mode","6"); inputPropAF.SetProperty("Applet Height", "700"); inputPropAF.SetProperty("Applet Width", "700"); oServiceAF.InvokeMethod("LoadPopupApplet", inputPropAF, outputPropAF) return (CancelOperati...

How to create and publish Inbound Web Service in Siebel based on Workflow

Inbound Web Services: The Inbound Web Service allows an external system to call a Siebel published Web Service. You can publish a business service or a business process as a Web Service and generate a Web Service Definition Language (WSDL) file that an external system can import. The Inbound Web Services can only be published from Siebel C using SOAP-RPC binding. Source: Oracle Docs What Is The Difference Between Web Services and APIs? An API is an interface that allows you to build on the data and functionality of another application, while a web service is a network-based resource that fulfills a specific task. Yes, there’s overlap between the two: all web services are APIs, but not all APIs are web services. Both web services and APIs are — at their core — very useful and very much used today. However, it’s the web services associated with SOAP and/or Service Oriented Architecture which are falling out of favor. Source: NordicApis Process: Prepare the workflow which will serve as Si...