每一個用戶都屬於一個用戶組,系統能夠對一個用戶組中的全部用戶進行集中管理。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」而無需再輸入本身的密碼。
使用 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
文件屬性的說明以下:
將文件屬性中的 1-9 位放大以下:
能夠看到,該文件的所屬用戶和所屬組均可以對該文件進行讀、寫以及執行操做,而組外的其餘用戶能夠對該文件進行讀操做和執行操做,而不能進行寫操做。
對於不一樣的文件類型,關於三種操做的解釋略有不一樣,見下表:
# 方式一 $ 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
$ 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
$ 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
$ 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