Update Linux Notes: Expanded System Information and User Management Sections

- **System Information**:
  - Added detailed commands for hardware and software information, including `lscpu`, `lshw`, `hwinfo`, and more.
  - Included commands for finding binary paths, counting words and lines in files.

- **User Management**:
  - Introduced new sections for managing user information, super user management, and switching users.
  - Added commands for listing users, disabling root login via SSH, managing sudo permissions, and switching users with sudo or root privileges.

This update provides a more comprehensive overview of system and user management tasks.
This commit is contained in:
Fabrice Quenneville 2024-09-23 17:51:52 -04:00
parent 3d175495c9
commit 51c0b3312c

View File

@ -4,20 +4,156 @@
- [Linux](#linux) - [Linux](#linux)
- [Table of Contents](#table-of-contents) - [Table of Contents](#table-of-contents)
- [Basic Commands](#basic-commands) - [System Information](#system-information)
- [Hardware Information](#hardware-information)
- [Software Information](#software-information)
- [User Management](#user-management)
- [User Information](#user-information)
- [Super User Management](#super-user-management)
- [Switch User](#switch-user)
- [USB Devices](#usb-devices) - [USB Devices](#usb-devices)
- [Test USB Key](#test-usb-key) - [Test USB Key](#test-usb-key)
## System information ## System Information
## Basic Commands ### Hardware Information
To gather detailed information about your hardware, use the following commands:
- **`lscpu`**: Displays information about the CPU architecture, including details about cores, threads, and CPU family.
- **`lshw`**: Provides a comprehensive listing of hardware components. Use `lshw -short` for a more concise view.
- **`hwinfo`**: Offers detailed information about hardware components and can be more verbose than `lshw`.
- **`lsscsi`**: Lists SCSI devices, including disks and other SCSI-attached hardware.
- **`lsusb`**: Shows information about USB devices connected to your system.
- **`lsblk`**: Lists block devices such as hard drives and their partitions.
- **`df -H`**: Displays disk space usage in a human-readable format.
- **`fdisk -l`**: Lists all partitions on the system.
- **`dmidecode`**: Retrieves hardware information from the BIOS. Use:
- `dmidecode -t processor` for CPU details
- `dmidecode -t memory` for RAM details
- `dmidecode -t bios` for BIOS information
### Software Information
**Finding Path to Binary**
To find the location of an executable binary, use:
```bash
type composer
```
This command will show the path to the `composer` executable if it's available in your `PATH`.
**Number of Words in a File**
To count the number of words in a file, use:
```bash
wc filepath
```
This command will show the number of words along with other details like lines and characters.
**Number of Lines in a File**
To count the number of lines in a file, use:
```bash
wc -l filepath
```
This command will display the number of lines in the specified file.
## User Management
### User Information
**List Users**
To list all users from the `/etc/passwd` file, use:
```bash
awk -F':' '{ print $1}' /etc/passwd | sort
```
This command extracts the usernames from the `/etc/passwd` file and sorts them in alphabetical order.
### Super User Management
**Disable Root Login**
To disable root login via SSH, perform the following steps:
1. **Edit the SSH Configuration File:**
```bash
nano /etc/ssh/sshd_config
```
Comment out the line containing `PermitRootLogin` by adding a `#` at the beginning of the line.
2. **Change Shell for Root User:**
```bash
nano /etc/passwd
```
Find the line starting with `root` and change `/bin/bash` to `/sbin/nologin` to disable login for the root user.
Save and close the file. Restart the SSH service for changes to take effect:
```bash
systemctl restart ssh
```
**Sudo Management**
**Add User to Sudo Group**
```bash
adduser fabrice sudo
```
**Update Sudoers File to Remove Password Requirement**
Edit the sudoers file:
```bash
visudo
```
Add the following line to allow the user to execute commands without a password:
```bash
fabrice ALL=(ALL) NOPASSWD:ALL
```
### Switch User
**Switch to Another User as Sudoer**
```bash
sudo -i -u postgres
```
This command switches to the `postgres` user with sudo privileges.
**Switch to Another User as Root**
```bash
su - postgres
```
This command switches to the `postgres` user with root privileges.
## USB Devices ## USB Devices
### Test USB Key ### Test USB Key
**Device Information** **Device Information**
Check if the system recognizes the device and show the latest system messages related to USB devices being connected.
Check if the system recognizes the device and show the latest system messages related to USB devices being connected:
```bash ```bash
lsusb lsusb
@ -25,7 +161,8 @@ dmesg | tail -n 20
``` ```
**Find Mount Points and Device Information** **Find Mount Points and Device Information**
Identify mount points, partitions, and other relevant details of mounted devices.
Identify mount points, partitions, and other relevant details of mounted devices:
```bash ```bash
lsblk -f lsblk -f
@ -35,73 +172,90 @@ mount | grep /dev/sd
``` ```
**Print Detailed Information About the USB Key** **Print Detailed Information About the USB Key**
View detailed partition and disk information.
View detailed partition and disk information:
```bash ```bash
fdisk -l /dev/sdc fdisk -l /dev/sdc
``` ```
**Test the File System** **Test the File System**
Check and repair the filesystem on the USB key.
Check and repair the filesystem on the USB key:
```bash ```bash
fsck /dev/sdc1 fsck /dev/sdc1
``` ```
**Test Data Integrity** **Test Data Integrity**
Perform read/write tests to ensure the integrity of the USB key.
Perform read/write tests to ensure the integrity of the USB key:
1. **Unmount the USB Key** (if mounted): 1. **Unmount the USB Key** (if mounted):
```bash ```bash
umount /media/fabrice/BD48-F8BB umount /media/fabrice/BD48-F8BB
``` ```
2. **Write Test**: 2. **Write Test**:
```bash ```bash
dd if=/dev/zero of=/dev/sdc bs=4M count=256 status=progress dd if=/dev/zero of=/dev/sdc bs=4M count=256 status=progress
``` ```
3. **Read Test**: 3. **Read Test**:
```bash ```bash
dd if=/dev/sdc of=/dev/null bs=4M count=256 status=progress dd if=/dev/sdc of=/dev/null bs=4M count=256 status=progress
``` ```
**Check for Bad Blocks** **Check for Bad Blocks**
Identify any bad sectors on the USB key.
Identify any bad sectors on the USB key:
- **Read-only test**: - **Read-only test**:
```bash ```bash
badblocks -v /dev/sdc badblocks -v /dev/sdc
``` ```
- **Non-destructive read-write test**: - **Non-destructive read-write test**:
```bash ```bash
badblocks -nsv /dev/sdc badblocks -nsv /dev/sdc
``` ```
- The -n option performs a non-destructive read-write test. - The `-n` option performs a non-destructive read-write test.
- The -s option shows progress. - The `-s` option shows progress.
- The -v option is for verbose output. - The `-v` option is for verbose output.
**Perform a SMART Test** **Perform a SMART Test**
Run SMART diagnostics to test the health of the USB key.
Run SMART diagnostics to test the health of the USB key:
1. **Start a short SMART test**: 1. **Start a short SMART test**:
```bash ```bash
smartctl -t short /dev/sdc smartctl -t short /dev/sdc
``` ```
2. **View test results**: 2. **View test results**:
```bash ```bash
smartctl -a /dev/sdc smartctl -a /dev/sdc
``` ```
**Benchmark the Speed** **Benchmark the Speed**
Measure the read speed of the USB key.
Measure the read speed of the USB key:
```bash ```bash
hdparm -t /dev/sdc hdparm -t /dev/sdc
``` ```
**Unmount and Safely Remove** **Unmount and Safely Remove**
Unmount the USB key and safely remove it from the system.
Unmount the USB key and safely remove it from the system:
```bash ```bash
umount /mnt/usb umount /mnt/usb