小白養成記——Linux中的用戶和權限管理

一、用戶組管理

每一個用戶都屬於一個用戶組,系統能夠對一個用戶組中的全部用戶進行集中管理。shell

在建立用戶時,若是未指定組,則系統會建立一個與用戶名同名的組。centos

如下是關於用戶組管理的一些基本命令:bash

  • 新建用戶組tcp

    $ groupadd <組名>
  • 刪除用戶組ui

    $ groupdel <組名>
  • 修改組名centos7

    $ groupmod -n <新的組名> <如今的組名>
  • 查看用戶組的建立信息code

    用戶組的數據保存在 /etc/group 文件中(不包含已刪除的組),所以能夠在該文件中查看全部的用戶組信息````:blog

    # 建立一個名爲"family"的組
    $ sudo groupadd family
    
    # 查看 /etc/group 文件,已有了 family 組的信息
    $ tail -n 1 /etc/group
    family:x:1002:
    
    # 將 family 組重命名爲 "family1"
    $ sudo groupmod -n family1 family
    
    # 再次查看 /etc/group 文件,組名已更改
    $ tail -n 1 /etc/group
    family1:x:1002:

二、用戶管理

  • 建立用戶遞歸

    $ useradd [-g <已存在的組名>] <用戶名>

    建立用戶時能夠指定該用戶所在的組,若是省略,則系統會默認建立一個與用戶名同名的組。rem

    建立了一個用戶後,在 /home/ 目錄中就會生成一個與用戶名同名的目錄做爲用戶主目錄。如:

    # 建立一個用戶名爲"zhangsan"的用戶
    $ sudo useradd zhangsan
    
    # 在 /home/ 目錄下自動生成了名爲"zhangsan"目錄
    $ ls /home/
    zhangsan
    
    # 同時系統也自動建立了一個名爲"zhangsan"的用戶組
    $ tail -n 1 /etc/group
    zhangsan:x:1001:
  • 設置用戶密碼

    $ passwd [<用戶名>]

    全部用戶都可使用 passwd 命令修改本身的密碼,修改時須要先輸入當前的密碼,再輸入新的密碼,且密碼中不能包含當前用戶名。如當前用戶爲 alice:

    $ passwd
    更改用戶 alice 的密碼 。
    爲 alice 更改 STRESS 密碼。
    (當前)UNIX 密碼:xxxxxxxx
    新的 密碼:xxxxxxxx
    從新輸入新的 密碼:xxxxxxxx
    passwd:全部的身份驗證令牌已經成功更新。

    也能夠爲指定用戶設置密碼,默認只有 root 用戶纔有該權限:

    $ sudo passwd zhangsan
    更改用戶 zhangsan 的密碼 。
    新的 密碼:xxxxxxxx
    從新輸入新的 密碼:xxxxxxxx
    passwd:全部的身份驗證令牌已經成功更新。

    這時是不須要輸入舊密碼的。

  • 刪除用戶

    $ userdel [-r] <用戶名>

    前面已經提到,在建立新用戶時,會在 /home/ 目錄中生成一個與用戶名同名的目錄做爲用戶主目錄,在刪除用戶時,能夠選擇是否保留該用戶主目錄:

    # 這樣的操做會刪除用戶 zhangsan,但會保留 /home/zhangsan 目錄
    $ sudo userdel zhangsan
    
    # 這樣的操做會刪除用戶 zhangsan,同時也會刪除 /home/zhangsan 目錄
    $ sudo userdel -r zhangsan

    特別地,若是系統自動生成了與用戶名同名的用戶組,則在刪除用戶時,該同名的用戶組也會被刪除。

  • 查看建立用戶的歷史信息

    在 /etc/passwd 文件中保存了用戶的建立信息(不包含已刪除的用戶):

    $ cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    ... ...
    zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
  • 切換用戶(switch user)

    $ su [-] <用戶名>

    默認切換用戶後只能得到用戶的執行權限,不能獲取其環境變量。若是須要同時獲取其環境變量,則能夠加上參數"-":

    # 輸出當前用戶的環境變量
    $ echo $PATH
    /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/alice/.local/bin:/home/alice/bin
    # 切換到 root 用戶
    $ su root
    密碼:xxxxxxxx
    # 輸出當前用戶的環境變量,能夠發現與以前的相同
    $ echo $PATH
    /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/alice/.local/bin:/home/alice/bin
    
    $ exit
    exit
    
    # 退出後從新切換到 root 用戶,此時加上"-" ,顯示了上一次的登陸時間
    $ su - root
    密碼:xxxxxxxx
    上一次登陸:五 2月 19 20:06:27 CST 2021pts/0 上
    # 輸出當前用戶的環境變量,能夠發現這時是 root 用戶的環境變量
    $ echo $PATH
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  • 查看用戶信息

    $ id <用戶名>

    能夠查看指定用戶的 id 以及所在組的 id 和名稱等信息。如:

    $ id alice
    uid=1000(alice) gid=1000(alice) 組=1000(alice),10(wheel)

    能夠看到 alice 用戶所屬的組爲 alice(組id爲1000) 和 wheel(組id爲10)。

  • 查看當前用戶名

    $ whoami
    root
    $ su alice
    $ whoami
    alice
    $ who am i
    root     pts/0        2021-02-19 20:27 (11.205.52.123)
  • 修改用戶所在的組

    $ usermod -g family zhangsan

    如將 zhangsan 移至 family 組:

    # 當前 zhangsan 位於 zhangsan 組中
    $ id zhangsan
    uid=1001(zhangsan) gid=1001(zhangsan) 組=1001(zhangsan)
    $ groups zhangsan
    zhangsan : zhangsan
    
    # 修改 zhangsan 所在組
    $ sudo usermod -g family zhangsan
    
    # 再次查看,能夠看到 zhangsan 已被移至 family 組中
    $ id zhangsan
    uid=1001(zhangsan) gid=1002(family) 組=1002(family)
    $ groups zhangsan
    zhangsan : family
  • 給普通用戶以 root 權限

    若是普通用戶在執行命令時提示"權限不夠",則能夠在命令前添加 "sudo" 以使用 root 權限再執行,此時須要輸入自身的密碼驗證。

    但並非任意普通用戶均可以使用 "sudo",詳情能夠查看 /etc/sudoers 文件。

    在 /etc/sudoers 文件中有默認以下配置:

    ## Allow root to run any commands anywhere 
    root	ALL=(ALL) 	ALL
    
    ## Allows people in group wheel to run all commands
    %wheel	ALL=(ALL)	ALL

    這代表只有 root 用戶或 wheel 組中的用戶可使用"sudo"。若是須要讓新用戶也可使用"sudo",則能夠在 /etc/sudoers 中配置該用戶或用戶組。如:

    $ visudo
    
    ## Allow root to run any commands anywhere 
    root	ALL=(ALL) 	ALL
    zhangsan ALL=(ALL) ALL

    此時用戶 zhangsan 即可以在輸入本身的密碼後使用「sudo」。

    若是被信任的用戶不但願在使用"sudo"時還要輸入密碼,則能夠設置:

    zhangsan ALL=(ALL) NOPASSWD:ALL

    這樣用戶 zhangsan 即可以直接使用「sudo」而無需再輸入本身的密碼。

三、文件權限

3.1 文件屬性說明

使用 ls -l 命令能夠查看文件(目錄)的屬性,如:

$ mkdir /home/alice/pardir && cd /home/alice/
$ touch ./pardir/a.txt ./pardir/b.txt

$ ls -l ./
drwxrwxr-x. 2 alice alice 32 2月  26 18:57 pardir

$ ls -l ./pardir/
-rw-rw-r--. 1 alice alice 0 2月  26 18:57 a.txt
-rw-rw-r--. 1 alice alice 0 2月  26 18:57 b.txt

文件屬性的說明以下:

3.2 文件的權限信息說明

將文件屬性中的 1-9 位放大以下:

能夠看到,該文件的所屬用戶和所屬組均可以對該文件進行讀、寫以及執行操做,而組外的其餘用戶能夠對該文件進行讀操做和執行操做,而不能進行寫操做。

對於不一樣的文件類型,關於三種操做的解釋略有不一樣,見下表:

3.3 修改文件的權限

# 方式一
$ chmod [選項] [{ugo}{+-=}{rwx}] <文件名>

# 方式二
$ chmod [選項] [{777}] <文件名>

經常使用的選項有 -R,即 --recursive,表示遞歸操做。

示例1:修改 a.txt 文件的權限,對所屬用戶增長執行權限,對所屬組減小寫權限,對其餘用戶增長寫權限和執行權限:

# 查看當前文件的權限信息
$ ll a.txt 
-rw-rw-r--. 1 zhangsan family 0 2月  26 18:57 a.txt

# 修改文件權限
$ chmod u+x,g-w,o+wx a.txt

# 再次查看文件的權限信息
$ ll a.txt 
-rwxr--rwx. 1 zhangsan family 0 2月  26 18:57 a.txt

示例2:修改 a.txt 文件的權限爲——所屬用戶具備讀、寫和執行權限,所屬組具備讀和執行權限,其餘用戶具備讀權限:

# 修改文件權限(方式一)
$ chmod u=rwx,g=rx,o=r a.txt

# 修改文件權限(方式二)
$ chmod 754 a.txt

# 再次查看文件的權限信息
$ ll a.txt 
-rwxr-xr--. 1 zhangsan family 0 2月  26 18:57 a.txt

3.4 修改文件的所屬用戶

$ chown [選項] <新用戶名或用戶id> <文件名>

如將 a.txt 文件的全部者由 alice 改成 zhangsan:

# 查看當前 a.txt 文件的全部者爲 alice
$ ll a.txt 
-rw-rw-r--. 1 alice alice 0 2月  26 18:57 a.txt

# 查看用戶 zhangsan 的基本信息
$ id zhangsan
uid=1001(zhangsan) gid=1002(family) 組=1002(family)

# 將 a.txt 文件的全部者改成1001號用戶,即 zhangsan
$ sudo chown 1001 a.txt 

# 再次查看 a.txt 文件的全部者,可見已經改成了 zhangsan
$ ll a.txt 
-rw-rw-r--. 1 zhangsan alice 0 2月  26 18:57 a.txt

3.5 修改文件的所屬組

$ chgrp [選項] <新組名或組id> <文件名>

如將 a.txt 文件的所屬組由 alice 改成 family:

# 查看當前 a.txt 文件的所屬組爲 alice
$ ll a.txt 
-rw-rw-r--. 1 zhangsan alice 0 2月  26 18:57 a.txt

# 將 a.txt 文件的所屬組改成1002號組,即 family
$ sudo chgrp 1002 a.txt

# 再次查看 a.txt 文件的所屬組,可見已經改成了 family
$ ll a.txt 
-rw-rw-r--. 1 zhangsan family 0 2月  26 18:57 a.txt

一些其餘的經常使用命令:CentOS7 下端口的開放控制

一、查看當前的防火牆狀態

$ firewall-cmd --state
running

二、查看當前防火牆開放了哪些端口

$ firewall-cmd --zone=public --list-ports
8080/tcp

三、開放指定端口

$ firewall-cmd --zone=public --add-port=3306/tcp --permanent
success

$ firewall-cmd --reload
success

四、關閉指定端口

$ firewall-cmd --zone=public --remove-port=3306/tcp --permanent
success

$ firewall-cmd --reload
success

五、關閉防火牆

$ systemctl stop firewalld.service
相關文章
相關標籤/搜索