<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Elena</title>
    <description>The latest articles on DEV Community by Elena (@encryptedscenes).</description>
    <link>https://dev.to/encryptedscenes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3948875%2F1cbe1ba9-c8b2-4dcf-acdd-79fd6c0248e1.png</url>
      <title>DEV Community: Elena</title>
      <link>https://dev.to/encryptedscenes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/encryptedscenes"/>
    <language>en</language>
    <item>
      <title>A little-known Linux feature - Process Substitution</title>
      <dc:creator>Elena</dc:creator>
      <pubDate>Wed, 16 Sep 2026 13:55:31 +0000</pubDate>
      <link>https://dev.to/encryptedscenes/a-little-known-linux-feature-process-substitution-3b97</link>
      <guid>https://dev.to/encryptedscenes/a-little-known-linux-feature-process-substitution-3b97</guid>
      <description>&lt;p&gt;The first time I ever entered a Linux command was when I was doing The Odin Project, it was confusing to picture how to do actions you do with a GUI in a blank window you hope that somehow starts to enter commands on its own&lt;/p&gt;

&lt;p&gt;After a bit of time of me staring at that cursor and it staring back at me I learned quite a few commands. File system navigation, searching for file permissions, etc. Thought I knew it all but I, in fact, didn't&lt;/p&gt;

&lt;p&gt;So what other commands and topics was I missing?&lt;/p&gt;

&lt;p&gt;Well too many, maybe still too many actually. I wanted to write about at least one topic about Linux so I chose &lt;strong&gt;Process Substitution&lt;/strong&gt; since for some reasons so very few people mention it&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;So, what's that?&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;First of all it's called like this because you are substituting a normal file name with the output of a process (a command) that gets put in a temporary file&lt;/p&gt;

&lt;p&gt;I think the best way to explain it is actually through an example (a very useless one also does the job)&lt;br&gt;
Let's say you want to do this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo &lt;/span&gt;hello &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; file1
&lt;span class="nb"&gt;echo &lt;/span&gt;world &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; file2
&lt;span class="nb"&gt;cat &lt;/span&gt;file1 file2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I redirect "hello" to the first file and "world" to the second one, then I read the output of both:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hello
world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pretty straightforward, right?&lt;br&gt;
Now I'll tell you that you can do the same thing with just one line&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;echo &lt;/span&gt;hello&lt;span class="o"&gt;)&lt;/span&gt; &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;echo &lt;/span&gt;world&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Well, I'm still redirecting the output &lt;em&gt;"somewhere"&lt;/em&gt; before reading them with cat, just not a normal file. They get redirected to something called a "pipe" which you can imagine like a virtual file that doesn't get saved and gets destroyed the moment the process ends. These "files" (e.g. /dev/fd/63) hold the output and pass them to cat which does its simple and repetitive job&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A feature that lets you treat a command (usually its output) as a temporary file to give to another (main) command&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;is the way I like to think about it. Other definitions confuse me&lt;/p&gt;

&lt;p&gt;The post could end here BUT I'd like to go a bit deeper and I'd like to make some other (more difficult and maybe useful) examples&lt;/p&gt;

&lt;h2&gt;
  
  
  Input Substitution &amp;amp; Output Substitution
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&amp;lt;(...) this is what we've used in the example, takes the output of a file, puts it into a temporary file and feeds it to the main command&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;gt;(...) this does the opposite, the output of the main command goes into this. I'll make an example&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Output substitution
&lt;/h2&gt;

&lt;p&gt;Let's say we have three files that we'll call main_output, copy1 and copy2 (since I'm very creative with names). Main output is a file with lines and some of them begin with either "First file" or "Second file". Our goal is to send lines that begin with (or contain) "First file" to the file "copy1" and the lines that begin with (or contain) "Second file" to the file "copy2"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;main_output &lt;span class="o"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"First file"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; copy1&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"Second file"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; copy2&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As easy as that. No I'm kidding, this is wrong. Don't do that. Cat doesn't even know what to do if you tell it to write something&lt;/p&gt;

&lt;h3&gt;
  
  
  tee - correction of the previous example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;main_output | &lt;span class="nb"&gt;tee&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"First file"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; copy1&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"Second file"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; copy2&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;"Tee intercepts the pipe stream and saves a copy of the data"&lt;/em&gt;&lt;br&gt;
This is what I've written in my notes (probably copied somewhere). Just a fancy way to say it splits the stream and gives data to both&lt;/p&gt;
&lt;h2&gt;
  
  
  Split-piping
&lt;/h2&gt;

&lt;p&gt;Now... let's say that you want to send the output and errors of a script to two different scripts&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./script &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;(&lt;/span&gt;bash output_script&lt;span class="o"&gt;)&lt;/span&gt; 2&amp;gt; &lt;span class="o"&gt;&amp;gt;(&lt;/span&gt;bash error_script&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&amp;gt; (or 1&amp;gt;) redirects stdout to the "output_script"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2 &amp;gt; redirects stderr to the "error_script"&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;I think that's all, and how they say it "use it or flex it", or maybe it wasn't like this, whatever.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>bash</category>
      <category>shell</category>
      <category>cli</category>
    </item>
    <item>
      <title>Windows isn't easier than Linux - Windows Permissions</title>
      <dc:creator>Elena</dc:creator>
      <pubDate>Thu, 27 Aug 2026 10:11:34 +0000</pubDate>
      <link>https://dev.to/encryptedscenes/windows-isnt-easier-than-linux-windows-permissions-31ob</link>
      <guid>https://dev.to/encryptedscenes/windows-isnt-easier-than-linux-windows-permissions-31ob</guid>
      <description>&lt;p&gt;I always heard people say that Linux is harder than Windows. Sure, but only if we're talking about everyday use.&lt;/p&gt;

&lt;p&gt;I've finished the Linux fundamentals module on HackTheBox and was about to start "Windows Fundamentals" thinking "it's Windows, how hard could it possibly be? What are they going to show me? The GUI?"&lt;/p&gt;

&lt;p&gt;What was about to come next caught me off guard: Windows is straight up confusing, and if you ask me what I think to be the most difficult concept to grasp I'd probably say "Windows Permissions"&lt;/p&gt;

&lt;p&gt;Here I'll talk about NTFS permissions, not that service permissions are much better but I don't want to make the post confusing by talking about everything&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparison - Linux Permissions
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;ls -l&lt;/code&gt; The output of this command would be something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-rwxr-xr--&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Well, that is pretty straightforward, don't you think? For the ones who don't yet know what does that mean or those who need a refresher let's break it down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;-&lt;/code&gt; indicates that the resource is a file&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;rwx&lt;/code&gt; the first 3 characters are associated to the user who owns the file, "rwx" literally stands for read, write and execute. In this case the user has every permission&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;r-x&lt;/code&gt; are for the users who are in the group(s) of the owner&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;r--&lt;/code&gt; other users have only the permission to read&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, about Windows, a tool used for permissions is icacls, an example:&lt;br&gt;
Command: &lt;code&gt;icacls c:\Users&lt;/code&gt;&lt;br&gt;
Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;c:\Users NT AUTHORITY\SYSTEM:(OI)(CI)(F)
         BUILTIN\Administrators:(OI)(CI)(F)
         BUILTIN\Users:(RX)
         BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
         Everyone:(RX)
         Everyone:(OI)(CI)(IO)(GR,GE)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Too many random letters and...duplicates? Why is (almost) everything shown twice? And... what is this?&lt;/p&gt;

&lt;h2&gt;
  
  
  ACL
&lt;/h2&gt;

&lt;p&gt;Well, answering the last question first (I know you're usually supposed to start from the first) every line is an ACE (Access Control Entry), part of an ACL (Access Control List). Before thinking "oh, the names are pretty straightforward, I got it", let me tell you that there are two types of ACL&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;DACL (Discretionary Access Control List): the one we are looking at now: basically tells &lt;strong&gt;who&lt;/strong&gt; can access a resource and who can't, &lt;strong&gt;which&lt;/strong&gt; actions they can perform and &lt;strong&gt;how&lt;/strong&gt; those permissions are propagated to subfolders (we're just missing the "why" but for that ask the admin)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SACL (System Access Control List): logs access attempts. We don't care about this now&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  (Basic) Permissions
&lt;/h2&gt;

&lt;p&gt;Before you may ask yourself (or maybe you already did) whether there are also advanced permissions, I hate to break the news but yes, there are. We will talk about that later though.&lt;/p&gt;

&lt;p&gt;There are 6 types of Windows basic permissions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Full Access (F)&lt;/li&gt;
&lt;li&gt;Read-Only Access (R)&lt;/li&gt;
&lt;li&gt;Write-Only Access (W)&lt;/li&gt;
&lt;li&gt;Read and Execute Access (RX)&lt;/li&gt;
&lt;li&gt;Modify Access (M)&lt;/li&gt;
&lt;li&gt;Delete Access (D)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And...7? I mean there's only No Access (N) left which isn't really a permission&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A little plot twist: if you look at the Windows GUI you won't find "delete" in the basic permissions but you'll find "list folder contents" (not listed here). With icacls things are different: delete is a permission of its own, and list folder contents is part of RX&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, let's consider a part of our output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
c:\Users ...
BUILTIN\Users:(RX)
BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;BUILTIN\Users often groups users with no special permissions that can perform basic tasks&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The first line tells us the permissions, while the second line isn't about Windows changing its mind but tells us the &lt;strong&gt;inheritance&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Inheritance
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;What is inheritance?&lt;/em&gt; it's simply the way permissions are passed to subfolders. Which children folders receive automatically what from their parent? Do they receive some permissions at all from them?&lt;br&gt;
In our case we can see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OI -&amp;gt; Object-Inherit, only files inherit the permissions&lt;/li&gt;
&lt;li&gt;CI -&amp;gt; Container-Inherit, folders inherit the permissions&lt;/li&gt;
&lt;li&gt;IO -&amp;gt; specifies which permissions the data / subfolders should get from the parent but the parent is excluded. The specified permissions, in this case are GR, GE which are advanced permissions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Points of confusion
&lt;/h3&gt;

&lt;p&gt;A few things that quite confused me...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Files inherit permissions, containers inherit permissions and then...Inherit only? so are they inheriting or not?&lt;/em&gt;&lt;br&gt;
The answer is that files and folders are just inheriting the permissions we choose&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;The duplicates we've seen before (e.g. for BUILTIN\Users) aren't everywhere, some users only have one line, are they special or what?&lt;/em&gt; Kind of. They have the same access to subfolders as the main folder&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'll admit I understood this while writing this post, I guess you never stop learning (or never actually start understanding)&lt;/p&gt;

&lt;h2&gt;
  
  
  Special (advanced) permissions
&lt;/h2&gt;

&lt;p&gt;Imagine that you have the permission to work but it's divided into "permission to go to your workplace and work from a PC there" and "permission to do the tasks you're supposed to do". This doesn't make sense at first. Let's say that your contract states that you can work remote-only: now you can't just go there and demand a PC!&lt;/p&gt;

&lt;p&gt;This is what Windows special permissions are about, they're "special" in the sense that they are granular. Every basic permission is made up of multiple  special permissions but when I first learned this they had just given me two separate lists so I found it hard to find a correlation between the two things, so I'll group them here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The basic read permission is made up of:

&lt;ul&gt;
&lt;li&gt;List folder / Read data&lt;/li&gt;
&lt;li&gt;Read attributes&lt;/li&gt;
&lt;li&gt;Read extended attributes&lt;/li&gt;
&lt;li&gt;Read permissions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The basic write permission is made up of:

&lt;ul&gt;
&lt;li&gt;Create files / Write data&lt;/li&gt;
&lt;li&gt;Create folders / append data&lt;/li&gt;
&lt;li&gt;Write attributes&lt;/li&gt;
&lt;li&gt;Write extended attributes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;List folder contents and Read &amp;amp; Execute are made up of:

&lt;ul&gt;
&lt;li&gt;All read permissions&lt;/li&gt;
&lt;li&gt;Traverse folder / execute file special permission&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Modify (and Delete):

&lt;ul&gt;
&lt;li&gt;All read permissions&lt;/li&gt;
&lt;li&gt;All write permissions + delete (resources and attributes)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Full control: all 13 permissions (all of the above + take ownership and change ownership)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Windows is easy until you start learning how it works under the hood. On Linux "everything is a file", on Windows "everything is a mess"&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>learning</category>
      <category>linux</category>
      <category>security</category>
    </item>
    <item>
      <title>The beginning of my journey</title>
      <dc:creator>Elena</dc:creator>
      <pubDate>Sat, 08 Aug 2026 10:36:13 +0000</pubDate>
      <link>https://dev.to/encryptedscenes/the-beginning-of-my-journey-2gl8</link>
      <guid>https://dev.to/encryptedscenes/the-beginning-of-my-journey-2gl8</guid>
      <description>&lt;p&gt;I was interested in cybersecurity (mainly offensive) for a long time but I had no idea where to start. I remember finding a few apps on my phone and them being so superficial that I temporarily changed my mind: "is cybersecurity really just that?"&lt;/p&gt;

&lt;p&gt;For a while I didn't think about it, I started learning web dev and then game dev (which I still like) but my mind sometimes went to "how do devs make anti-piracy games" and I loved when The Odin Project mentioned the difference between "textContent" and "innerHTML", touching XSS&lt;/p&gt;

&lt;p&gt;One day I decided to search on my computer "how to learn how to hack" (I meant legally of course but I didn't even know it was called "ethical hacking") and TryHackMe's page showed up, I clicked on the first link I saw and registered&lt;/p&gt;

&lt;p&gt;I tried the first room, I thought hacking was about typing fast, catching something at the right moment and trying to read a bunch of green text appearing on the terminal (very movie-like) but from that room I realized that it was more intuitive than this: it seemed like it was more about discovering what existed on the target to use to your advantage&lt;/p&gt;

&lt;p&gt;From that day, more than a year passed, I've completed the legacy path of TryHackMe, Cybersecurity 101 and Jr Pentester (legacy), I'm still no expert, in fact I'm still a beginner, I'm learning the fundamentals (again) on HackTheBox and feel like I'm moving backwards instead of forward even though in reality I'm just developing stronger fundamentals to build on&lt;/p&gt;

&lt;p&gt;I'm not sure where this journey will take me, and I'm still exploring every path I can. Cybersecurity is what has caught my interest the most at the moment but I also love game development and I'm fascinated by the use of AI in the medical field / bioinformatics&lt;/p&gt;

&lt;p&gt;Here, I would like to explain concepts I've found either confusing or interesting (or both actually). I'm not a teacher nor a professional but I'll try to explain topics I like in a way I would've liked somebody to explain to me&lt;br&gt;
Sometimes I'll just share opinions, thoughts or experiences&lt;/p&gt;

&lt;p&gt;I'd love to read comments, feedback or some reactions, so feel free to share your opinion or the summary of your own journey below. Did you find your passion right away?&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>learning</category>
      <category>cybersecurity</category>
      <category>writing</category>
    </item>
  </channel>
</rss>
