# feed_item_data

id: 645b4a9369df0b089125f5df
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More
description: There is a new distro in the town, again. Learn about it in this edition of FOSS Weekly newsletter.
link: https://itsfoss.com/newsletter/foss-weekly-23-19/
categories: Newsletter
content:
<img src="https://itsfoss.com/content/images/2023/05/foss-weekly-23-19.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><p>A few readers have notified me that they end up with Cloudflare errors while visiting It's FOSS webpages on Google Chrome. I have investigated the issue and cleaned up the cache. Nothing conclusive was found. </p><p>So, I doubled up the CPU strength to 8-core. This should guard against a sudden influx of traffic which increases the CPU load and prevents the site from being inaccessible momentarily.</p><p>However, if you still encounter this issue, please let me know. </p><p><strong>💬 Let's see what else you have in this edition of FOSS Weekly:</strong></p><ul><li>First look at Zinc, an Ubuntu-based distro</li><li>Continuation of the Rust series and beautiful font suggestions</li><li>More Linux news, videos, and of course, memes!</li></ul><hr><h2 id="%F0%9F%93%B0-linux-news">📰 Linux News</h2><p>Open source project management tool Mattermost has <a href="https://news.itsfoss.com/mattermost-ai/?ref=itsfoss.com">revealed its plans to power AI-enhanced collaboration</a>.</p><p>GNOME Files is set to <a href="https://news.itsfoss.com/gnome-column-chooser/?ref=itsfoss.com">drop the old-school column chooser</a> and replace it with a modern rework.</p><p>It seems that the <a href="https://news.itsfoss.com/roblox-linux-end/?ref=itsfoss.com">time of Roblox has come to an abrupt end on Linux</a>, it was already never officially supported, but now even the workarounds won't work.</p><hr><h2 id="%F0%9F%A7%A0-what-we%E2%80%99re-thinking-about">🧠 What we’re thinking about</h2><p>Some developers are not happy that people upload their open source projects on GitHub, which is then used to train Microsoft's GitHub Copilot AI.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://nogithub.codeberg.page/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Please don’t upload my code on GitHub</div><div class="kg-bookmark-description">This is a call to open source developers to not upload the work of others on GitHub.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://nogithub.codeberg.page/favicon.svg" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">No GitHub</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://nogithub.codeberg.page/icon-color.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><hr><h2 id="%F0%9F%9B%8D%EF%B8%8F-interesting-offer">🛍️ Interesting offer</h2><p>The folks over at No Starch Press have yet another useful bundle, this time for learning Python programming. Be sure to check it out; a portion of the proceeds go to the <a href="https://www.python.org/psf-landing/?ref=itsfoss.com">Python Software Foundation</a>.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.humblebundle.com/books/python-no-starch-books?partner=itsfoss&ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Humble Tech Book Bundle: Python by No Starch</div><div class="kg-bookmark-description">We’ve teamed up with No Starch Press for our newest bundle. Get books like Python for Kids and Beyond the Basic Stuff with Python. Plus, pay what you want & support charity!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cdn.humblebundle.com/static/hashed/03df0490a53d595fd930f9fff52038366d60a05d.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">Humble Bundle</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://hb.imgix.net/75e1c3e16619e8c9f5ef6ddb93f3bbc0c3b098e1.png?auto=compress,format&h=630&w=1200&s=d4c213287d9081c0d63c17f1eef0f4a8" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><hr><h2 id="%F0%9F%A7%AE-tutorials">🧮 Tutorials</h2><p>The Rust Basics Series has nearly reached its end. This is the penultimate chapter of the series.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/rust-loops/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Rust Basics Series #7: Using Loops in Rust</div><div class="kg-bookmark-description">Loops are another way of handling control flow of your programs. Learn about for, while and ‘loop’ loops in Rust.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Pratham Patel</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/loops-in-rust-programming-language.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><p>Explore some alternative fonts and customize your terminal.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/fonts-linux-terminal/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">10 Best Fonts for Linux Terminal</div><div class="kg-bookmark-description">Get the best font for your terminal to improve the look, and readability, and have a fun experience with the terminal.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/best-fonts-for-terminal.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><p>This tool may interest you if you have a simple need for trimming and merging video clips.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/vidcutter-video-editor-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Easily Trim Videos With VidCutter in Linux</div><div class="kg-bookmark-description">Learn how to install and use VidCutter, a simple open source tool for trimming and merging videos in Linux.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Abhishek Prakash</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/vidcutter-video-trimmer-linux-app.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><h2 id="%F0%9F%93%B9-what-we-are-watching">📹 What we are watching</h2><p>Of course, it is.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/499jqHWZ-Ts?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="Is Linux Mint BETTER Than Windows?"></iframe></figure><hr><h2 id="%E2%9C%A8-project-highlights">✨ Project highlights</h2><p>We also looked at a new Ubuntu-based distro that doesn't offer Snap out-of-the-box! Yes, that is a feature these days.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/zinc-distro/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Zinc: A New Ubuntu-Based Distro With Nemo File Manager and XFCE Desktop</div><div class="kg-bookmark-description">An Ubuntu-based distro with some default twists that you might like. What do you think?</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It's FOSS News</span><span class="kg-bookmark-publisher">Sourav Rudra</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/05/zinc-first-look.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><p>Want an ad-free music player for your smartphone? Well, then, this can be your daily driver!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/blackhole-music-app/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Upgrade Your Music Experience with This Spotify-like Open Source Mobile Music Player</div><div class="kg-bookmark-description">BlackHole is an interesting open-source music player for mobile phones.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It's FOSS News</span><span class="kg-bookmark-publisher">Sourav Rudra</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/05/blackhole-music-app.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><hr><h2 id="%F0%9F%A4%A3-meme-of-the-week">🤣 Meme of the week</h2><p>The brain is one of the most important parts of a human body, after all.</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/memes1.png" class="kg-image" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More" loading="lazy" width="1080" height="1080" srcset="https://itsfoss.com/content/images/size/w600/2023/05/memes1.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/memes1.png 1000w, https://itsfoss.com/content/images/2023/05/memes1.png 1080w" sizes="(min-width: 720px) 720px"></figure><hr><h2 id="%F0%9F%97%93%EF%B8%8F-linux-trivia">🗓️ Linux Trivia</h2><p>On May 9, 1996, Linus Torvalds <a href="https://lkml.iu.edu/hypermail/linux/kernel/9605/0855.html?ref=itsfoss.com">described in a mailing list</a> his conception of what he believes should be the logo for Linux.</p><blockquote>So when you think "penguin", you should be imagining a slighly overweight penguin (*), sitting down after having gorged itself, and having just burped. It's sitting there with a beatific smile - the world is a good place to be when you have just eaten a few gallons of raw fish and you can feel another "burp" coming. </blockquote><p>Yeah! That's the <a href="https://itsfoss.com/tux-trivia/">story behind the Linux logo Tux</a>. Here are some more.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/tux-trivia/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Some Incredible Stories Around Tux: Our Lovable Linux Mascot!</div><div class="kg-bookmark-description">We’ve all heard about our favorite Linux Mascot! In this Linux trivia series, I’ve scoured every nook and corner of the web I could reach out to, to dig up some old archives to gather some interesting trivia about our cute and friendly penguin, starting from its early</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Avimanyu Bandyopadhyay</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2019/02/history-of-linux-logo-mascot.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><hr><h2 id="%F0%9F%A7%A9-puzzle-for-pro-members-only">🧩 Puzzle (for Pro members only)</h2><p>There is a different kind of puzzle this way. It may not be as time taking as a crossword, though.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/puzzle/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Puzzle of The Week</div><div class="kg-bookmark-description">Exercise those ‘little gray cells’ of yours and solve this puzzle.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Abhishek Prakash</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/puzzle-of-the-week.png" alt="FOSS Weekly #23.19: New Zinc Distro, Terminal Fonts, Tux Story and More"></div></a></figure><hr><h2 id="%E2%9D%A4%EF%B8%8F-enjoying-foss-weekly">❤️ Enjoying FOSS Weekly?</h2><p><strong>Forward it to Linux-using friends</strong> and encourage them to subscribe (hint: <a href="https://itsfoss.com/signup/">it's here</a>).</p><p>Become a Pro member and show your support 🙏</p><p>Share the newsletter and the articles in Linux communities on Reddit and other platforms.</p><p><strong>Something else?</strong> Share it with me by pressing the reply button.</p><p>Keep loving Linux :)</p>


id: 63f5f2e96f09afb69b01b586
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: Rust Basics Series #7: Using Loops in Rust
link: https://itsfoss.com/rust-loops/
categories: Rust
description:
Loops are another way of handling control flow of your programs. Learn about for, while and 'loop' loops in Rust.

content:
<img src="https://itsfoss.com/content/images/2023/05/loops-in-rust-programming-language.png" alt="Rust Basics Series #7: Using Loops in Rust"><p>In the <a href="https://itsfoss.com/rust-if-else/">previous article</a> of the Rust series, I went over the use of if and else keywords to handle the control flow of your Rust program. </p><p>That is one way of handling the control flow of your program. The other way you can do this is by using loops. So let us look at loops in this follow-up article.</p><h2 id="loops-available-in-rust">Loops available in Rust</h2><p>The Rust programming language has three different loops based on what you want to achieve and what is available:</p><ul><li>for</li><li>while</li><li>loop</li></ul><p>I presume that you are familiar with <code>for</code> and <code>while</code> but <code>loop</code> might be new here. Let's start with familiar concepts first.</p><h2 id="the-for-loop">The for loop</h2><p>The <code>for</code> loop is primarily used to iterate over something called an iterator.</p><p>This iterator can be made from anything, from an array, a vector (will be covered soon!), a range of values, or anything custom. The sky is the limit here.</p><p>Let us look at the syntax of the <code>for</code> loop.</p><pre><code class="language-rust">for iterating_variable in iterator {
    <statement(s)>;
}</code></pre><p>The <code>iterating_variable</code> is more generally known as <code>i</code> in most other programming language tutorials ;)</p><p>And an <code>iterator</code>, as I said, can be really anything that tells what the next value is, if any.</p><p>Let's understand this using a program.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let my_arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

    println!("iteration over an array");
    for element in my_arr {
        println!("{}", element);
    }

    println!("\niteration over a real iterator");
    for element in my_arr.iter() {
        println!("{}", element);
    }

    println!("\nPython-style range");
    for element in 0..10 {
        println!("{}", element);
    }
}</code></pre></section><!--kg-card-end: html--><p>Here, I have declared an array that holds 10 numbers, from 0 to 9. On the <code>for</code> loop that is on line 5, I simply specify this array as the iterator and Rust automatically handles iteration over all the elements of this array for me. No fancy <code>my_arr[i]</code> magic is needed.</p><p>But on line 10, I call the <code>.iter()</code> function on the array. This is an explicit mention of getting an iterator based on the values that <code>my_arr</code> consists of. The only difference between this loop and the loop on line 5 is that here you are being explicit by calling the <code>.iter()</code> function on the array.</p><p>Calling the <code>.iter()</code> function on a data type, <em>in this context,</em> isn't strictly necessary. Since this is an array, which is a data type provided by the language itself, Rust already knows how to handle it. But you <em>will</em> need it with custom data types.</p><p>Finally, on line 15, we have a for loop that loops over a range. Well sort of. If you look closely, this range will look very similar to the Slice "type". Rust knows about this too and handles iteration <em>for</em> you (haha, get it?).</p><p>The output looks like following:</p><pre><code>iteration over an array
0
1
2
3
4
5
6
7
8
9

iteration over a real iterator
0
1
2
3
4
5
6
7
8
9

Python-style range
0
1
2
3
4
5
6
7
8
9</code></pre><h2 id="the-while-loop">The while loop</h2><p>The <code>while</code> loop can be thought to be very similar to an <code>if</code> conditional statement. With the <code>if</code> statement, provided that the user-provided condition evaluates to <code>true</code>, the code in the <code>if</code> statement's body is executed <em>once</em>.</p><p>But with the <code>while</code> loop, if the condition evaluates to <code>true</code>, the loop starts looping over the loop body. The loop will continue its iteration as long as the condition keeps on evaulating to <code>true</code>.</p><p>The <code>while</code> loop stops only when the loop has completed the execution of all statements in the current iteration and upon checking the condition, it evaluates to <code>false</code>.</p><p>Let's look at the syntax of a while loop...</p><pre><code class="language-rust">while condition {
    <statement(s)>;
}</code></pre><p>See? Very similar to an <code>if</code> conditional statement! No <code>else</code> blocks though ;)</p><p>Let's look at a program to understand this better.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let mut var = 0;

    while var < 3 {
        println!("{var}");
        var += 1;
    }
}
</code></pre></section><!--kg-card-end: html--><p>I have a mutable variable, <code>var</code>, with an initial value of 0. The <code>while</code> loop will loop as long as the value stored in the mutable variable <code>var</code> is less than 3.</p><p>Inside the loop, <code>var</code>'s value gets printed and later on, its value gets incremented by 1.</p><p>Below is the output of the code written above:</p><pre><code>0
1
2</code></pre><h2 id="the-loop">The loop </h2><p>Rust has an infinite loop. Yes, one with no condition for starting and no condition to stop. It just continues looping over and over again till infinity. But of course, has triggers to stop the loop execution from the code itself.</p><p>The syntax for this infinite loop is as follows:</p><pre><code class="language-rust">loop {
    <statement(s)>;
}</code></pre><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">📋</div><div class="kg-callout-text">These loops are mostly used in GUI software where exiting is an <em>explicit</em> operation.</div></div><p>Before I even give you an example, since this loop is quite special, let's first look at how to <em>exit</em> it :p</p><p>To stop the execution of an infinite loop, the <code>break</code> keyword is used inside the loop.</p><p>Let's look at an example where only whole numbers between 0 and 3 (inclusive) are printed to the program output.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let mut var = 0;

    loop {
        if var > 3 {
            break;
        }

        println!("{}", var);
        var += 1;
    }
}
</code></pre></section><!--kg-card-end: html--><p>The best way to interpret this particular example is to look at it as an unnecessarily expanded form of a <code>while</code> loop ;)</p><p>You have a mutable variable <code>var</code> with an initial value of 0 that is used as an iterator, kind of. The infinite loop starts with an <code>if</code> condition that <em>should </em><code><em>var</em></code><em>'s value be greater than 3, the </em><code><em>break</em></code><em> keyword should be executed</em>. Later on, like the previous example of the <code>while</code> loop, <code>var</code>'s value is printed to the stdout and then its value is incremented by 1.</p><p>It produces the following output:</p><pre><code>0
1
2
3</code></pre><h2 id="labelled-loops">Labelled loops</h2><p>Let's say there are two infinite loops, one nested in the other. For some reason, the exit condition is checked in the innermost loop but this exit condition is for exiting out of the outermost loop.</p><p>In such a case, labelling the loop(s) might be beneficial.</p><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-emoji">💡</div><div class="kg-callout-text">The use of labels <code>break</code> and <code>continue</code> keywords are not exclusive to the infinite loop. They can be used with all three loops that the Rust language offers.</div></div><p>Following is how to label a loop.</p><pre><code class="language-rust">'label: loop {}</code></pre><p>To tell the compiler that a loop is being labelled, start with a single quote character, type the label for it, and follow it with a colon. Then, continue with how you regularly define a loop.</p><p>When you need to break certain loop, simply specify the loop label like so:</p><pre><code class="language-rust">    break 'label;</code></pre><p>Let's take a look at an example to better understand this.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let mut a = 0;
    let mut b = 0;

    'parent: loop {
        a += 1;

        loop {
            println!("a: {}, b: {}", a, b);
            b += 1;

            if a + b == 10 {
                println!("\n{} + {} = 10", a, b);
                break 'parent;
            }
        }
    }
}</code></pre></section><!--kg-card-end: html--><p>Here, I took two mutable variables <code>a</code> and <code>b</code> with the initial values set to 0 for both.</p><p>Later down, the outer-most loop is labelled <code>parent</code>. The 'parent' loop increments the value of varaible <code>a</code> by 1 and has an inner/child loop.</p><p>This child loop (on line 8) prints the values of variables <code>a</code> and <code>b</code>. Inside this loop, the value of <code>b</code> gets incremented by 1. And the exit condition is that <code>a + b == 10</code>. Meaning whenever the values stored in variables <code>a</code> and <code>b</code>, when added together, result in 10, the <code>parent</code> loop is broken. Even though the <code>break</code> condition on line 14 "belongs" to the inner loop, it breaks the <code>parent</code> loop.</p><p>Let's look at the program output now.</p><pre><code>a: 1, b: 0
a: 1, b: 1
a: 1, b: 2
a: 1, b: 3
a: 1, b: 4
a: 1, b: 5
a: 1, b: 6
a: 1, b: 7
a: 1, b: 8

1 + 9 = 10
</code></pre><p>As evident from the program output, the loop stops as soon as <code>a</code> and <code>b</code> have the values 1 and 9 respectively.</p><h2 id="the-continue-keyword">The continue keyword</h2><p>If you have already used loops in any other programming language like C/C++/Java/Python, you might already know the use of the <code>continue</code> keyword.</p><p>While the <code>break</code> keyword is to stop the loop execution completely, the <code>continue</code> keyword is used to "skip" the <strong>current iteration</strong> of loop execution and start with the next iteration (if the conditions permit).</p><p>Let's look at an example to understand how the <code>continue</code> keyword works.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    for i in 0..10 {
        if i % 2 == 0 {
            continue;
        }
        println!("{}", i)
    }
}</code></pre></section><!--kg-card-end: html--><p>In the code above, I have a <code>for</code> loop that iterates over whole numbers between 0 and 9 (inclusive). As soon as the loop starts, I put a conditional check to see if the number is even or not. If the number is even, the <code>continue</code> keyword is executed.</p><p>But if the number is odd, the number gets printed to the program output.</p><p>Let's first look at the output of this program.</p><pre><code>1
3
5
7
9
</code></pre><p>As you can see, the loop appears to have been "going on" even though there clearly are even numbers between 0 and 9. But because I used the <code>continue</code> keyword, the loop execution stopped when that keyword was encountered.</p><p>The loop skipped whatever was under it and continued with the next iteration. That's why even numbers are not printed, but all odd numbers between 0 and 9 are printed to the proogram output.</p><h2 id="conclusion">Conclusion</h2><p>To conclude this long article, I demonstrated the use of 3 different loops: <code>for</code>, <code>while</code> and <code>loop</code>. I also discussed two keywords that affect the control flow of these loops: <code>break</code> and <code>continue</code>. </p><p>I hope that you now understand the appropriate use case for each loop. Please let me know if you have any questions.</p>


id: 6451f84b71e1e408c0cee4c5
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: 10 Beautiful Fonts for Your Linux Terminal
link: https://itsfoss.com/fonts-linux-terminal/
categories: Terminal,Customization
description:
Get the best font for your terminal to improve the look, and readability, and have a fun experience with the terminal.

content:
<img src="https://itsfoss.com/content/images/2023/05/best-fonts-for-terminal.png" alt="10 Beautiful Fonts for Your Linux Terminal"><p>Picking the perfect font is crucial for many things, whether you are a programmer, system administrator, or a Linux user fond of the terminal.</p><p><a href="https://itsfoss.com/change-terminal-font-ubuntu/">Changing the terminal font</a> helps you achieve the following:</p><ul><li><strong>An aesthetically pleasing look of your terminal</strong></li><li><strong>Enhances readability</strong></li><li><strong>Reduces eye strain</strong></li></ul><p>Sounds good. But how can you choose the perfect font? There are hundreds and thousands of options out there.</p><p>For starters, you can select a <strong>font optimized for technical documents or coding</strong> because those have good readability. Next, you can filter <strong>foss projects</strong> (if that matters to you) and check if those <strong>fonts scale well</strong> with high-resolution monitors (per your requirements).</p><p>Fret not; to give you a head start, we have picked some of the best fonts fit for coding, offering good readability while also looking good at the same time.</p><h2 id="1-cascadia">1. Cascadia</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/cascadia.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/cascadia.png 600w, https://itsfoss.com/content/images/2023/05/cascadia.png 822w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://github.com/microsoft/cascadia-code?ref=itsfoss.com">Cascadia</a> is a font by Microsoft, used by default for Visual Studio Code, one of the <a href="https://itsfoss.com/best-modern-open-source-code-editors-for-linux/">best open-source code editors</a>.</p><p>It includes coding ligature support and offers three variants: standard, mono, and a version supporting embedded powerline symbols.</p><h2 id="2-fira-code">2. Fira Code</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/fira-code.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/fira-code.png 600w, https://itsfoss.com/content/images/2023/05/fira-code.png 822w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://github.com/tonsky/FiraCode?ref=itsfoss.com">Fira Code</a> is a monospaced font with programming ligature and ASCII support. </p><p>It is regularly fine-tuned to support letter pairs and better punctuation output.</p><h2 id="3-hack">3. Hack</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/hack.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/hack.png 600w, https://itsfoss.com/content/images/2023/05/hack.png 822w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://github.com/source-foundry/Hack?ref=itsfoss.com">Hack</a> is another monospaced font tailored for source codes. </p><p>You get ASCII, powerline support, and the usual styles for <strong>bold, italic, and bold italic.</strong></p><p>If you notice its GitHub page, they provide instructions to improve the font rendering for certain Linux distributions.</p><h2 id="4-inconsolata">4. Inconsolata</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/inconsolata.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/inconsolata.png 600w, https://itsfoss.com/content/images/2023/05/inconsolata.png 822w" sizes="(min-width: 720px) 720px"></figure><p><br><a href="https://fonts.google.com/specimen/Inconsolata?ref=itsfoss.com">Inconsolata</a> is a clear monospace font tailored for great readability. You can find it as one of the options in the Google Font family.</p><p>The font offers several styles useful for <a href="https://itsfoss.com/linux-terminal-emulators/">terminal emulators</a> and coding purposes.</p><h2 id="5-iosevka">5. Iosevka</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/Iosevka-.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/Iosevka-.png 600w, https://itsfoss.com/content/images/2023/05/Iosevka-.png 822w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://github.com/be5invis/Iosevka?ref=itsfoss.com">Iosevka</a> is a clean-looking versatile open-source font built to write code and use in terminals and technical documents.</p><p>You can get installation instructions from its GitHub page for other platforms, including Linux.</p><h2 id="6-jetbrains-mono">6. JetBrains mono</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/jetbrains-mono.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/jetbrains-mono.png 600w, https://itsfoss.com/content/images/2023/05/jetbrains-mono.png 822w" sizes="(min-width: 720px) 720px"></figure><p>The free and open-source typeface is tailored for developers, i.e., <a href="https://github.com/JetBrains/JetBrainsMono?ref=itsfoss.com">JetBrains Mono</a>.</p><p>As the name suggests, it is the default font used by the popular developer tools under <a href="https://www.jetbrains.com/?ref=itsfoss.com">JetBrains</a>.</p><h2 id="7-meslo-nf">7. Meslo NF</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/mesloNF.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/mesloNF.png 600w, https://itsfoss.com/content/images/2023/05/mesloNF.png 822w" sizes="(min-width: 720px) 720px"></figure><p>Meslo NF is a font that supports ASCII and icons well in the terminal. </p><p>A part of "<a href="https://github.com/ryanoasis/nerd-fonts/?ref=itsfoss.com">Nerd Fonts</a>" collection on GitHub, which features good-looking fonts for coding and terminal. You can find the font among the assets in its <a href="https://github.com/ryanoasis/nerd-fonts/releases/tag/v3.0.0?ref=itsfoss.com">GitHub releases</a> section.</p><p>It looks excellent in shells like Zsh, fish, and others. You can check out our article on lesser-known <a href="https://itsfoss.com/shells-linux/">Linux shells</a> to explore others.</p><p><strong>Suggested Read 📖</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/shells-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Beyond Bash: 9 Lesser-Known Linux Shells and Their Capabilities</div><div class="kg-bookmark-description">You probably already know about the popular shells like bash and zsh. Let us explore some interesting and unique shells.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="10 Beautiful Fonts for Your Linux Terminal"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Sreenath</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/01/lesser-known-shells.png" alt="10 Beautiful Fonts for Your Linux Terminal"></div></a></figure><h2 id="8-monoid">8. Monoid</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/moniosome.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="876" height="665" srcset="https://itsfoss.com/content/images/size/w600/2023/05/moniosome.png 600w, https://itsfoss.com/content/images/2023/05/moniosome.png 876w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://larsenwork.com/monoid/?ref=itsfoss.com">Monoid</a> is another open-source font that aims to be useful for coding. With the usual ligature support and light-dark variants, it should be a nice choice for terminals.</p><h2 id="9-ubuntu-monospace">9. Ubuntu Monospace</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/ubuntu-monospace.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/ubuntu-monospace.png 600w, https://itsfoss.com/content/images/2023/05/ubuntu-monospace.png 822w" sizes="(min-width: 720px) 720px"></figure><p>We all love Ubuntu's default font, i.e., <a href="https://design.ubuntu.com/font?ref=itsfoss.com">Ubuntu Monospace</a>. It is optimized for many languages, high-resolution screens, and good readability.</p><p>You do not need to install it if you already use Ubuntu.</p><h2 id="10-sourcecode-pro">10. SourceCode Pro</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/source-code-pro.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="822" height="572" srcset="https://itsfoss.com/content/images/size/w600/2023/05/source-code-pro.png 600w, https://itsfoss.com/content/images/2023/05/source-code-pro.png 822w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://github.com/adobe-fonts/source-code-pro?ref=itsfoss.com">Source Code Pro</a> is a good mix of everything. While it is optimized for coding environments and developed by Adobe, it offers good readability and look-for terminals.</p><p><strong>Recommended Read 📖</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/linux-terminal-emulators/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Top 14 Terminal Emulators for Linux (With Extra Features or Amazing Looks)</div><div class="kg-bookmark-description">Want a terminal that looks cool or has extra features? Here are the best Linux terminal emulators you can get.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="10 Beautiful Fonts for Your Linux Terminal"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2021/03/best-terminal-emulators.png" alt="10 Beautiful Fonts for Your Linux Terminal"></div></a></figure><h2 id="how-to-install-these-fonts">How to Install These Fonts?</h2><p>You can easily install a font by downloading the TTF or OTF file and then double-clicking on them to open it using Font Viewer to install. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/05/image-6.png" class="kg-image" alt="10 Beautiful Fonts for Your Linux Terminal" loading="lazy" width="800" height="463" srcset="https://itsfoss.com/content/images/size/w600/2023/05/image-6.png 600w, https://itsfoss.com/content/images/2023/05/image-6.png 800w" sizes="(min-width: 720px) 720px"><figcaption>Double click on the ttf file to install it</figcaption></figure><p>To install multiple fonts simultaneously, you can make a new <code>.fonts</code> folder in the home directory and put the font files there. You can check out our guide on <a href="https://itsfoss.com/install-fonts-ubuntu/"><strong>installing new fonts</strong></a> for more detailed information.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/install-fonts-ubuntu/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How to Install New Fonts in Ubuntu and Other Linux Distros</div><div class="kg-bookmark-description">Wondering how to install additional fonts in Ubuntu Linux? Here is a screenshot tutorial to show you how to easily install new fonts.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="10 Beautiful Fonts for Your Linux Terminal"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Abhishek Prakash</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2015/01/Install-new-fonts-ubuntu.png" alt="10 Beautiful Fonts for Your Linux Terminal"></div></a></figure><h2 id="more-ways-to-customize-terminal">More ways to customize terminal</h2><p>Here are a few more ways to customize the look and feel of your terminal.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/customize-linux-terminal/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">5 Tweaks to Customize the Look of Your Linux Terminal</div><div class="kg-bookmark-description">Want a beautiful-looking Linux terminal? Here are several ways to tweak the look and feel of your current terminal and make it look beautiful.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="10 Beautiful Fonts for Your Linux Terminal"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2021/02/linux-terminal-customization.jpg" alt="10 Beautiful Fonts for Your Linux Terminal"></div></a></figure><p>Another interesting tool that automatically changes the color scheme of the terminal based on your desktop wallpaper. How cool is that!</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/pywal/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Automatically Change Color Scheme of Your Linux Terminal Based on Your Wallpaper</div><div class="kg-bookmark-description">If you are It’s FOSS newsletter subscriber, you already know that we have started a new ‘Terminal Tuesday’ series. In this, you’ll get to read about command line tools or tips/tricks to help you in the terminal. Terminal is not all about serious work, it can be</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="10 Beautiful Fonts for Your Linux Terminal"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Abhishek Prakash</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2020/08/pywal-linux.jpg" alt="10 Beautiful Fonts for Your Linux Terminal"></div></a></figure><p>💬<em>What is your favorite on the list? Do you have better suggestions? Do share your thoughts in the comments below.</em></p>


id: 64522bab71e1e408c0cee55e
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More
link: https://itsfoss.com/newsletter/foss-weekly-23-18/
categories: Newsletter
description:
Ubuntu 18.04 is ending soon and Debian 12 is coming soon. And the puzzles make a comeback on It's FOSS but with a twist.

content:
<img src="https://itsfoss.com/content/images/2023/05/foss-weekly-23-18.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><p>Ubuntu 18.04 LTS is reaching its end of life by the end of the month. What to do now? We have a <a href="https://news.itsfoss.com/ubuntu-18-04-eol/?ref=itsfoss.com">few suggestions</a>. Debian 12 is gearing up for next month's launch. Time to <a href="https://news.itsfoss.com/debian-12-features/?ref=itsfoss.com">check its features</a>.</p><p>The motto of It's FOSS is to educate on Linux and open source. And this is why I don't want to restrict access to educational content. However, I also want to give 'something extra' to our Pro members to thank them for their support.</p><p>For that, <a href="https://itsfoss.com/puzzle/">we have created a puzzles section</a>. Pro members can log in with their accounts and play the puzzles (crossword, find the word, etc.) online. This is fun content. So the paying supporters get extra, and everyone gets to read and learn from the educational content. </p><p>Win-win🤘</p><p><strong>💬 Let's see what else you have in this edition of FOSS Weekly:</strong></p><ul><li>We continue our Rust Basics series</li><li>An early look at GNOME's new camera app</li><li>Interview with Stu Keroff, a teacher who built Linux-based computer lab</li><li>More Linux news, videos, and of course, memes!</li></ul><hr><h2 id="%F0%9F%93%B0-linux-news">📰 Linux News</h2><p>Linux Mint 21.02 <a href="https://news.itsfoss.com/linux-mint-21-2-tooltips/?ref=itsfoss.com">to feature</a> revamped tooltips and notifications.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/ubuntu-18-04-eol/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Ubuntu 18.04 is Reaching End of Life: Here’s What You Can Do</div><div class="kg-bookmark-description">Ubuntu 18.04 is reaching end of life soon. Here’s what you need to know.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It's FOSS News</span><span class="kg-bookmark-publisher">Sourav Rudra</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/05/ubuntu-18-04-eol.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/debian-12-features/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Debian 12 ‘Bookworm’ New Features and Release Date</div><div class="kg-bookmark-description">Debian 12 is due for release soon. Learn more about its features and the release date.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It's FOSS News</span><span class="kg-bookmark-publisher">Sourav Rudra</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/04/debian-12-new-features.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><hr><h2 id="%F0%9F%8E%99%EF%B8%8Finterview-with-stu-keroff">🎙️Interview With Stu Keroff</h2><p>Meet the teacher who makes learning Linux cool and exciting for students.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/interview-stu-keroff/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">“Meet the Techs of Tomorrow Where They Are Today”: A Conversation With Stu Keroff</div><div class="kg-bookmark-description">Meet the teacher who makes learning Linux cool and exciting for students.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It's FOSS News</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/04/interview-with-stu-teacher.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><h2 id="%F0%9F%A7%AE-tutorials">🧮 Tutorials</h2><p>Learn how to use conditional statements effectively in the sixth edition of our Rust Basics series.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/rust-if-else/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Rust Basics Series #6: Using If Else</div><div class="kg-bookmark-description">You can control the flow of your program by using conditional statements. Learn to use if-else in Rust.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Pratham Patel</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/conditonal-statements-in-rust-programming-language.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><p>Qemu is one of the fastest hypervisors out there for Linux. Learn to use it on Ubuntu (and perhaps other Linux distributions).</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/qemu-ubuntu/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How to Install and Use Qemu on Ubuntu</div><div class="kg-bookmark-description">Learn how to properly install Qemu in Ubuntu and then configure a Linux distro in VM.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Sagar Sharma</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/04/install-qemu-on-ubuntu.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><hr><h2 id="%F0%9F%93%B9-what-we-are-watching">📹 What we are watching</h2><p>If you recently installed Ubuntu 23.04, you could benefit from this video.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/n265uqEqCIg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="10 Essential Things to Do After Installing Ubuntu 23.04 Lunar Lobster"></iframe></figure><hr><h2 id="%E2%9C%A8-application-highlights">✨ Application highlights</h2><p>GNOME is working on revamping another of its core tool.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://news.itsfoss.com/gnome-snapshot/?ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Say Cheese to the Future: Snapshot is GNOME’s Next-Gen Camera App</div><div class="kg-bookmark-description">A new GNOME camera app starts sailing to replace the classic Cheese utility.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://news.itsfoss.com/content/images/size/w256h256/2022/08/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It's FOSS News</span><span class="kg-bookmark-publisher">Sourav Rudra</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://news.itsfoss.com/content/images/2023/05/snapshot-gnome-app.jpg" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><p>Control your Linux machine remotely using these tools! 🖥️🐧</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/remote-desktop-tools/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">8 Best Remote Desktop Tools for Linux</div><div class="kg-bookmark-description">Here, we list the best remote desktop tools for Linux along with their pros and cons.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/list-of-remote-desktop-tools.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><hr><h2 id="%F0%9F%9B%8D%EF%B8%8F-interesting-offer">🛍️ Interesting offer</h2><p>The folks over at No Starch Press have yet another useful bundle, this time for learning Python programming.</p><p>Be sure to check it out; a portion of the proceeds go to the <a href="https://www.python.org/psf-landing/?ref=itsfoss.com">Python Software Foundation</a>.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.humblebundle.com/books/python-no-starch-books?partner=itsfoss&ref=itsfoss.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Humble Tech Book Bundle: Python by No Starch</div><div class="kg-bookmark-description">We’ve teamed up with No Starch Press for our newest bundle. Get books like Python for Kids and Beyond the Basic Stuff with Python. Plus, pay what you want & support charity!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://cdn.humblebundle.com/static/hashed/03df0490a53d595fd930f9fff52038366d60a05d.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">Humble Bundle</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://hb.imgix.net/75e1c3e16619e8c9f5ef6ddb93f3bbc0c3b098e1.png?auto=compress,format&h=630&w=1200&s=d4c213287d9081c0d63c17f1eef0f4a8" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><hr><h2 id="%F0%9F%A4%A3-meme-of-the-week">🤣 Meme of the week</h2><p>There is an impostor among us! Ubuntu users will understand :)</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/memes-1.png" class="kg-image" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More" loading="lazy" width="1080" height="1080" srcset="https://itsfoss.com/content/images/size/w600/2023/05/memes-1.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/memes-1.png 1000w, https://itsfoss.com/content/images/2023/05/memes-1.png 1080w" sizes="(min-width: 720px) 720px"></figure><hr><h2 id="%F0%9F%97%93%EF%B8%8F-trivia">🗓️ Trivia</h2><p>The 4th of May is observed as Star Wars Day. The date originates from the pun "May the Fourth be with you", a variant of the famous Star Wars catchphrase "May the Force be with you". </p><p>We, FOSSers, could rephrase it as 'May the FOSS be with you'?</p><hr><h2 id="%F0%9F%A7%A9-puzzle-for-pro-members-only">🧩 Puzzle (for Pro members only)</h2><p>This week's puzzle is a crossword consisting of popular open source applications for Linux.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/puzzle/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Puzzle of The Week</div><div class="kg-bookmark-description">Exercise those ‘little gray cells’ of yours and solve this puzzle.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Abhishek Prakash</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/05/puzzle-of-the-week.png" alt="FOSS Weekly #23.18: Ubuntu 18.04 to Discontinue, Debian 12 Features, Qemu VM and More"></div></a></figure><hr><h2 id="%E2%9D%A4%EF%B8%8F-enjoying-foss-weekly">❤️ Enjoying FOSS Weekly?</h2><p><strong>Forward it to Linux-using friends</strong> and encourage them to subscribe (hint: <a href="https://itsfoss.com/signup/">it's here</a>).</p><p>Become a Pro member and show your support 🙏</p><p><strong>Something else?</strong> Share it with me by pressing the reply button.</p><p>Keep on learning with It's FOSS :)</p>


id: 63a95b043f0e45a074ffb9c7
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: 8 Best Remote Desktop Tools for Linux
description: Here, we list the best remote desktop tools for Linux along with their pros and cons.
link: https://itsfoss.com/remote-desktop-tools/
categories: Software Recommendation
content:
<img src="https://itsfoss.com/content/images/2023/05/list-of-remote-desktop-tools.png" alt="8 Best Remote Desktop Tools for Linux"><p>Remotely connecting to a computer has several advantages. Maybe you want to help troubleshoot an issue on your friend's desktop, or maybe you want to use another desktop session remotely for work.</p><p>Whatever your use case is, remote desktop tools on Linux allow you to connect easily. Of course, every tool is built differently. So, you can pick the one that suits your personal or professional requirements.</p><div class="kg-card kg-callout-card kg-callout-card-yellow"><div class="kg-callout-emoji">✋</div><div class="kg-callout-text"><strong>Non-FOSS Warning!</strong> Some applications mentioned here are not open source. They have been included in the context of Linux usage. Such applications are duly marked.</div></div><p>Here are the best remote desktop tools for Linux:</p><h2 id="1-remmina">1. Remmina</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/remmina.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="1481" height="681" srcset="https://itsfoss.com/content/images/size/w600/2023/04/remmina.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/remmina.png 1000w, https://itsfoss.com/content/images/2023/04/remmina.png 1481w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://remmina.org/?ref=itsfoss.com">Remmina</a> is a versatile free and open-source remote desktop client with <strong>support for various protocols</strong> that include RDP, VNC, SPICE, X2GO, SSH, and HTTP(S). </p><p>If you want a capable open-source remote desktop tool, you cannot go wrong with it. </p><p>Along with the protocol support, it has features to let you easily take screenshots, resume connection, scale quality, configure resolutions, and more.</p><p>Moreover, the features can be extended with the help of plugins.</p><p><strong>Pros:</strong></p><ul><li>Written in GTK, providing native support to Linux distributions.</li><li>Quick connections are set up through the server address.</li><li>Ability to save connection profiles</li><li>Support for multiple protocols</li><li>Plugin to extend functionalities like Kiosk mode, Proxy support, terminal emulator, and more.</li></ul><p><strong>Cons:</strong></p><ul><li>Available only for Linux</li><li>It may not be very easy to use for new users</li></ul><p><strong>Installation </strong>📥 </p><p>Reminna is available in most of the distribution repositories. However, to ensure you get the latest version, you can install it as a Flatpak via <a href="https://flathub.org/apps/org.remmina.Remmina?ref=itsfoss.com">Flathub</a> or Snap, as you prefer. </p><p>For Flatpak, you can use the following command (if not using the software center) or follow our <a href="https://itsfoss.com/flatpak-guide/">Flatpak guide</a> to set it up.</p><pre><code>flatpak install flathub org.remmina.Remmina</code></pre><p><strong>Suggested Read 📖</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/set-up-ssh-ubuntu/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Complete Guide to Configuring SSH in Ubuntu</div><div class="kg-bookmark-description">SSH has become the default method of accessing a remote Linux server these days. SSH stands for Secure Shell and it’s a powerful, efficient, and popular network protocol used to establish communication between two computers in a remote fashion. And let’s not forget the secure part of its</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="8 Best Remote Desktop Tools for Linux"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Chris Patrick Carias Stas</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2021/05/set-up-ssh-ubuntu.jpg" alt="8 Best Remote Desktop Tools for Linux"></div></a></figure><h2 id="2-gnome-connections">2. GNOME Connections</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/gnome-connections.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="1025" height="737" srcset="https://itsfoss.com/content/images/size/w600/2023/04/gnome-connections.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/gnome-connections.png 1000w, https://itsfoss.com/content/images/2023/04/gnome-connections.png 1025w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://apps.gnome.org/en-GB/app/org.gnome.Connections/?ref=itsfoss.com">GNOME Connections</a> is a <strong>straightforward app</strong> that lets you quickly connect to a remote desktop using RDP/VNC protocol.</p><p>It does not support other protocols or any fancy features. You get a simple one-click app with support for scaling, bandwidth tweaks, and a couple more options.</p><p><strong>Pros:</strong></p><ul><li>Easy to use and simple</li><li>Tailored for GNOME but can work on other desktop environments</li></ul><p><strong>Cons:</strong></p><ul><li>It does not support many protocols</li><li>It may not offer all kinds of functionalities for most, and no plugin support</li></ul><p><strong>Installation </strong>📥 </p><p>You can install GNOME Connections through <a href="https://flathub.org/apps/org.gnome.Connections?ref=itsfoss.com">Flathub</a> on any distro of your choice.</p><p>If you already have Flatpak setup, use the command below to install it via the terminal:</p><pre><code>flatpak install flathub org.gnome.Connections</code></pre><h2 id="3-x2go">3. X2Go</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/05/x2go-client.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="844" height="682" srcset="https://itsfoss.com/content/images/size/w600/2023/05/x2go-client.png 600w, https://itsfoss.com/content/images/2023/05/x2go-client.png 844w" sizes="(min-width: 720px) 720px"><figcaption>x2go screenshot</figcaption></figure><p><a href="https://wiki.x2go.org/doku.php/start?ref=itsfoss.com">X2Go</a> is an open-source, cross-platform remote desktop client with a client-server architecture. The remote machine must have an X2Go server installed, which should be a Linux system. And you can have X2Go client installed on any platform of your choice and then connect using it to the Linux remote system.</p><p>You can connect to Windows as well, using the client software, because you do not have the server available to be installed for other platforms.</p><p>So, X2Go is an excellent choice for users frequently connecting to Linux computers.</p><p><strong>Pros:</strong></p><ul><li>Linux server support</li><li>Cross-platform clients</li><li>SSH access, printer sharing, clipboard mode, and sound support</li></ul><p><strong>Cons:</strong></p><ul><li>It uses a modified <a href="https://en.wikipedia.org/wiki/NX_technology?ref=itsfoss.com">NX 3 protocol</a> and does not support other protocols</li></ul><p><strong>Installation </strong>📥 </p><p>X2Go client is available in the software center for Ubuntu. Alternatively, you can use the below command in Debian-based Linux distribution.</p><pre><code>sudo get install x2goclient</code></pre><p>To install the x2go server, use the below command:</p><pre><code>sudo add-apt-repository ppa:x2go/stable
sudo apt update
sudo apt install x2goserver x2goserver-xsession</code></pre><p>You can explore more on its <a href="https://wiki.x2go.org/doku.php/doc:installation:x2goserver?ref=itsfoss.com">official documentation</a>. </p><p><strong>Suggested Read 📖</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/improve-privacy/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">11 Ways to Improve Your Privacy</div><div class="kg-bookmark-description">Bring your A game to improve your privacy online, whether you are a Linux user or not. Follow these tips for a secure experience!</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="8 Best Remote Desktop Tools for Linux"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/04/ways-to-enhance-your-privacy.png" alt="8 Best Remote Desktop Tools for Linux"></div></a></figure><h2 id="4-krdc">4. KRDC</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/krdc.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="985" height="542" srcset="https://itsfoss.com/content/images/size/w600/2023/05/krdc.png 600w, https://itsfoss.com/content/images/2023/05/krdc.png 985w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://apps.kde.org/krdc/?ref=itsfoss.com">KRDC</a> is a <strong>free and open-source remote desktop tool built by KDE</strong>. You can find it pre-installed in some KDE-powered distributions and install it on any distribution.</p><p>It supports two protocols that include RDP and VNC. You have all the essential options like scaling and remote session management.</p><p><strong>Pros:</strong></p><ul><li>Easy to use</li><li>Remember connection history</li><li>Native Linux support</li><li>Scaling support</li></ul><p><strong>Cons:</strong></p><ul><li>No cross-platform availability; Linux only</li></ul><p><strong>Installation </strong>📥 </p><p>You can find KRDC from KDE's Discover Center or install it using <a href="https://flathub.org/apps/org.kde.krdc?ref=itsfoss.com">Flathub</a> or Snap.</p><p>If you want to install the Flatpak via the terminal, use the command below:</p><pre><code>flatpak install flathub org.kde.krdc</code></pre><h2 id="5-tigervnc">5. TigerVNC</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/tigervnc-viewer.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="688" height="361" srcset="https://itsfoss.com/content/images/size/w600/2023/05/tigervnc-viewer.png 600w, https://itsfoss.com/content/images/2023/05/tigervnc-viewer.png 688w"></figure><p>TigerVNC is a free and open-source remote computer connection tool with a client-server architecture.</p><p>In other words, you need to install the server on the remote computer and the client program to connect from.</p><p>The client program is pretty simple, with essential options like display settings and multiple tweaks for compression. TigerVNC manages to <strong>provide you with a fast experience</strong> for the remote connection compared to some other options.</p><p><strong>Pros:</strong></p><ul><li>Cross-platform</li><li>Fast performance</li></ul><p><strong>Cons:</strong></p><ul><li>GUI feels dated</li><li>It does not support multiple protocols</li></ul><p><strong>Installation </strong>📥 </p><p>You can find packages from its <a href="https://github.com/TigerVNC/tigervnc/releases?ref=itsfoss.com">GitHub releases section</a> or grab the binaries on <a href="https://sourceforge.net/projects/tigervnc/files/stable/1.13.1/?ref=itsfoss.com">SourceForge</a>. Refer to our <a href="https://itsfoss.com/install-deb-files-ubuntu/">deb file installation</a> article if you need help with it.</p><h2 id="6-teamviewer-not-foss-">6. TeamViewer (Not FOSS)</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/teamviewer-linux.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="648" height="541" srcset="https://itsfoss.com/content/images/size/w600/2023/05/teamviewer-linux.png 600w, https://itsfoss.com/content/images/2023/05/teamviewer-linux.png 648w"></figure><p><a href="https://www.teamviewer.com/en/products/teamviewer/?ref=itsfoss.com">TeamViewer</a> is a <strong>popular tool </strong>available cross-platform, even with the option to connect through mobile devices. Interestingly, there's <strong>a web client available. So, to connect to other systems, you do not need the client installed on your computer.</strong></p><p>It is one of the oldest remote desktop-sharing tools out there. While it mentions <strong>experimental Wayland support exists, TeamViewer recommends an Xorg session</strong>.</p><p>Users frequently use TeamViewer for remote support and collaboration. While it is free for personal use cases, it needs a commercial license for businesses and enterprises.</p><p>Unlike some other options, you do not need an IP address. With TeamViewer installed on the remote computer, you get a <strong>unique ID</strong>, share it with the user you want to authorize connecting remotely, and that's it!</p><p><strong>Pros:</strong></p><ul><li>Intuitive user experience</li><li>Good for beginners</li><li>Mobile support</li></ul><p><strong>Cons:</strong></p><ul><li>Need to create an account to enable desktop sharing</li><li>Not a lightweight tool</li><li>Not open-source</li></ul><p><strong>Installation </strong>📥 </p><p>TeamViewer provides binaries for Linux distributions for easy installation. You can grab the .deb package for Ubuntu or refer to our <a href="https://itsfoss.com/teamviewer-linux/">TeamViewer guide</a> for help.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/teamviewer-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How to Install and Use TeamViewer on Linux [Complete Guide]</div><div class="kg-bookmark-description">Brief: Step-by-step beginner’s guide to installing TeamViewer on Linux. It also explains how to use TeamViewer on Linux. TeamViewer is a remote desktop application primarily used to connect to a different system quickly and securely. It lets you remotely connect to someone’s desktop, transfer f…</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="8 Best Remote Desktop Tools for Linux"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Sreenath</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2017/11/install-teamviewer-on-linux.png" alt="8 Best Remote Desktop Tools for Linux"></div></a></figure><h2 id="7-anydesk-not-foss-">7. AnyDesk (Not FOSS)</h2><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/anydesk-linux.png" class="kg-image" alt="8 Best Remote Desktop Tools for Linux" loading="lazy" width="1245" height="763" srcset="https://itsfoss.com/content/images/size/w600/2023/05/anydesk-linux.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/anydesk-linux.png 1000w, https://itsfoss.com/content/images/2023/05/anydesk-linux.png 1245w" sizes="(min-width: 720px) 720px"></figure><p><a href="https://anydesk.com/?ref=itsfoss.com">AnyDesk</a> is one of the industry-leading remote desktop tools with a nice feature set and secure access.</p><p>You can use it for free, along with mobile support for Android and iOS. You will need to purchase a license to unlock all of its features.</p><p><strong>Pros:</strong></p><ul><li>Cross-platform support</li><li>Mobile support</li></ul><p><strong>Cons:</strong></p><ul><li>Limited functionality for free</li><li>Not open-source</li></ul><p><strong>Installation </strong>📥 </p><p>You can find binaries for all kinds of Linux distributions on its <a href="https://anydesk.com/en/downloads/linux?ref=itsfoss.com">download page</a>, supporting Ubuntu, openSUSE, and RHEL.</p><h2 id="8-apache-guacamole">8. Apache Guacamole</h2><p><a href="https://guacamole.apache.org/?ref=itsfoss.com">Apache Guacamole</a> is a special remote desktop tool for cloud systems (or servers).</p><p>If your server runs an operating system, you can install Apache Guacamole and access it from any other platform via the web browser. Hence, it pitches itself as a clientless remote desktop gateway.</p><p><strong>Pros:</strong></p><ul><li>Tailored for cloud computing</li><li>Free and open-source</li></ul><p><strong>Cons:</strong></p><ul><li>A specialized tool not fit for everyone</li></ul><p><strong>Recommended Read 📖</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/essential-linux-applications/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Best Linux Software: 39 Essential Linux Apps [2023]</div><div class="kg-bookmark-description">What are the must-have applications for Linux? The answer is subjective. Here, we’ve listed some of the best options.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="8 Best Remote Desktop Tools for Linux"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/2023/04/essential-linux-apps.png" alt="8 Best Remote Desktop Tools for Linux"></div></a></figure><h2 id="wrapping-up">Wrapping Up</h2><p>There are some more open-source options like <a href="https://www.freerdp.com/?ref=itsfoss.com">FreeRDP</a> and <a href="http://www.xrdp.org/?ref=itsfoss.com">XRDP</a>. FreeRDP did not work for me, but it is actively maintained. So, you can give it a try.</p><p>XRDP needs to be installed from the source. Feel free to look at it if you want to go through the hassle of <a href="https://itsfoss.com/install-software-from-source-code/">compiling from source</a>.</p><p><strong>🗨 <em>Let us know which one prefer from the list or if you have something else to suggest. We might update the list with your suggestion.</em></strong></p>


id: 63eb248f07eb195c59be7d21
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: Rust Basics Series #6: Conditional Statements
link: https://itsfoss.com/rust-if-else/
categories: Rust
description:
You can control the flow of your program by using conditional statements. Learn to use if-else in Rust.

content:
<img src="https://itsfoss.com/content/images/2023/05/conditonal-statements-in-rust-programming-language.png" alt="Rust Basics Series #6: Conditional Statements"><p>In the <a href="https://itsfoss.com/rust-functions">previous article</a> in this series, you looked at Functions. In this article, let's look at managing the control flow of our Rust program using conditional statements.</p><h2 id="what-are-conditional-statements">What are conditional statements?</h2><p>When writing some code, one of the most common tasks is to perform a check for certain conditions to be <code>true</code> or <code>false</code>. "If the temperature is higher than 35°C, turn on the air conditioner."</p><p>By using keywords like <code>if</code> and <code>else</code> (sometimes in combination), a programmer can change what the program does based on conditions like the number of arguments provided, the options passed from the command line, the names of files, error occurrence, etc.</p><p>So it is critical for a programmer to know control flow in any language, let alone in Rust.</p><h3 id="conditional-operators">Conditional operators</h3><p>The following table shows all the frequently used operators for an individual condition:</p><!--kg-card-begin: html--><table>
<thead>
<tr>
<th><strong>Operator</strong></th>
<th><strong>Example</strong></th>
<th><strong>Interpretation</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><code>></code></td>
<td><code>a > b</code></td>
<td><code>a</code> is <strong>greater</strong> than <code>b</code></td>
</tr>

    <tr>
<td><code><</code></td>
<td><code>a < b</code></td>
<td><code>a</code> is <strong>less</strong> than <code>b</code></td>
</tr>

<tr>
<td><code>==</code></td>
<td><code>a == b</code></td>
<td><code>a</code> is <strong>equal</strong> to <code>b</code></td>
</tr>
<tr>
<td><code>!=</code></td>
<td><code>a != b</code></td>
<td><code>a</code> is <strong>not equal</strong> to <code>b</code></td>
</tr>
<tr>
<td><code>>=</code></td>
<td><code>a >= b</code></td>
<td><code>a</code> is <strong>greater than</strong> OR <strong>equal</strong> to <code>b</code></td>
</tr>
<tr>
<td><code><=</code></td>
<td><code>a <= b</code></td>
<td><code>a</code> is <strong>less than</strong> OR <strong>equal</strong> to <code>b</code></td>
</tr>
</tbody>
</table><!--kg-card-end: html--><p>And following is the table for logical operators, they are used between one or more conditions:</p><!--kg-card-begin: html--><table>
<thead>
<tr>
<th>Operator</th>
<th>Example</th>
<th>Interpretation</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>||</code> (Logical OR)</td>
<td><code>COND1 || COND2</code></td>
<td>At least one of the condition <code>COND1</code> or <code>COND2</code> evaluates to <code>true</code></td>
</tr>
<tr>
<td><code>&&</code> (Logical AND)</td>
<td><code>COND1 && COND2</code></td>
<td><strong>All</strong> conditions evaluate to <code>true</code></td>
</tr>
<tr>
<td><code>!</code> (Logical NOT)</td>
<td><code>!COND</code></td>
<td>Opposite boolean value of what <code>COND</code> evaluates to</td>
</tr>
</tbody>
</table><!--kg-card-end: html--><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">📋</div><div class="kg-callout-text">Like in Mathematics, you can use parentheses (round brackets) to specify the precedence of an operation compared to others.</div></div><h2 id="using-if-else">Using if else</h2><p>To handle the basic flow of Rust code, two keywords are used: <code>if</code> and <code>else</code>. This helps you create two "execution paths" based on the state of the provided condition.</p><p>The syntax of a simple if block with an alternative execution path is as follows:</p><pre><code class="language-rust">if condition {
    <statement(s)>;
} else {
    <statement(s)>;
}</code></pre><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">📋</div><div class="kg-callout-text">When only one condition is provided, enclosing it in round brackets is not compulsory. The use of round brackets is optional, according to the syntax. You should still use them to specify precedence and for better readability.</div></div><p>Let's look at an example.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let a = 36;
    let b = 25;

    if a > b {
        println!("a is greater than b");
    } else {
        println!("b is greater than a");
    }
}</code></pre></section><!--kg-card-end: html--><p>Here, I have declared two integer variables <code>a</code> and <code>b</code> with the values '36' and '25'. On line 5, I check if the value stored in variable <code>a</code> is greater than the value stored in variable <code>b</code>. If the condition evaluates to <code>true</code>, the code on line 6 will be executed. If the condition evaluates to <code>false</code>, due to the fact that we have an <code>else</code> block (which is optional), the code on line 8 will get executed.</p><p>Let's verify this by looking at the program output.</p><pre><code>a is greater than b</code></pre><p>Perfect!</p><p>Let's modify the value of variable <code>a</code> to be less than value of variable <code>b</code> and see what happens. I will change <code>a</code>'s value to '10'. Following is the output after this modification:</p><pre><code>b is greater than a</code></pre><p>But, what if I store the same value in variables <code>a</code> and <code>b</code>? To see this, I will set both variables' value to be '40'. Following is the output after this particular modification:</p><pre><code>b is greater than a</code></pre><p>Huh? Logically, this doesn't make any sense... :(</p><p>But this can be improved! Continue reading.</p><h2 id="using-else-if-conditional">Using 'else if' conditional</h2><p>Like any other programming language, you can put an <code>else if</code> block to provide more than two execution paths. The syntax is as follows:</p><pre><code class="language-rust">if condition {
    <statement(s)>;
} else if condition {
    <statement(s)>;
} else {
    <statement(s)>;
}</code></pre><p>Now, with the use of an <code>else if</code> block, I can improve the logic of my program. Following is the modified program.</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let a = 40;
    let b = 40;

    if a == b {
        println!("a and b are equal");
    } else if a > b {
        println!("a is greater than b");
    } else {
        println!("b is greater than a");
    }
}</code></pre></section><!--kg-card-end: html--><p>Now, the logic of my program is correct. It has handled all edge cases (that I can think of). The condition where <code>a</code> is equal to <code>b</code> is handled on line 5. The condition where <code>a</code> might be greater than <code>b</code> is handled on line 7. And, the condition where <code>a</code> is less than <code>b</code> is intrinsically handled by the <code>else</code> block on line 9.</p><p>Now, when I run this code, I get the following output:</p><pre><code>a and b are equal</code></pre><p>Now that's perfect!</p><h2 id="example-find-the-greatest">Example: Find the greatest</h2><p>I know that the use of <code>if</code> and <code>else</code> is easy, but let us look at one more program. This time, let's compare three numbers. I will also make use of a logical operator in this instance!</p><!--kg-card-begin: html--><section class="line-numbers"><pre class="language-rust"><code>fn main() {
    let a = 73;
    let b = 56;
    let c = 15;

    if (a != b) && (a != c) && (b != c) {
        if (a > b) && (a > c) {
            println!("a is the greatest");
        } else if (b > a) && (b > c) {
            println!("b is the greatest");
        } else {
            println!("c is the greatest");
        }
    }
}</code></pre></section><!--kg-card-end: html--><p>This might look complicated at first sight, but fear not; I shall explain this!</p><p>Initially, I declare three variables <code>a</code>, <code>b</code> and <code>c</code> with random values that I could think of at that time. Then, on line 6, I check for the condition where no variable's value is same as any other variable. First, I check the values of <code>a</code> and <code>b</code>, then <code>a</code> and <code>c</code> and then <code>b</code> and <code>c</code>. This way I can be sure that there are no duplicate values stored in either variable.</p><p>Then, on line 7, I check if the value stored in variable <code>a</code> is the greatest. If that condition evaluates to <code>true</code>, code on line 8 gets executed. Otherwise the execution path on line 9 is checked.</p><p>On line 9, I check if the value stored in variable <code>b</code> is the greatest. If this condition evaluates to <code>true</code>, code on line 10 gets executed. If this condition is also <code>false</code>, then it means only one thing. Neither variable <code>a</code>, nor variable <code>b</code> is the greatest among all 3.</p><p>So naturally, in the <code>else</code> block, I print that the variable <code>c</code> holds the greatest value.</p><p>Let's verify this with the program output:</p><pre><code>a is the greatest</code></pre><p>And this is as expected. Try and modify the values assigned to each variable and test it out yourself! :)</p><h2 id="conclusion">Conclusion</h2><p>You learned to use if and else statements. Before you go on making your own AI with lost of if else-if statements (haha), let' learn about loops in Rust in the next chapter of the series.</p><p>Stay tuned.</p>


id: 6434f11315fc7e086e74c353
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: 11 Ways to Improve Your Privacy
link: https://itsfoss.com/improve-privacy/
categories: Privacy,Guides
description:
Bring your A game to improve your privacy online, whether you are a Linux user or not. Follow these tips for a secure experience!

content:
<img src="https://itsfoss.com/content/images/2023/04/ways-to-enhance-your-privacy.png" alt="11 Ways to Improve Your Privacy"><p>Slowly, users are moving to privacy-focused solutions instead of convenient options.</p><p>Why? Simply because many have realized the worth of their personal data.</p><p>Of course, protecting your privacy does not mean staying anonymous. But, taking control of privacy means that you do not share essential information with unauthorized parties while keeping your sensitive data private from everyone.</p><p>You can improve privacy on all kinds of devices you use. Here, I shall provide some proven methods to enhance privacy easily. </p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">📋</div><div class="kg-callout-text">The tips mentioned can be followed for every type of device and OS, not just Linux. You don't necessarily need to follow each and every point. These are mere suggestions. See, what works for you.</div></div><h2 id="1-secure-hide-your-email">1. Secure & Hide Your Email </h2><p>Your email address is connected to everything online, whether banking or a cloud storage platform.</p><p>If your email remains private, you get less spam and fewer attempts to take over your account or trick you into downloading a malicious file from your email.</p><p>I think you get what I mean 🙃</p><p>But… you share your email address with every essential app/service you use. </p><p><strong>So, how can you not share them but still use them?</strong></p><p>You can use <strong>email aliases</strong> to keep your actual email address private. We have a list of <a href="https://itsfoss.com/protect-email-address/">tools to help protect your email address</a>. Choose any options like SimpleLogin or use the email alias addresses your email provider allows creating.</p><p>Also, try using <a href="https://itsfoss.com/secure-private-email-services/">secure email services</a> like Tutanota or <a href="https://itsfoss.click/protonmail?ref=itsfoss.com">ProtonMail</a> for the best experience.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">📋</div><div class="kg-callout-text">This article includes affiliate links, which give us a small commission if you purchase some services like Proton VPN, at no extra cost to you.</div></div><p><strong>Suggested Read 📖</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/secure-private-email-services/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Best Secure Email Services For Privacy Concerned People</div><div class="kg-bookmark-description">Can you call Gmail, Outlook, YahooMail etc secure email services? Well, they’re definitely secure in the way that your data is (usually) safe from outside attackers. But when we talk of secure email service, the focus is on data security and privacy. Most of these free email services snoop</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2019/08/secure-email-services.png" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="2-secure-your-internet">2. Secure Your Internet</h2><p>With an exposed or insecure internet connection, an attacker can snoop on your web activity and potentially use it to gain vital information or affect your device data.</p><p>So, it is essential to keep your internet secure.</p><p>To achieve that, you can do a few things like:</p><ul><li>Use a secure or encrypted DNS like <a href="https://nextdns.io/?ref=itsfoss.com">NextDNS</a> or <a href="https://controld.com/?ref=itsfoss.com">ControlD</a></li><li>Use a VPN to encrypt your internet connection</li></ul><p><a href="https://go.getproton.me/aff_c?offer_id=10&aff_id=1173&ref=news.itsfoss.com">ProtonVPN</a> and Mullvad VPN would be two excellent options, offering open-source clients and Linux support.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/best-vpn-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Best VPN Services for Privacy Minded Linux Users</div><div class="kg-bookmark-description">No matter whether you use Linux or Windows, ISPs spy all the time. Also, it is often your Internet Service Provider who enforces annoying restrictions, and throttles speed while tracking your online activity. I’m not sure what might be the cause of a privacy breach for you – but when</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2019/05/best-vpn-linux.png" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="3-secure-your-search-activity">3. Secure Your Search Activity</h2><p>Everyone utilizes a search engine to find what they are looking for.</p><p>For most of them, it is Google. It is the most popular website on the planet as of now.</p><p>But, it collects some of your data to improve its searchability and may also personalize the search results per your likes and other factors.</p><p>However, if you want an entirely private search experience and non-personalized results, <a href="https://itsfoss.com/privacy-search-engines/">privacy-friendly search engines</a> should be helpful.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/privacy-search-engines/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">10 Privacy Oriented Alternative Search Engines To Google</div><div class="kg-bookmark-description">Brief: In this age of the internet, you can never be too careful with your privacy. Use these alternative search engines that do not track you. Google — unquestionably the best search engine out there (for most)- uses powerful and intelligent algorithms (including A.I. implementations) to let u…</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2017/11/privacy-search-engine.png" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="4-use-a-privacy-focused-browser">4. Use a Privacy-Focused Browser</h2><p>Just like you use search engines, the browser is a vital means of the interaction process.</p><p>A browser with solid privacy and security features should help you enhance your browsing experience.</p><p>Personally, I could point you to <strong>Vivaldi, Firefox, and Brave</strong>. If you are keen to explore more options, look at our list of the <a href="https://itsfoss.com/best-browsers-ubuntu-linux/">best browsers for Linux</a>.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/best-browsers-ubuntu-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Top 10 Best Browsers for Ubuntu Linux</div><div class="kg-bookmark-description">What are your options when it comes to web browsers for Linux? Here are the best web browsers you can pick for Ubuntu and other Linux distros.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2021/09/web-browser-ubuntu.png" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="5-do-not-install-a-program-you-dont-know">5. Do Not Install a Program You Don't Know</h2><p>Whether you use Linux or any other operating system, you should not install anything you are unaware of. Not all programs are privacy-friendly.</p><p>Some do not collect any data at all, and some do.</p><p>Yes, there are certain green flags that you can look for before picking a new software to install. Some of them include:</p><ul><li>It has a decent number of users (not entirely new).</li><li>It is incredibly popular.</li><li>It is open source and has a stable release.</li></ul><p>Some other pointers that you can keep in mind:</p><ul><li>Even if the program is proprietary, you should check out its popularity and privacy policy. </li><li>Usually, best to avoid new software tools.</li><li>Do not download email attachments without separately verifying them.</li><li>Download software from its official channels. Do not use third-party distribution websites to download packages unless they officially recommend it.</li></ul><h2 id="6-utilize-all-privacy-tweaks-and-options">6. Utilize All Privacy Tweaks and Options</h2><p>Every app, every operating system, and every service that you use provides some amount of privacy control.</p><p>For instance, you can hide your Instagram account from the public and only accept followers you know/want.</p><p>Similarly, when possible, I recommend you head to “<strong>Privacy settings</strong>” on your mobile phone, Linux desktop, and everything else.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/ubuntu-privacy.png" class="kg-image" alt="11 Ways to Improve Your Privacy" loading="lazy" width="1006" height="627" srcset="https://itsfoss.com/content/images/size/w600/2023/04/ubuntu-privacy.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/ubuntu-privacy.png 1000w, https://itsfoss.com/content/images/2023/04/ubuntu-privacy.png 1006w" sizes="(min-width: 720px) 720px"><figcaption>Privacy settings on Ubuntu Linux</figcaption></figure><p>It can be anything, deleting your old files, disabling diagnostics information sharing, and so on. If it sounds feasible to you, use the available option to your advantage.</p><h2 id="7-use-secure-password-managers">7. Use Secure Password Managers</h2><p>Passwords and credentials are at the center of everything. If you need to ensure they are well-protected and organized, use a good password manager.</p><p>I usually suggest <a href="https://bitwarden.com/?ref=itsfoss.com">Bitwarden</a> and KeePassXC for all kinds of users. </p><p>If you prefer keeping things offline, <a href="https://keepassxc.org/?ref=itsfoss.com">KeePassXC</a> is available cross-platform. And, if you want a cloud-based solution, Bitwarden should not disappoint.</p><p>You can also explore some <a href="https://itsfoss.com/password-managers-linux/">password managers for Linux users</a>.</p><h2 id="8-keep-your-notes-secure">8. Keep Your Notes Secure</h2><p>Taking notes can be a habit for some, and it can be a good/bad one.</p><p>Why do I say that? Well, notes often have sensitive information, sometimes passwords or PINs.</p><p>So, if you make sure that your notes are secure, it is one of the easiest ways to boost your privacy game.</p><p>Recommendations will include <a href="https://standardnotes.com/?ref=itsfoss.com">Standard Notes</a> and <a href="https://cryptpad.fr/?ref=itsfoss.com">CryptPad</a>. You can explore other options with end-to-end encryption or a variety of features:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/note-taking-apps-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Looking for Some Good Note Taking Apps on Linux? Here are the Best Notes Apps we Found for You</div><div class="kg-bookmark-description">No matter what you do — taking notes is always a good habit. Yes, there are a lot of note taking apps to help you achieve that. But, what about some open-source note taking apps for Linux? Fret not, you don’t need to endlessly search the Internet to find the</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2020/05/Note-Taking-Apps-linux.jpg" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="9-store-or-backup-on-a-private-cloud-platform">9. Store or Backup on a Private Cloud Platform</h2><p>Not everyone has the time or patience to maintain/configure a RAID setup to store/backup data at home.</p><p>So, cloud storage services are the usual solution.</p><p>My personal recommendations include <a href="https://mega.nz/aff=cGWF0mqjBJ0?ref=itsfoss.com">Mega</a> (end-to-end encryption), and <a href="https://partner.pcloud.com/r/1935?ref=itsfoss.com">pCloud</a>. But I suggest you check out our <a href="https://itsfoss.com/cloud-services-linux/">list of cloud storage services</a> to explore better options.</p><p>Additionally, you can encrypt your files before uploading them to the cloud thanks to solutions like <a href="https://cryptomator.org/?ref=itsfoss.com">Cryptomator</a>.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/cloud-services-linux/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Top 10 Best Free Cloud Storage Services for Linux</div><div class="kg-bookmark-description">Which cloud service is the best for Linux? Check out this list of free cloud storage services that you can use in Linux.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Abhishek Prakash</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2016/02/Linux-cloud-services.jpg" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="10-use-private-messengers">10. Use Private Messengers</h2><p>You can always utilize open-source and encrypted messengers like <a href="https://www.signal.org/?ref=itsfoss.com">Signal</a> (cross-platform) to secure your communications.</p><p>There are <a href="https://itsfoss.com/private-whatsapp-alternatives/">multiple WhatsApp alternatives</a> that you can explore for personal use.</p><p>If it is for your business, <a href="https://itsfoss.com/open-source-slack-alternative/">open source Slack alternatives</a> should help.</p><p><strong>Suggested Read 📖</strong></p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/best-matrix-clients/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">9 Best Matrix Clients for Decentralized Messaging</div><div class="kg-bookmark-description">Matrix is an open network standard tailored for secure decentralized real-time communication. It is published and maintained by a non-profit, Matrix.org Foundation. They aim to create an open, independent, and evolving communication platform. If an application supports the Matrix protocol,…</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2022/06/best-matrix-clients.jpg" alt="11 Ways to Improve Your Privacy"></div></a></figure><h2 id="11-specialized-distributions">11. Specialized Distributions </h2><p>If you are adventurous and want to try an entirely different operating system tailored to give you a private experience, you can pick <a href="https://tails.boum.org/?ref=itsfoss.com">Tails OS</a>, <a href="https://www.whonix.org/?ref=itsfoss.com">Whonix</a>, and similar options.</p><p>Some are built to erase your activity as soon as you finish it. And some of them feature special security features, which could be overwhelming for daily usage. </p><p>If you are curious, explore the <a href="https://itsfoss.com/privacy-focused-linux-distributions/">best privacy-focused Linux distributions</a>.</p><p>🤨 <strong>Still, confused about what you want to do? </strong></p><p>I have a separate article listing some of the best browsers, VPNs, messengers, etc., for privacy-focused users. You can always refer to that if you cannot decide what you want to pick to take control of your privacy.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/privacy-tools"><div class="kg-bookmark-content"><div class="kg-bookmark-title">12 Simple Tools to Protect Your Privacy</div><div class="kg-bookmark-description">Quick ways to enhance online privacy? Use these simple tools to take control of your data easily.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="11 Ways to Improve Your Privacy"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2022/02/privacy-tools-ft.jpg" alt="11 Ways to Improve Your Privacy"></div></a></figure>


id: 643632e70e8d58f1afef844c
feed_id: 4bd73a29-4fa4-4ec9-9f97-f0a0036607b8
title: Install and Use Qemu on Ubuntu
description: Learn how to properly install Qemu in Ubuntu and then configure a Linux distro in VM.
link: https://itsfoss.com/qemu-ubuntu/
categories: Tutorial,Ubuntu
content:
<img src="https://itsfoss.com/content/images/2023/04/install-qemu-on-ubuntu.png" alt="Install and Use Qemu on Ubuntu"><p>If you need to run Linux virtual machines, Qemu is one of the fastest hypervisors out there, if not the fastest.</p><p>Along with the speed, you also get excellent configuration options. Even if you are not an advanced user, it gives you enough room for tweaks.</p><p>In this tutorial, I will walk you through:</p><ul><li>Installing Qemu and KVM on Ubuntu </li><li>Installing another distro on Qemu</li><li>Enabling shared folder, auto-resize, and copy-paste in Qemu (optional but makes your VM experience smoother)</li></ul><p>So let's start with the installation.</p><h2 id="installing-qemu-and-kvm-on-ubuntu">Installing Qemu and KVM on Ubuntu</h2><div class="kg-card kg-callout-card kg-callout-card-red"><div class="kg-callout-emoji">✋</div><div class="kg-callout-text">Before jumping to the installation, let's check whether your machine supports the virtualization or not. </div></div><p>To do so, use the following command:</p><pre><code>LC_ALL=C lscpu | grep Virtualization</code></pre><p>If you have an intel processor, it should bring the following output:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/check-where-the-computer-supports-hardware-based-virtualization-or-not.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="837" height="141" srcset="https://itsfoss.com/content/images/size/w600/2023/04/check-where-the-computer-supports-hardware-based-virtualization-or-not.png 600w, https://itsfoss.com/content/images/2023/04/check-where-the-computer-supports-hardware-based-virtualization-or-not.png 837w" sizes="(min-width: 720px) 720px"></figure><p>And if you have an AMD processor, it should get you the following output:</p><pre><code>Virtualization:                  AMD-V</code></pre><p>Also, <a href="https://linuxhandbook.com/check-cpu-info-linux/?ref=itsfoss.com">make sure your system has multiple cores</a> so that you can allocate some to your VM and still have enough to power the host machine. </p><p>And if you're not sure, use the following command and the<strong> output should be more than zero:</strong></p><pre><code>egrep -c '(vmx|svm)' /proc/cpuinfo</code></pre><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Check-total-number-of-cores-and-threads-of-system-in-linux.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="837" height="141" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Check-total-number-of-cores-and-threads-of-system-in-linux.png 600w, https://itsfoss.com/content/images/2023/04/Check-total-number-of-cores-and-threads-of-system-in-linux.png 837w" sizes="(min-width: 720px) 720px"></figure><p>Once you are all set, you can install Qemu and KVM on Ubuntu using the following command:</p><pre><code>sudo apt install qemu qemu-kvm virt-manager bridge-utils</code></pre><p><strong>Reboot your system </strong>once the installation is over.</p><h3 id="add-user-to-appropriate-groups">Add user to appropriate groups</h3><p>To make Qemu work, you'd have to <a href="https://learnubuntu.com/add-user-group/?ref=itsfoss.com">add your user to two groups</a>: <code>libvirt-kvm</code> and <code>libvirt</code>.</p><p>To do so, use the following commands one by one:</p><pre><code>sudo useradd -g $USER libvirt</code></pre><pre><code>sudo useradd -g $USER libvirt-kvm</code></pre><p>Next, enable and start the <code>libvirt</code> service:</p><pre><code>sudo systemctl enable libvirtd.service && sudo systemctl start libvirtd.service</code></pre><p>That's it! The installation of Qemu is done. </p><h2 id="installing-another-linux-virtually-with-qemu">Installing another Linux virtually with Qemu</h2><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">📋</div><div class="kg-callout-text">Please download the ISO file of the Linux distro you want to install in Qemu VM.</div></div><p>First, open the Virtual Machine Manager from the system menu:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Start-Qemu-from-the-system-menu-1.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1070" height="236" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Start-Qemu-from-the-system-menu-1.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/Start-Qemu-from-the-system-menu-1.png 1000w, https://itsfoss.com/content/images/2023/04/Start-Qemu-from-the-system-menu-1.png 1070w" sizes="(min-width: 720px) 720px"></figure><p>Next, click on the File menu and choose the <code>New Virtual Machine</code> option:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/Create-new-VM-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="794" height="312" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Create-new-VM-in-Qemu.png 600w, https://itsfoss.com/content/images/2023/04/Create-new-VM-in-Qemu.png 794w" sizes="(min-width: 720px) 720px"><figcaption>Click File -> New Virtual Machine</figcaption></figure><p>From here, choose the first option <code>Local install media</code> which will allow you to choose the ISO from your file manager:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/Choose-the-local-ISO-file-to-create-new-VM-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="523" height="560"><figcaption>Select Local Install Media</figcaption></figure><p>Next, you will be asked to add the ISO file. Here, <strong>click on the Browse button; it</strong> will open a new prompt, and there, <strong>click on the browse local.</strong></p><p>It will open the file manager and from there, select the ISO file:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Import-the-ISO-file-in-QEMU.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1108" height="816" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Import-the-ISO-file-in-QEMU.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/Import-the-ISO-file-in-QEMU.png 1000w, https://itsfoss.com/content/images/2023/04/Import-the-ISO-file-in-QEMU.png 1108w" sizes="(min-width: 720px) 720px"></figure><p><strong>In most cases, the ISO file will be detected but if you find a situation where it does not detect it automatically, follow the given steps:</strong></p><ol><li>Uncheck the Automatically detect from the source option</li><li>Choose the <code>Generic Linux</code> option </li></ol><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Deal-with-ISO-not-detected-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="938" height="560" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Deal-with-ISO-not-detected-in-Qemu.png 600w, https://itsfoss.com/content/images/2023/04/Deal-with-ISO-not-detected-in-Qemu.png 938w" sizes="(min-width: 720px) 720px"></figure><p>Next, you will be asked to allocate memory and storage as per your needs. I would recommend going with a minimum of 2 cores, 4 GB of RAM, and 25 GB of storage for the desktop version:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/Allocate-RAM--cores-and-storage-space-to-VM-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="816" height="831" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Allocate-RAM--cores-and-storage-space-to-VM-in-Qemu.png 600w, https://itsfoss.com/content/images/2023/04/Allocate-RAM--cores-and-storage-space-to-VM-in-Qemu.png 816w" sizes="(min-width: 720px) 720px"><figcaption>Allocate resources to VM</figcaption></figure><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">📋</div><div class="kg-callout-text">Except for the disk space, system resources like CPU and RAM are only used when running the OS in VM.</div></div><p>And finally, give the appropriate name to your VM; once done, click on the finish button:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://itsfoss.com/content/images/2023/04/Name-your-VM-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="603" height="560" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Name-your-VM-in-Qemu.png 600w, https://itsfoss.com/content/images/2023/04/Name-your-VM-in-Qemu.png 603w"><figcaption>Name your VM</figcaption></figure><p>It will load the ISO, so you can start the installation from here. </p><p>That's done. You may enjoy your VM but you'll even enjoy it better if you enable shared folder, clipboard sharing, etc. The following few sections show how to do that.</p><h2 id="enabling-shared-folders-in-qemu-optional">Enabling shared folders in Qemu (optional)</h2><p>In this section, I will show you how you can share the existing directory of the host machine with the VM. </p><p>To do so, you'd have to perform the following:</p><ul><li>Adding a shared filesystem through VM settings in Qemu</li><li>Mounting the FS in the VM </li></ul><p>So first, open the Virtual Machine Manager from the system menu, select the VM, and click the <code>Open</code> button to manage the console:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/open-the-settings-for-VM-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1153" height="360" srcset="https://itsfoss.com/content/images/size/w600/2023/04/open-the-settings-for-VM-in-Qemu.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/open-the-settings-for-VM-in-Qemu.png 1000w, https://itsfoss.com/content/images/2023/04/open-the-settings-for-VM-in-Qemu.png 1153w" sizes="(min-width: 720px) 720px"></figure><p>Now, click on the info button, select the <code>Memory</code> and enable the shared memory:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/enable-shared-memory-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1024" height="718" srcset="https://itsfoss.com/content/images/size/w600/2023/04/enable-shared-memory-in-Qemu.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/enable-shared-memory-in-Qemu.png 1000w, https://itsfoss.com/content/images/2023/04/enable-shared-memory-in-Qemu.png 1024w" sizes="(min-width: 720px) 720px"></figure><p>Next, click on the <code>Add Hardware</code> button, select the <code>Filesystem</code> option.</p><p>Here, you'd have to do the following:</p><ul><li>Add a path to the directory you want to share in the <code>Source path</code> section</li><li>Add the name of the directory in the <code>Target path</code> section</li></ul><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/enable-shared-directory-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1477" height="801" srcset="https://itsfoss.com/content/images/size/w600/2023/04/enable-shared-directory-in-Qemu.png 600w, https://itsfoss.com/content/images/size/w1000/2023/04/enable-shared-directory-in-Qemu.png 1000w, https://itsfoss.com/content/images/2023/04/enable-shared-directory-in-Qemu.png 1477w" sizes="(min-width: 720px) 720px"></figure><p>Once done, click on the Finish button and start the VM. <a href="https://itsfoss.com/make-directories/">Create a directory</a> in the same location with the same name and location in the VM</p><p>In VM, open the terminal and use the following syntax to mount the shared directory:</p><pre><code>sudo mount -t virtiofs sharename path/to/shared/directory</code></pre><p>In my case, it was the <code>Downloads</code> directory, so I will be using the following:</p><pre><code>sudo mount -t virtiofs Downloads /home/sagar/Downloads</code></pre><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/use-shared-folders-in-Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="837" height="130" srcset="https://itsfoss.com/content/images/size/w600/2023/04/use-shared-folders-in-Qemu.png 600w, https://itsfoss.com/content/images/2023/04/use-shared-folders-in-Qemu.png 837w" sizes="(min-width: 720px) 720px"></figure><p>That's it! </p><p><strong>But that's a temporary solution.</strong> </p><p>To make it permanent, you'd have to make create an entry in <code>/etc/fstab</code> In the VM.</p><p>To do so, first, open the <code>/etc/fstab</code> config file using the following:</p><pre><code>sudo nano /etc/fstab</code></pre><p><a href="https://linuxhandbook.com/beginning-end-file-nano/?ref=itsfoss.com">Go to the end of the file in the nano text editor</a> using <code>Alt + /</code> and use the following syntax to create an entry:</p><pre><code>sharename           path/to/shared/directory    virtiofs    defaults        0       0</code></pre><p>Here's what my config looks like:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Make-shared-folders-in-Qemu-permenent.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="989" height="220" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Make-shared-folders-in-Qemu-permenent.png 600w, https://itsfoss.com/content/images/2023/04/Make-shared-folders-in-Qemu-permenent.png 989w" sizes="(min-width: 720px) 720px"></figure><p>Once done, <a href="https://linuxhandbook.com/nano-save-exit/?ref=itsfoss.com">save changes and exit from the nano</a> text editor.</p><p>Here I've shown how I created a new file in my host machine in the <code>Downloads</code> directory and the changes were reflected in my VM:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/use-shared-folder-in-Qemu.gif" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1063" height="507" srcset="https://itsfoss.com/content/images/size/w600/2023/04/use-shared-folder-in-Qemu.gif 600w, https://itsfoss.com/content/images/size/w1000/2023/04/use-shared-folder-in-Qemu.gif 1000w, https://itsfoss.com/content/images/2023/04/use-shared-folder-in-Qemu.gif 1063w" sizes="(min-width: 720px) 720px"></figure><p>So now you can use this shared folder to transfer files between the host and VM without any issues!</p><h2 id="enabling-shared-clipboard-in-qemu-optional">Enabling shared clipboard in Qemu (optional)</h2><p>To enable the shared clipboard, all you have to do is install the  <code>spice-vdagent</code> utility in the VM.</p><p>So if your VM is Ubuntu/Debian based, you can use the following:</p><pre><code>sudo apt install spice-vdagent</code></pre><p>For Arch base:</p><pre><code>sudo pacman -S spice-vdagent</code></pre><p>For Fedora-based distros:</p><pre><code>sudo yum install spice-vdagent</code></pre><p>Once you are done with the installation, <strong>reboot your VM</strong>, and the clipboard should work as intended!</p><h2 id="enabling-auto-resize-in-qemu-optional">Enabling auto-resize in Qemu (optional)</h2><p>The auto-resize feature is nothing but when you resize the VM window, the VM display will adapt to the change in size immediately:</p><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/04/Auto-resize-in-Qemu-1.gif" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1114" height="881" srcset="https://itsfoss.com/content/images/size/w600/2023/04/Auto-resize-in-Qemu-1.gif 600w, https://itsfoss.com/content/images/size/w1000/2023/04/Auto-resize-in-Qemu-1.gif 1000w, https://itsfoss.com/content/images/2023/04/Auto-resize-in-Qemu-1.gif 1114w" sizes="(min-width: 720px) 720px"></figure><p>To enable the auto-resize in Qemu, you will have to follow 2 simple steps:</p><ol><li>Click on the <code>View</code> (from top menubar)</li><li>Select the <code>Scale Display</code> option and choose the <code>Always</code> option</li></ol><figure class="kg-card kg-image-card"><img src="https://itsfoss.com/content/images/2023/05/Enable_auto-resize_in_Qemu.png" class="kg-image" alt="Install and Use Qemu on Ubuntu" loading="lazy" width="1121" height="791" srcset="https://itsfoss.com/content/images/size/w600/2023/05/Enable_auto-resize_in_Qemu.png 600w, https://itsfoss.com/content/images/size/w1000/2023/05/Enable_auto-resize_in_Qemu.png 1000w, https://itsfoss.com/content/images/2023/05/Enable_auto-resize_in_Qemu.png 1121w" sizes="(min-width: 720px) 720px"></figure><p>That's it from my side.</p><h2 id="want-to-use-a-plug-and-play-version-of-qemu">Want to use a plug-and-play version of Qemu?</h2><p>In this tutorial, I went through how you can manually install a VM in Qemu but what if I tell you that you can automate the whole process, like allocating storage, RAM, etc?</p><p>Yes, it gives the same efficiency but comes in handy when you want to create a new VM ASAP! The tool is called Quickgui and we have a dedicated tutorial for the installation:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://itsfoss.com/quickgui/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Create Virtual Machines Easily With QEMU-based Quickgui</div><div class="kg-bookmark-description">Quickgui aims to be a simpler alternative to VirtualBox and help create virtual machines quickly. Let us take a look at it.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://itsfoss.com/content/images/size/w256h256/2022/12/android-chrome-192x192.png" alt="Install and Use Qemu on Ubuntu"><span class="kg-bookmark-author">It's FOSS</span><span class="kg-bookmark-publisher">Ankush Das</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://itsfoss.com/content/images/wordpress/2021/11/Quickgui.png" alt="Install and Use Qemu on Ubuntu"></div></a></figure><p>I hope you will find this guide helpful. And if you have any queries, feel free to ask in the comments.</p>


id: NCSC-2023-0258 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0258 [1.00] [M/H] Kwetsbaarheden verholpen in Zyxel firewalls
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0258
description:
Zyxel heeft kwetsbaarheden verholpen in de firmware van firewall series ATP, USG FLEX, VPN en ZyWall/USG. Een ongeauthenticeerde kwaadwillende kan de kwetsbaarheden misbruiken om een Denial-of-Service te veroorzaken, en mogelijk ook om willekeurige code uit te voeren op het kwetsbare systeem.


id: NCSC-2023-0257 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0257
title:
NCSC-2023-0257 [1.00] [M/H] Kwetsbaarheid verholpen in GitLab Enterprise Edition en Community Edition

description:
GitLab heeft een kwetsbaarheid verholpen in GitLab 16.0.0. Een ongeauthenticeerde kwaadwillende op afstand kan de kwetsbaarheid misbruiken om toegang te krijgen tot willekeurige bestanden op de server via een path-traversal.


id: NCSC-2023-0256 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0256 [1.00] [M/H] ZeroDay kwetsbaarheid verholpen in Barracuda Email Security Gateway
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0256
description:
Barracuda Networks heeft een kwetsbaarheid verholpen in de Email Security Gateway appliance (ESG). De kwetsbaarheid stelt een ongeauthenticeerde kwaadwillende in staat om zich toegang te verschaffen tot het kwetsbare systeem en willekeurige code uit te voeren.


id: NCSC-2023-0255 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0255 [1.00] [M/H] Kwetsbaarheid verholpen in BitDefender
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0255
description:
BitDefender heeft een kwetsbaarheid verholpen in Bitdefender Total Security, Bitdefender Internet Security en Bitdefender Antivirus Plus. Een kwaadwillende kan de kwetsbaarheid misbruiken om zichzelf verhoogde rechten toe te kennen en mogelijk willekeurige code uit te voeren met rechten van het systeem.


id: NCSC-2023-0254 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0254 [1.00] [M/H] Kwetsbaarheid verholpen in VMWare NSX-T
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0254
description:
VMWare heeft een kwetsbaarheid verholpen in NSX-T. Een ongeauthenticeerde kwaadwillende kan de kwetsbaarheid misbruiken om een Cross-Site-Scripting-aanval uit te voeren op de achterliggende applicaties. Een dergelijke aanval kan leiden tot uitvoer van willekeurige code in de context van de browser van het slachtoffer, of toegang tot gevoelige informatie.


id: NCSC-2023-0253 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0253
title:
NCSC-2023-0253 [1.00] [H/H] Kwetsbaarheid verholpen in WordPress Essential Addons for Elementor-plugin

description:
Er is een kwetsbaarheid verholpen in Essential Addons for Elementor, een populaire WordPress-plugin met meer dan een miljoen actieve installaties. De kwetsbaarheid stelt ongeauthenticeerde kwaadwillenden in staat om het wachtwoord van willekeurige gebruikers op de getroffen site opnieuw in te stellen, waardoor ze in feite beheerdersrechten krijgen. De verkregen toegang kan worden misbruikt voor het verkrijgen van toegang tot gevoelige informatie of mogelijk het uitvoeren van willekeurige code op de onderliggende webserver.


id: NCSC-2023-0252 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0252 [1.00] [M/H] Kwetsbaarheid verholpen in MikroTik RouterOS
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0252
description:
MikroTik heeft een kwetsbaarheid verholpen in RouterOS. Een ongeauthenticeerde kwaadwillende kan de kwetsbaarheid mogelijk misbruiken voor het uitvoeren van willekeurige code. Hiertoe dient malafide netwerkverkeer naar het kwetsbare apparaat te worden verzonden.


id: NCSC-2023-0251 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0251 [1.00] [M/H] Kwetsbaarheid ontdekt in Keepass
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0251
description:
Er is een kwetsbaarheid ontdekt in Keepass v2. Een lokale kwaadwillende kan de kwetsbaarheid misbruiken om het master password te achterhalen. De kwaadwillende moet hiervoor al toegang hebben tot de lokale omgeving van het slachtoffer.


id: NCSC-2023-0250 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0250 [1.00] [M/H] Kwetsbaarheden verholpen in Mitel MiVoice Connect
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0250
description:
Mitel heeft kwetsbaarheden verholpen in diverse componenten van MiVoice Connect, zoals Mobility router, Edge Gateway, HQ en DVS. Een kwaadwillende kan de kwetsbaarheden misbruiken voor het uitvoeren van willekeurige code binnen de context van de applicatie. Voor het uitvoeren van code als administrator moet de kwaadwillende over voorafgaande authenticatie en autorisaties beschikken.


id: NCSC-2023-0249 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0249 [1.00] [M/H] Kwetsbaarheid verholpen in CUPS
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0249
description:
OpenPrinting heeft een kwetsbaarheid verholpen in CUPS. Een kwaadwillende met toegang tot de printserver, en de mogelijkheid om printers aan te maken, kan de kwetsbaarheid misbruiken om willekeurige code uit te voeren met rechten van de printserver.


id: NCSC-2023-0248 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0248 [1.00] [M/H] Kwetsbaarheden verholpen in cisco Small Business Switch
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0248
description:
Cisco heeft kwetsbaarheden verholpen in een aantal series Small Business Switches. De kwetsbaarheden bevinden zich in de webinterface en stellen een ongeauthenticeerde kwaadwillende in staat om een Denial-of-Service te veroorzaken, of om willekeurige code uit te voeren als root. De kwaadwillende moet hiervoor wel toegang hebben tot de webinterface van de switch. Het is goed gebruik een dergelijke interface niet publiek toegankelijk te hebben.


id: NCSC-2023-0247 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0247 [1.00] [M/H] Kwetsbaarheden verholpen in Cisco Identity Services Engine (ISE)
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0247
description:
Cisco heeft kwetsbaarheden verholpen in Identity Services Engine (ISE). Een kwaadwillende kan de kwetsbaarheden misbruiken om aanvallen uit te voeren die kunnen leiden tot de volgende categorieën schade:

Manipulatie van gegevens
Omzeilen van beveiligingsmaatregel
(Remote) code execution (Administrator/Root rechten)
Toegang tot systeemgegevens
Verhoogde gebruikersrechten


id: NCSC-2023-0246 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0246 [1.00] [M/M] Kwetsbaarheden verholpen in Tracker Software PDF-Xchange
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0246
description:
Tracker Software heeft kwetsbaarheden verholpen in PDF-Xchange. Een kwaadwillende kan de kwetsbaarheden misbruiken om een Denial-of-Service te veroorzaken en mogelijk code uit te voeren met rechten van het slachtoffer. De kwaadwillende moet hiervoor het slachtoffer misleiden een malafide bestand te openen.


id: NCSC-2023-0245 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0245 [1.00] [M/H] Kwetsbaarheden verholpen in Apple MacOS
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0245
description:
Apple heeft diverse kwetsbaarheden verholpen in MacOS. Een kwaadwillende kan de kwetsbaarheden misbruiken om aanvallen uit te voeren die kunnen leiden tot de volgende categorieën schade:

Denial-of-Service (DoS)
Omzeilen van beveiligingsmaatregel
(Remote) code execution (Administrator/Root rechten)
(Remote) code execution (Gebruikersrechten)
Toegang tot gevoelige gegevens
Toegang tot systeemgegevens
Verhoogde gebruikersrechten


id: NCSC-2023-0244 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0244 [1.00] [M/H] Kwetsbaarheden verholpen in Apple iOS en iPadOS
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0244
description:
Apple heeft kwetsbaarheden verholpen in iOS en iPadOS. Een kwaadwillende kan de kwetsbaarheden misbruiken om aanvallen uit te voeren die kunnen leiden tot de volgende categorieën schade:

Denial-of-Service (DoS)
Omzeilen van beveiligingsmaatregel
(Remote) code execution (Administrator/Root rechten)
(Remote) code execution (Gebruikersrechten)
Toegang tot gevoelige gegevens
Toegang tot systeemgegevens
Verhoogde gebruikersrechten


id: NCSC-2023-0243 [1.01]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0243 [1.01] [M/H] Kwetsbaarheden verholpen in Google Chrome en Microsoft Edge
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0243
description:
Google heeft kwetsbaarheden verholpen in Chrome. Een kwaadwillende kan de kwetsbaarheden misbruiken om een Denial-of-Service te veroorzaken, willekeurige code uit te voeren in de scope van de browser, of om toegang te krijgen tot gevoelige gegevens in de scope van de browser. De kwaadwillende moet hiervoor het slachtoffer misleiden om een malafide webpagina te openen.


id: NCSC-2023-0242 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0242 [1.00] [M/H] Kwetsbaarheden verholpen in Trend Micro Apex One
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0242
description:
Trend Micro heeft kwetsbaarheden verholpen in Apex One. Een kwaadwillende kan de kwetsbaarheden misbruiken om zich verhoogde rechten toe te kennen, toegang te krijgen tot gevoelige informatie of willekeurige code uit te voeren met rechten van het kwetsbare systeem.


id: NCSC-2023-0241 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0241 [1.00] [M/M] Kwetsbaarheden verholpen in diverse Autodesk producten
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0241
description:
Autodesk heeft kwetsbaarheden verholpen in diverse producten. Een kwaadwillende kan de kwetsbaarheden misbruiken om willekeurige code uit te voeren binnen de kwetsbare applicatie door het injecteren van een malafide pskernel.dll. Het plaatsen van een dergelijke malafide .dll-bestand vereist social engineering, of misbruik van een andere kwetsbaarheid die het plaatsen van systeembestanden mogelijk maakt zonder tussenkomst van het slachtoffer.


id: NCSC-2023-0240 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0240 [1.00] [M/H] Kwetsbaarheid verholpen in Netapp SnapCenter
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0240
description:
Netapp heeft een kwetsbaarheid verholpen in SnapCenter. Een ongeauthenticeerde kwaadwillende kan de kwetsbaarheid misbruiken om zich toegang te verschaffen tot de backup-omgeving met beheerdersrechten. Hiermee kan de kwaadwillende toegang krijgen tot gevoelige informatie, data manipuleren of een Denial-of-Service veroorzaken.


id: NCSC-2023-0239 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0239 [1.00] [M/H] Kwetsbaarheden verholpen in VMWare Aria
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0239
description:
VMWare heeft kwetsbaarheden verholpen in Aria (voorheen: vRealize). Een kwaadwillende kan de kwetsbaarheden misbruiken om willekeurige commando's uit te voeren als 'root'. Voor succesvol misbruik is het noodzakelijk dat de kwaadwillende reeds over verhoogde rechten beschikt.


id: NCSC-2023-0231 [1.01]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0231 [1.01] [M/M] Kwetsbaarheden verholpen in Mozilla Firefox en Thunderbird
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0231
description:
Mozilla heeft kwetsbaarheden verholpen in Firefox, Firefox ESR en Thunderbird. Een kwaadwillende kan de kwetsbaarheden mogelijk misbruiken om aanvallen uit te voeren die kunnen leiden tot de volgende categorieën schade:

Denial-of-Service (DoS)
Omzeilen van beveiligingsmaatregel
(Remote) code execution (Gebruikersrechten)
Spoofing
Toegang tot systeemgegevens


id: NCSC-2023-0238 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0238 [1.00] [M/H] Kwetsbaarheid verholpen in IBM Websphere
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0238
description:
IBM heeft een kwetsbaarheid verholpen in Websphere Application Server. Een kwaadwillende kan de kwetsbaarheid misbruiken om een XML External Entity-aanval uit te voeren. Door het aanbieden van een malafide XML-bestand kan de kwaadwillende een Denial-of-Service veroorzaken, of mogelijk toegang krijgen tot gevoelige informatie.


id: NCSC-2023-0237 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0237 [1.00] [M/H] Kwetsbaarheden verholpen in Aruba Networks ArubaOS en InstantOS
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0237
description:
Aruba Networks heeft kwetsbaarheden verholpen in systemen die draaien op ArubaOS en InstantOS. Een ongeauthenticeerde kwaadwillende kan de kwetsbaarheden misbruiken om een Denial-of-Service te veroorzaken, toegang te krijgen tot systeemgegevens of code uit te voeren op het onderliggende systeem met gebruikersrechten.


id: NCSC-2023-0236 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
title: NCSC-2023-0236 [1.00] [M/H] Kwetsbaarheid verholpen in de Linux Kernel
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0236
description:
Er is een kwetsbaarheid verholpen in de kernel van linux. De kwetsbaarheid bevindt zich in de module netfilter. Deze module wordt door de kernel gebruikt om netwerkverkeer te verwerken, routeren en filteren. Deze module is alleen in gebruik wanneer het betrokken systeem daadwerkelijk actief netwerkverkeer manipuleert, omdat het bijvoorbeeld als router, gateway of proxy is geconfigureerd.


id: NCSC-2023-0235 [1.00]
feed_id: f05cc384-29d3-4f78-9585-71a378c7afb4
link: https://advisories.ncsc.nl/advisory?id=NCSC-2023-0235
title:
NCSC-2023-0235 [1.00] [L/H] Firmware- en Intel Boot Guard-keys uitgelekt bij ransomware-aanval op MSI

description:
Eind maart is hardwarefabrikant MSI getroffen door een ransomware-aanval. Als gevolg van deze ransomware-aanval zijn volgens beveiligingsbedrijf Binarly private keys uitgelekt die worden gebruikt voor het digitaal ondertekenen van firmware voor moederborden. Tevens zijn private keys gecompromitteerd die door Intel Boot Guard worden gebruikt.


id: https://fedoramagazine.org/?p=38357
feed_id: dff24746-468f-4e5a-9ed3-101096eefce7
title: The Community Platform Engineering F2F 2023 Experience – Part II
link: https://fedoramagazine.org/the-community-platform-engineering-f2f-2023-experience-part-ii/
categories: Fedora Project community,CPE
description:
20 Mar 2023 &#8211; 23 Mar 2023 &#8211; Barcelona, Spain Intro If you have not already &#8211; now is the best time to read through the first part of the event report before getting into the second part here. Day 2Wednesday, 22nd March 2023The team members decided to start a bit late on the second [&#8230;]

content:
<blockquote class="wp-block-quote">
<p>20 Mar 2023 – 23 Mar 2023</p>
<cite>– Barcelona, Spain</cite></blockquote>



<span id="more-38357"></span>



<p><strong>Intro</strong></p>



<p>If you have not already – now is the best time to read through the <a href="https://fedoramagazine.org/the-community-platform-engineering-f2f-2023-experience-part-i/" target="_blank" rel="noreferrer noopener">first part</a> of the event report before getting into the second part here. </p>



<figure class="wp-block-image size-large"><a href="https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-scaled.jpg"><img decoding="async" width="1024" height="511" src="https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-1024x511.jpg" alt="" class="wp-image-38362" srcset="https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-1024x511.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-300x150.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-768x383.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-1536x766.jpg 1536w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-2048x1021.jpg 2048w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-816x407.jpg 816w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_115842-400x200.jpg 400w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><strong>From left to right</strong> – Actually, never mind – there are too many people there.</figcaption></figure>



<p><strong>Day 2</strong><br /><strong><em>Wednesday, 22nd March 2023<br /></em></strong>The team members decided to start a bit late on the second day to ensure that everyone gets enough rest after the adventurous first day. Once the joint breakfast was completed in the hotel restaurant, the members started heading off to the office by 10 in the morning. They were were gracefully served Catalonian snacks by <a href="https://accounts.fedoraproject.org/user/lenkaseg/" target="_blank" rel="noreferrer noopener">Lenka Segura</a>, Japanese souvenirs by <a href="https://accounts.fedoraproject.org/user/dkirwan/" target="_blank" rel="noreferrer noopener">David Kirwan</a>, and German sweets by <a href="https://accounts.fedoraproject.org/user/jbley/" target="_blank" rel="noreferrer noopener">Julia Bley</a> for the duration of the meeting. <a href="https://accounts.fedoraproject.org/user/mattdm/" target="_blank" rel="noreferrer noopener">Matthew Miller</a> started the second day with his talk about the Fedora Project strategy and how <a href="https://docs.fedoraproject.org/en-US/cpe/" target="_blank" rel="noreferrer noopener">Community Platform Engineering</a> fits into the picture. This talk was followed by the one by <a href="https://accounts.fedoraproject.org/user/humaton/" target="_blank" rel="noreferrer noopener">Tomas Hrcka</a> about how the <a href="https://docs.pagure.org/releng/" target="_blank" rel="noreferrer noopener">Fedora Release Engineering team</a> addresses its responsibilities. The team took a short break after the first couple of sessions, before heading into the next set.</p>



<figure class="wp-block-image size-large"><a href="https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-scaled.jpg"><img decoding="async" loading="lazy" width="1024" height="768" src="https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-1024x768.jpg" alt="" class="wp-image-38359" srcset="https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-1024x768.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-300x225.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-768x576.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-1536x1152.jpg 1536w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-2048x1536.jpg 2048w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG_1723-816x612.jpg 816w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><strong>From left to right</strong> – <a href="https://accounts.fedoraproject.org/user/lenkaseg/" target="_blank" rel="noreferrer noopener">Lenka Segura</a>  <a href="https://accounts.fedoraproject.org/user/mattdm/" target="_blank" rel="noreferrer noopener">Matthew Miller</a>  <a href="https://accounts.fedoraproject.org/user/asamalik/" target="_blank" rel="noreferrer noopener">Adam Samalik</a>  <a href="https://accounts.fedoraproject.org/user/tdawson/" target="_blank" rel="noreferrer noopener">Troy Dawson</a></figcaption></figure>



<p>After a short break, the team continued with three lightning talks delivered about <a href="https://www.redhat.com/en/technologies/cloud-computing/openshift" target="_blank" rel="noreferrer noopener">OpenShift</a> operators by <a href="https://accounts.fedoraproject.org/user/dkirwan/" target="_blank" rel="noreferrer noopener">David Kirwan</a>, <a href="https://packit.dev/" target="_blank" rel="noreferrer noopener">Packit</a> by <a href="https://accounts.fedoraproject.org/user/lachmanfrantisek/" target="_blank" rel="noreferrer noopener">Frantisek Lachman</a> and <a href="https://accounts.fedoraproject.org/user/lbarczio/" target="_blank" rel="noreferrer noopener">Laura Barcziova</a>, and <a href="https://pulpproject.org/" target="_blank" rel="noreferrer noopener">Pulp</a> by <a href="https://accounts.fedoraproject.org/user/msuchy/" target="_blank" rel="noreferrer noopener">Miroslav</a><a href="https://accounts.fedoraproject.org/user/msuchy/"> Suchy</a>. Miroslav Suchy delivered a thought-provoking talk about the scope of tooling for the Community Platform Engineering team, and how it contributes to <a href="https://fedoraproject.org/" target="_blank" rel="noreferrer noopener">Fedora Linux</a>. With that, the folks dispersed into small groups for lunch. Once they were back in the office, <a href="https://accounts.fedoraproject.org/user/csomh/" target="_blank" rel="noreferrer noopener">Hunor Csomortáni</a> delivered a talk about revisiting source-git and the plans for unifying package sources in the pipeline. This was followed by a talk by <a href="https://accounts.fedoraproject.org/user/carlwgeorge/" target="_blank" rel="noreferrer noopener">Carl George</a> about the <a href="https://docs.fedoraproject.org/en-US/epel/" target="_blank" rel="noreferrer noopener">EPEL</a> 10 plans for improvements that would be coming very soon. The final interesting talk of the day was delivered by <a href="https://accounts.fedoraproject.org/user/bstinson/" target="_blank" rel="noreferrer noopener">Brian Stinson</a> about the expectations of <a href="https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux" target="_blank" rel="noreferrer noopener">RHEL</a> from Fedora Linux and <a href="http://centosproject.org/" target="_blank" rel="noreferrer noopener">CentOS</a><a href="http://centosproject.org/"> Stream</a>.</p>



<figure class="wp-block-image size-large"><a href="https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-scaled.jpg"><img decoding="async" loading="lazy" width="1024" height="576" src="https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-1024x576.jpg" alt="" class="wp-image-38360" srcset="https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-1024x576.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-300x169.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-768x432.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-1536x864.jpg 1536w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-2048x1152.jpg 2048w, https://fedoramagazine.org/wp-content/uploads/2023/05/IMG20230321190020_01-816x459.jpg 816w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><strong>From left to right</strong> – <a href="https://accounts.fedoraproject.org/user/ekidney" target="_blank" rel="noreferrer noopener">Emma Kidney</a>  <a href="https://accounts.fedoraproject.org/user/dfan/" target="_blank" rel="noreferrer noopener">David Fan</a>  <a href="https://accounts.fedoraproject.org/user/zlopez/" target="_blank" rel="noreferrer noopener">Michal Konecny</a>  <a href="https://accounts.fedoraproject.org/user/t0xic0der/" target="_blank" rel="noreferrer noopener">Akashdeep Dhar</a>  <a href="https://accounts.fedoraproject.org/user/jnsamyak/" target="_blank" rel="noreferrer noopener">Samyak Jain</a>  <a href="https://accounts.fedoraproject.org/user/dkirwan/" target="_blank" rel="noreferrer noopener">David Kirwan</a></figcaption></figure>



<p>In the evening, at around 19:00, the team members left for a regional burger restaurant, <a href="https://www.tripadvisor.com/Restaurant_Review-g187497-d7223439-Reviews-Tio_Joe-Barcelona_Catalonia.html" target="_blank" rel="noreferrer noopener">Tio Joe’s</a>. This had been booked in advance and was near the hotel premises . With toasts made to the team members that were now united after a long time, they not only enjoyed the appetizing food that was served but also the company of the friends that they had bonded with over the course of the last couple days. </p>



<p>Once the dinner was over, at around 21:30, some folks headed back to the hotel for a respite. The remainder went to the <a href="https://trompokaraokebar.com/">Trompos </a><a href="https://trompokaraokebar.com/" target="_blank" rel="noreferrer noopener">Karaoke</a><a href="https://trompokaraokebar.com/"> Bar</a> to participate in the fun karaoke night session organized by <a href="https://accounts.fedoraproject.org/user/abompard/" target="_blank" rel="noreferrer noopener">Aurelien Bompard</a>. People queued up their songs and soon began to collaborate in performing their favorite songs in duos and in choirs.  This was a fitting end to the night, as late as 02:00, and a fun look at their singing preferences.</p>



<p><strong>Day 3</strong><strong><br /></strong><strong><em>Thursday, 23rd March 2023</em></strong></p>



<p>This was the day of departure for a lot of people. Since they would miss out on the sessions on this third day, it was incredibly light in terms of the agenda and activities. Many of the team members checked out of their hotel rooms after breakfast at 09:00 and left their luggage with the hotel before leaving for the office.</p>



<p> <a href="https://accounts.fedoraproject.org/user/smattejiet/" target="_blank" rel="noreferrer noopener">Stefan Mattejiet</a> started off the last day with his discussion session about CPE Futurespective, and understanding what direction the team should head in the coming times. The interesting discussion felt a lot inspired by the established logic model planning structure used for <a href="https://docs.fedoraproject.org/en-US/council/" target="_blank" rel="noreferrer noopener">Fedora Council</a> community initiatives. This structure starts off with planning the general objectives first and then going back to the implementation details later. </p>



<figure class="wp-block-image size-large"><a href="https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-scaled.jpg"><img decoding="async" loading="lazy" width="1024" height="768" src="https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-1024x768.jpg" alt="" class="wp-image-38358" srcset="https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-1024x768.jpg 1024w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-300x225.jpg 300w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-768x576.jpg 768w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-1536x1152.jpg 1536w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-2048x1536.jpg 2048w, https://fedoramagazine.org/wp-content/uploads/2023/05/20230323_104914-816x612.jpg 816w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><strong>From left to right</strong> – <a href="https://accounts.fedoraproject.org/user/arrfab" target="_blank" rel="noreferrer noopener">Fabian Arrotin</a>  <a href="https://accounts.fedoraproject.org/user/james/" target="_blank" rel="noreferrer noopener">James Antill</a>  <a href="https://accounts.fedoraproject.org/user/asaleh/" target="_blank" rel="noreferrer noopener">Adam Saleh</a>  <a href="https://accounts.fedoraproject.org/user/carlwgeorge/" target="_blank" rel="noreferrer noopener">Carl George</a>  <a href="https://accounts.fedoraproject.org/user/humaton/" target="_blank" rel="noreferrer noopener">Tomas Hrcka</a></figcaption></figure>



<p>The next session was hosted by <a href="https://accounts.fedoraproject.org/user/amoloney/" target="_blank" rel="noreferrer noopener">Aoife Moloney</a> who kicked off an interesting discussion about the limited-scope projects that the team undertakes and the maintainers for the applications that the team takes care of. The members participated in pointing out the things that currently work great and those that could use some improvements. This was the last planned session for the day and the group assembled to be a part of the “Community Platform Engineering family picture”. After that, they dispersed into small groups to have their lunches in their preferred places. </p>



<p>With no more planned talks after lunchtime, the team members were divided into smaller groups for breakout rooms to participate in more detailed discussions. <a href="https://accounts.fedoraproject.org/user/zlopez" target="_blank" rel="noreferrer noopener">Michal Konecny</a> lead the one for the infrastructure and release engineering team. </p>



<figure class="wp-block-image size-large"><a href="https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories.jpeg"><img decoding="async" loading="lazy" width="1024" height="653" src="https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories-1024x653.jpeg" alt="" class="wp-image-38361" srcset="https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories-1024x653.jpeg 1024w, https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories-300x191.jpeg 300w, https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories-768x490.jpeg 768w, https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories-816x520.jpeg 816w, https://fedoramagazine.org/wp-content/uploads/2023/05/Group-Stories.jpeg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption"><strong>From left to right</strong> – <a href="https://accounts.fedoraproject.org/user/zlopez/" target="_blank" rel="noreferrer noopener">Michal Konecny</a>  <a href="https://accounts.fedoraproject.org/user/carlwgeorge/" target="_blank" rel="noreferrer noopener">Carl George</a>  <a href="https://accounts.fedoraproject.org/user/t0xic0der/" target="_blank" rel="noreferrer noopener">Akashdeep Dhar</a>  <a href="https://accounts.fedoraproject.org/user/dkirwan/" target="_blank" rel="noreferrer noopener">David Kirwan</a>  <a href="https://accounts.fedoraproject.org/user/nphilipp/" target="_blank" rel="noreferrer noopener">Nils Philippsen</a>  <a href="https://accounts.fedoraproject.org/user/arrfab/" target="_blank" rel="noreferrer noopener">Fabian Arrotin</a>  <a href="https://accounts.fedoraproject.org/user/tdawson/" target="_blank" rel="noreferrer noopener">Troy Dawson</a>  <a href="https://accounts.fedoraproject.org/user/dherrera/" target="_blank" rel="noreferrer noopener">Diego Herrera</a></figcaption></figure>



<p>The team started slowly thinning down even more in the late afternoon, with the members bidding farewell to each other in the office and returning to the hotel. Some members decided to stay longer to explore Barcelona a bit more. Others began collecting their luggage from the hotel and leaving for the airport. With “goodbyes” waved to teammates and “resolves” about the next thing, the members departed from the face-to-face meeting with a new zeal and energy to contribute in an even better way to the community. </p>



<p>Even with minor hiccups and some teammates not being able to join the event, the meeting event turned out to be a grand success – both in uniting the members and in strategizing the team’s efforts. The members of the team surely look forward to the next time they get together. </p>


id: https://fedoramagazine.org/?p=38259
feed_id: dff24746-468f-4e5a-9ed3-101096eefce7
title: Make use of Btrfs snapshots to upgrade Fedora Linux with easy fallback
link: https://fedoramagazine.org/make-use-of-btrfs-snapshots-to-upgrade-fedora-linux-with-easy-fallback/
categories: FAQs and Guides,btrfs,snapshot,system-upgrade
description:
Use a Btrfs snapshot as a fallback in case of any problems with a system upgrade. Think of it as a "save game" for your computer!

content:
<p>Back in 2018, a <a href="https://fedoramagazine.org/use-lvm-upgrade-fedora/" target="_blank" rel="noreferrer noopener">previous article</a> demonstrated how to use LVM to clone the root filesystem before upgrading Fedora Linux so as to have a fallback in the unlikely event that something goes wrong. Today, the default Fedora Workstation install uses Btrfs. Now you can use a Btrfs snapshot to make creating a bootable fallback much easier. Note that converting or migrating a system to Btrfs from another filesystem is outside the scope of this article.</p>



<span id="more-38259"></span>



<h2 class="wp-block-heading">Check that root filesystem is Btrfs</h2>



<p>This example uses a Pinebook aarch64 laptop. Before proceeding, first make sure that Btrfs is being used for the root (system) filesystem. Not every spin or image uses Btrfs by default.</p>



<pre class="wp-block-preformatted">$ df -T
Filesystem     Type     1K-blocks     Used Available Use% Mounted on
devtmpfs       devtmpfs      4096        0      4096   0% /dev
tmpfs          tmpfs       998992        0    998992   0% /dev/shm
tmpfs          tmpfs       399600     6360    393240   2% /run
/dev/mmcblk2p3 btrfs     56929280 39796116  15058348  73% /
tmpfs          tmpfs       998996       24    998972   1% /tmp
tmpfs          tmpfs      5242880        0   5242880   0% /var/lib/mock
/dev/mmcblk2p3 btrfs     56929280 39796116  15058348  73% /f34
/dev/mmcblk2p3 btrfs     56929280 39796116  15058348  73% /home
/dev/mmcblk2p2 ext4        996780   551888    376080  60% /boot
/dev/mmcblk2p1 vfat        194348    31648    162700  17% /boot/efi
tmpfs          tmpfs       199796      100    199696   1% /run/user/1000
tmpfs          tmpfs       199796       84    199712   1% /run/user/0</pre>



<h2 class="wp-block-heading">List the existing Btrfs subvolumes</h2>



<p>The above example output shows that the file system mounted on “root” (“/”) is type Btrfs. Notice that three mountpoints show the same backing device and the same <em>Used</em> and <em>Available</em> blocks. This is because they are parts (subvolumes) mounted from a single Btrfs filesystem. The <em>/f34</em> subvolume is my bootable snapshot from last year.</p>



<p>A default Fedora Btrfs install creates one Btrfs filesystem with two subvolumes — <em>root</em> and <em>home</em> — mounted on / and /home respectively. Let’s see what other subvolumes I’ve added:</p>



<pre class="wp-block-preformatted">$ sudo btrfs subvol list /
ID 272 gen 110428 top level 5 path root
ID 273 gen 110426 top level 5 path home
ID 300 gen 109923 top level 5 path f34
ID 301 gen 95852 top level 5 path home.22Jul26
ID 302 gen 95854 top level 5 path f36.22Jul26</pre>



<p>There is an <em>f34</em> subvol from the last system-upgrade and two readonly snapshots of <em>home</em> and <em>f36</em>. The easiest way to add and delete snapshots is to mount the Btrfs root. I will update the system and create a new snapshot of the current f36 <em>root</em> subvolume. If you have renamed your <em>root</em> subvolume, then you presumably know enough to adjust the following example accordingly for your system.</p>



<h2 class="wp-block-heading">Create the Btrfs fallback snapshot</h2>



<pre class="wp-block-preformatted">$ sudo dnf update --refresh
... lots of stuff updated (reboot if kernel updated)
$ sudo mkdir -p /mnt/root
$ sudo mount /dev/mmcblk2p3 /mnt/root
$ cd /mnt/root
$ ls
f34  f36.22Jul26  home  home.22Jul26  root
$ sudo btrfs subvol snapshot root f36
Create a snapshot of 'root' in './f36'</pre>



<p>Because Btrfs snapshots are filesystem based, it is not necessary to “sync” before the snapshot, as I recommended for LVM. To boot from the new subvol as a fallback, you will need to edit /mnt/root/f36/etc/fstab with your favorite editor. If you are a beginner, nano is a dirt simple text editor with minimal features. Here are some lines from my <em>fstab</em> file:</p>



<pre class="wp-block-preformatted">LABEL=PINE		/    btrfs   subvol=root,compress=zstd:1        1 1
UUID=e31667fb-5b6f-48d9-aa90-f2fd6aa5f005 /boot ext4    defaults        1 2
UUID=75DB-5832          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
LABEL=PINE		/home    btrfs   subvol=home,compress=zstd:1    1 1
LABEL=SWAP swap			swap	discard=once	0 0</pre>



<p>Change <em>subvol=root</em> to <em>subvol=f36</em>. This change is to the file in the snapshot, not your production <em>fstab</em>. You can compare them with <kbd>diff /etc/fstab /mnt/root/f36/etc/fstab</kbd>. In my case, I also deleted my <em>f34</em> snapshot from last year with <kbd>sudo btrfs subvol delete f34</kbd>.</p>



<h2 class="wp-block-heading">Test the Btrfs fallback snapshot</h2>



<p>Now you are ready to test the fallback. You could use <a href="https://fedoramagazine.org/setting-kernel-command-line-arguments-with-fedora-30/" target="_blank" rel="noreferrer noopener">grubby</a> or edit an entry in /boot/loader/entries to change <em>subvol=root</em> to <em>subvol=f36</em>. But in the interest of safety for beginners, I will have you edit the GRUB entry at boot time instead. Check out  <a href="https://fedoramagazine.org/boot-earlier-kernel/" target="_blank" rel="noreferrer noopener">this article on GRUB</a> for tips on getting to the GRUB menu.  Once you are there, press the <strong>e</strong> key to edit the default kernel entry. Don’t worry — your changes are in volatile memory only. If you mess up, reboot to start over. Just like with fstab, find <em>subvol=root</em> and change it to <em>subvol=f36</em>. Press <strong>F10</strong> or <strong>Ctrl</strong>+<strong>X</strong> to boot your modified entry. With these changes, the system should boot into your new snapshot. Look at /etc/fstab to make sure you are booting from the right subvol, or enter <kbd>mount | grep subvol</kbd> to see what subvolume is mounted on “/”. </p>



<h2 class="wp-block-heading">Do the Fedora Linux system upgrade</h2>



<p>If your fallback is working, reboot back to your normal root filesystem (and confirm as above). Then proceed with the standard system-upgrade outlined on the <a href="https://docs.fedoraproject.org/en-US/quick-docs/dnf-system-upgrade/" target="_blank" rel="noreferrer noopener">wiki page</a>. TIP: Before running <kbd>dnf system-upgrade reboot</kbd>, make another snapshot of root. Call it something like <em>root.dl</em>. That way, you don’t have to download five gigabytes of packages again should you discover that there wasn’t enough free space. The snapshot will not take up any additional space because all but the downloaded packages are shared with <em>root</em> and <em>f36</em>. About that sharing of disk blocks … <br /><br /><kbd>dnf system-upgrade</kbd> gets confused about free space as reported by Btrfs because the f36 files in the <em>root</em> subvolume use the same disk locations as the same files in the <em>f36</em> subvolume. So removing them from the <em>root</em> subvolume during the upgrade process doesn’t actually free up any space. If you run out of space, and you reboot — the graphical user interface (GUI) won’t start. Use <strong>Ctrl</strong>+<strong>Alt</strong>+<strong>F2</strong> to login on a text console and practice your command line interface skills. Figuring out what to remove to free up space or how to expand the root filesystem is beyond the scope of this article (mine is often on an LVM volume and can be expanded). Having more than 50% free for the upgrade is a safe bet.</p>



<h2 class="wp-block-heading">Recovery</h2>



<p>Should something go wrong, you can reboot and edit the GRUB entry to boot the fallback. If you are a beginner, you’ll want some hand holding if you do end up needing to change the GRUB entry on disk (so you don’t have to edit at each boot). It is straight forward to delete or rename the broken <em>root</em> subvol.  Snapshot the <em>f36</em> subvol (or the <em>root.dl</em> snapshot) to try the system-upgrade process again. Here is an example of starting over after booting into the fallback system on subvol f36:</p>



<pre class="wp-block-preformatted">$ mount | grep subvol
$ sudo mount /dev/mmcblk2p3 /mnt/root
$ cd /mnt/root
$ sudo mv root root.failed
$ sudo btrfs subvol snapshot f36 root
Create a snapshot of 'f36' in './root'

Don't forget to edit /mnt/root/root/etc/fstab to change the subvol mounted on "/" to "root".</pre>



<p>As it turns out, the new kernel-6.2.11 for f38 did not boot on my Pinebook after the system-upgrade!  (Don’t worry, ARM is an alternative CPU architecture for Fedora Linux — this is very unlikely to happen to you on a mainstream device.) I was indeed able to boot back to f36 by editing the GRUB entry for kernel-6.2.10 at boot time as described above. I am now using f38 again — but with kernel-6.2.10 from f36. </p>



<p><strong>Update</strong>: <em>kernel-6.2.12 is out and it works on the Pinebook.</em></p>



<h2 class="wp-block-heading">Expiration</h2>



<p>As you update the f38 system, it will eventually want to delete the last f36 kernel from /boot. That is normally not a problem, as by that time you have settled into f38, and the f36 snapshot is just an archive.  If you want to keep your fork (f36 snapshot) bootable indefinitely, you should preserve a working f36 kernel under /boot. The simplest way to do so is to set <em>installonly_limit=0</em> in /etc/dnf/dnf.conf and manually remove old kernels. It is simple and safe (but annoying).<br /><br />Outline of a more complex solution (not for beginners): Run <kbd>find /boot -name "*fc36*"</kbd> to list all the kernel and GRUB files for your f36 subvolume snapshot that are under /boot (which is not in the snapshot). Copy them to a backup location (I would mount the f36 subvolume and copy to a backup directory there). While booted from f38, for each f36 kernel version, use dnf to remove that specific kernel version (for example, <kbd>dnf remove kernel-core-5.19.11-200.fc36</kbd>).  Do not remove the f38 kernels! Now restore the f36 kernels you saved to /boot. The f38 system doesn’t know about f36 kernels anymore, and it will not remove them from /boot.<br /><br />The problem with that method is the danger of accidentally removing the running f38 kernel. If anyone has a better method, let me know in the comments.</p>



<h2 class="wp-block-heading">Future directions</h2>



<p>Those comfortable with modifying GRUB entries might consider creating a snapshot subvolume named <em>f38</em>, modifying the current GRUB entry to boot into that, rebooting, and running the system-upgrade in that subvolume. Then always name the subvol for the root filesystem after the Fedora Linux release it contains. I did not do that for this article for two reasons.</p>



<ol>
<li>Naming the current active subvolume <em>root</em> matches the Fedora Linux default.</li>



<li>Sticking with <em>root</em> for the current subvol does not require any permanent changes outside of the normal system-upgrade procedure.</li>
</ol>



<p>As this article has demonstrated, readonly snapsnots are useful as local restore points in case things go wrong when making significant system changes (such as a system release upgrade). These snapshots can also be sent to a remote backup using Btrfs’ <em>send</em> subcommand. (And if the remote backup device already contains previous backups, Btrfs can do an incremental send that only transmits changed files to save time and space.) If you intend to archive these snapshots long term, the key to not getting confused about which ones are which and what order to restore them is to use a consistent naming convention. See the article on <a href="https://fedoramagazine.org/btrfs-snapshots-backup-incremental/" target="_blank" rel="noreferrer noopener">Btrfs snapshots for backup</a> for more information about using Btrfs’ <em>send</em> command to create backups.</p>


id: https://fedoramagazine.org/?p=38200
feed_id: dff24746-468f-4e5a-9ed3-101096eefce7
title: Use FIDO U2F security keys with Fedora Linux
link: https://fedoramagazine.org/use-fido-u2f-security-keys-with-fedora-linux/
categories: FAQs and Guides,CTAP,CTAP1,FIDO,FIDO2,Security Key,U2F,W3C,WebAuthn,YubiKey
description:
A FIDO U2F security key is a small USB and/or NFC based device. It is a hardware security token with modules for many security related use-cases. There are several brands of FIDO compliant keys, including NitroKey, SoloKey v2, and YubiKey. FIDO, in contrast to proprietary protocols like Yubico OTP, is hardware token agnostic and the [&#8230;]

content:
<p>A FIDO U2F security key is a small USB and/or NFC based device. It is a hardware security token with modules for many security related use-cases. There are several brands of FIDO compliant keys, including NitroKey, SoloKey v2, and YubiKey. FIDO, in contrast to proprietary protocols like Yubico OTP, is hardware token agnostic and the tools used are manufacturer independent.</p>



<p>This post introduces the FIDO protocol(s) and shows how to install and enable a FIDO U2F security key as an alternative authentication factor for logging into a terminal, GDM, or authenticating for sudo.</p>



<span id="more-38200"></span>



<p>For YubiKeys, especially older ones <em>without</em> FIDO2/U2F support, see the previous post titled “<a href="https://fedoramagazine.org/how-to-use-a-yubikey-with-fedora-linux/">How to use a YubiKey with Fedora Linux</a>“.</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-fedora-magazine wp-block-embed-fedora-magazine"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="c3WsreIZcz"><a href="https://fedoramagazine.org/how-to-use-a-yubikey-with-fedora-linux/">How to use a YubiKey with Fedora Linux</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" title="“How to use a YubiKey with Fedora Linux” — Fedora Magazine" src="https://fedoramagazine.org/how-to-use-a-yubikey-with-fedora-linux/embed/#?secret=10dooDXm0Y#?secret=c3WsreIZcz" data-secret="c3WsreIZcz" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>



<p>This post will not cover storing OpenPGP keys or X.509 certificates because those features are hardware dependent and not part of the FIDO U2F standard.</p>



<h2 class="wp-block-heading">Keep a backup security key</h2>



<p>As soon as you start working with security tokens you have to account for the potential to lock yourself out of accounts tied to these tokens. As hardware security tokens are unique and designed to be extremely hard to copy you cannot just make a backup of it like you can with software vaults like KeePass or AndOTP. Consequently, all registrations you make with your primary key you should immediately repeat with a second backup key that you will store in a secure location, maybe even a safe.</p>



<p>In practice this means you will need to register both hardware tokens with your Linux and web accounts, generate OpenSSH private keys twice, and upload both OpenSSH public keys to the servers and services you use (for example, GitHub).</p>



<p>Should you lose a key, you’ll want to use your second key to sign in on every service the keys are registered with, remove the lost key, and register a new one. This is especially true for password-less logins using a FIDO2 protocol.</p>



<h2 class="wp-block-heading">FIDO2, U2F and the FIDO Alliance</h2>



<p>FIDO2 is a collection of standards maintained by the <a href="https://fidoalliance.org" target="_blank" rel="noreferrer noopener">FIDO Alliance</a>. The FIDO Alliance hopes to eventually get rid of passwords altogether and instead provide procedures to authenticate users securely through multiple factors but without the need for passwords.</p>



<p>The standard consists of the World Wide Web Consortium’s (W3C) Web Authentication (WebAuthn) and the FIDO Alliance’s Client-to-Authenticator Protocol (CTAP). WebAuthn is a standard API to request and process public key challenges for authentication. With this, browsers send a challenge to a client which then produces a response with a private key that the challenger then verifies using a previously exchanged public key. How the challenge answer is produced is unknown to the service and it is controlled by the CTAP. The user might be prompted for several verification methods like biometrics, PIN, or presence check (or some combination of these methods). These checks are the same for authentication as they are when registering the key with the service.</p>



<p>A access PIN to protect any interaction with the hardware token is optional and it is unset by default. Most keys will self-invalidate after eight sequential failed attempts at entering the access PIN. The only way to recover an invalidated key and set a new PIN is to reset the key. However, when a key is reset, all its service registrations will be lost!</p>



<p>A FIDO2 key also supports the FIDO U2F protocol (now renamed CTAP1). This protocol is designed for second- or multi-factor (but not password-less) authentication. Linux’s PAM authentication system can also be configured to use the U2F protocol. Although FIDO U2F is not designed for password-less authentication, the U2F PAM module does allow password-less authentication.</p>



<h2 class="wp-block-heading">Security implications</h2>



<p>FIDO2 / U2F works by tying the security key to your user account. Most keys have a basic presence-check which is enabled / used by default. They typically perform a presence-check by lighting up and prompting you to touch the key. A FIDO2 PIN is optional and it will be unset by default. When the key is registered for signing in to your Linux account or for using sudo, it is sufficient to have the device and key physically present. A FIDO2 PIN is an important additional verification step to ensure that only you can use the key for authentication.</p>



<blockquote class="wp-block-quote">
<p>Wait! Now I have to keep track of an additional PIN? Isn’t this just a shorter password?</p>
<cite>The concerned reader</cite></blockquote>



<p>A FIDO2 PIN is not a password. It is a short, easy-to-remember phrase. This is not a problem because:</p>



<ol>
<li>You need physical access to the key <em>and</em> you need to know the PIN.</li>



<li>Failing to enter the PIN eight times will invalidate the key which makes it hard to brute-force.</li>
</ol>



<p>On the contrary, you can now use a secure password stored in a password manager that you don’t need to remember.</p>



<p>A 2016 case study by Google, titled “<em><a href="http://fc16.ifca.ai/preproceedings/25_Lang.pdf" target="_blank" rel="noreferrer noopener">Security Keys: Practical Cryptographic Second Factors for the Modern Web</a></em>“, shows security keys effectively protect users from password reuse, phishing and man-in-the-middle attacks.</p>



<h2 class="wp-block-heading">User authentication using PAM</h2>



<p>Local system authentication uses <a href="https://www.redhat.com/sysadmin/pluggable-authentication-modules-pam" target="_blank" rel="noreferrer noopener">Pluggable Authentication Modules (PAM)</a>. The PAM module for U2F devices (and hence authentication) is <em>pam_u2f</em>. Whether your key supports FIDO2 or FIDO U2F will depend on its firmware version and hardware model.</p>



<p>The setup is as follows:</p>



<ol>
<li>Install the PAM module.</li>



<li>Register a key with your user account.</li>



<li>Use <em>authselect</em> to activate smart card support in PAM.</li>
</ol>



<p><a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_authentication_and_authorization_in_rhel/configuring-user-authentication-using-authselect_configuring-authentication-and-authorization-in-rhel" target="_blank" rel="noreferrer noopener">Authselect</a> is a tool for configuring PAM with reproducible profiles. By using authselect’s profiles, manually altering configuration files under the /etc/pam.d directory can be avoided.</p>



<h2 class="wp-block-heading">Dependencies</h2>



<p>The required packages are available in the official repositories.</p>



<pre class="wp-block-preformatted">[…]$ sudo dnf install pam-u2f pamu2fcfg fido2-tools</pre>



<h3 class="wp-block-heading">Set a FIDO2 PIN on your key</h3>



<p>The FIDO2 standard defines an optional PIN for access protection. There is no PUK or other way to restore a lost or invalidated PIN so make sure you have a backup approach for authentication. If the PIN is invalidated through sequential entry of invalid PINs, the only way to recover is to reset the key. However, resetting your key removes all its credentials and disconnects it from all previously registered services.</p>



<p>The <em>fido2-tools</em> package contains a tool to set the FIDO2 PIN of your key: <em>fido2-token</em>. Get a list of currently connected FIDO2 devices with <kbd>fido2-token -L</kbd> and set a new pin with <kbd>fido2-token -C </path/to/device></kbd>:</p>



<pre class="wp-block-preformatted">[…]$ fido2-token -L
/dev/hidraw1: vendor=0x1050, product=0x0407 (Yubico YubiKey OTP+FIDO+CCID)
[…]$ fido2-token -C /dev/hidraw1
Enter current PIN for /dev/hidraw1: 
Enter new PIN for /dev/hidraw1:</pre>



<h3 class="wp-block-heading"><strong>Register the security key with your local account(s)</strong></h3>



<p>Use the tool <em>pamu2fcfg</em> to retrieve a configuration line that goes into ~/.config/Yubico/u2f_keys. <em>pam_u2f</em> is a Yubico-provided, generic module for U2F keys, hence the Yubico specific default configuration path. Each configuration line in this file consists of a username and a key-specific credential / config part separated by colons. Be sure to only use one line per user.</p>



<pre class="wp-block-preformatted">fedora-user:owBYtPIH2yzjlSQaRrVcxB...Pg==,es256,+presence+pin[:another key for this user]</pre>



<p>If the key is PIN protected you’ll be asked to enter the PIN for this operation. Use the following for the initial registration of your first key:</p>



<pre class="wp-block-preformatted">[…]$ mkdir -p ~/.config/Yubico
[…]$ pamu2fcfg --pin-verification > ~/.config/Yubico/u2f_keys</pre>



<p>To add another key (for example, your backup key) to this single-user configuration, use the following command:</p>



<pre class="wp-block-preformatted">[…]$ pamu2fcfg --nouser --pin-verification >> ~/.config/Yubico/u2f_keys</pre>



<p><em>pam_u2f</em> also supports the use of a central authentication file. In that case, be sure to use one line per user and to keep all the keys of a given user on the same line. If two lines reference the same username only the last one will be used! Have a look at the <a href="https://manpages.org/pam_u2f/8" target="_blank" rel="noreferrer noopener">pam_u2f man page</a> for all available options.</p>



<h2 class="wp-block-heading">Configure PAM with authselect</h2>



<p><strong><a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_authentication_and_authorization_in_rhel/configuring-user-authentication-using-authselect_configuring-authentication-and-authorization-in-rhel" target="_blank" rel="noreferrer noopener">authselect</a></strong> is a tool for controling your system’s PAM configuration. It introduces profiles as an additional layer of abstraction. One authselect profile can change several PAM configuration files. Profiles have parameters that control additional features and behaviors like enabling FIDO U2F security keys. A detailed tour of <em>authselect</em> is planned for a future article.</p>



<p>Display the currently active <em>authselect</em> profile. With the SSSD (System Security Service Daemon) profile selected and U2F support enabled, the output might resemble the following:</p>



<pre class="wp-block-preformatted">[…]$ authselect current
Profile ID: sssd
Enabled features:
- with-pam-u2f</pre>



<p>Activate FIDO U2F support in PAM using <em>authselect</em> with the <em>with-pam-u2f</em> flag:</p>



<pre class="wp-block-preformatted">[…]$ sudo authselect select sssd with-pam-u2f</pre>



<p>If you also want to use your fingerprint reader you have to enable both features:</p>



<pre class="wp-block-preformatted">[…]$ sudo authselect select sssd with-pam-u2f with-fingerprint</pre>



<p>This activates the <em>sssd</em> profile with <em>pam_u2f</em> and fingerprint reader support. For example, when using sudo on a terminal with the above authselect profile configuration, you’ll first be asked for a fingerprint and if that fails for the U2F key. GDM, however, will use the U2F key first.</p>



<h2 class="wp-block-heading">Unlocking the GNOME keyring daemon</h2>



<p>When using biometrics, a U2F key, or any other method that does not require a passphrase to sign in to GNOME, the <em>Login</em> keyring cannot be unlocked automatically. This is because, by default, the keyring passphrase is set to the same value as your login passphrase. Normally, PAM passes your login passphrase to the keyring daemon. Since you are not entering a passphrase when authenticating via methods such as biometrics or U2F keys, there is no passphrase for PAM to pass to the keyring daemon. There is no straight forward solution to this problem.</p>



<p>If you use LUKS encryption for your home partition and operate a single-user system, you could remove the passphrase from your keyring. This will leave your gnome keyring unencrypted at the file level. But it will still be encrypted at the block level by LUKS. LUKS encryption is equivalent to the default file-based keyring encryption on a single-user system since the keyring’s encryption is only designed to protect its contents from offline access. The keyring will be decrypted / unlocked after login either way and any runtime application or malware can potentially access the keyring’s contents after it is unlocked. Since LUKS is also an offline protection mechanism, it can be considered an equivalent alternative to the keyring’s normal file-based encryption.</p>



<p>LUKS encryption and the keyring’s normal file-based encryption are not equivalent if your system is used by multiple users. In the case of a multi-user system with the keyrings protected only by LUKS, any user with authorization to decrypt the disk and boot the system will be able to access any other user’s keyring on that same system.</p>



<p>Removing the GNOME <em>Login</em> keyring passphrase is straight forward. Just set a new empty password and the keyring will be unlocked and it will be stored unencrypted at the file level. The graphical utility <em>seahorse</em> (also called <em>Passwords and Keys</em>) can be used to set a blank password on your GNOME <em>Login</em> keyring.</p>



<h2 class="wp-block-heading">Lookout and other use-cases</h2>



<p>Upcoming articles will explore how to use FIDO2/U2F keys for unlocking LUKS-encrypted disks using the U2F Dracut plugin.</p>



<p>OpenSSH 8.2+ supports the use of <em>ed25519-sk</em> security keys. This topic has already been touched upon in the previous article titled “<a href="https://fedoramagazine.org/how-to-use-a-yubikey-with-fedora-linux/">How to use a YubiKey with Fedora Linux</a>“.</p>



<p>Note that FIDO2/U2F is an authentication standard. There are other use-cases for security tokens (primarily established by Yubico) like (T)OTP, PIV (for x509 key management) or OpenPGP which are not covered in general but on a hardware by hardware basis.</p>


