Linux 用戶賬號與許可權管理

来源:https://www.cnblogs.com/llife/archive/2019/08/20/11380864.html
-Advertisement-
Play Games

在 Linux 中,如何管理用戶、管理許可權?請看下文,謝謝配合。 ...


CentOS-Logo

Linux中,如何管理用戶、管理許可權?請看下文,謝謝配合。


用戶、組概述

用戶分類

  • 超級用戶:root,人為交互最高許可權用戶,system為最高許可權用戶。

  • 普通用戶:通過管理管理員創建,許可權受到一定限制。

  • 程式用戶:不允許登陸,維持系統或某個程式的正常運行。

用戶配置文件

  • /etc/passwd:包含用戶賬號的基本信息
[root@localhost ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
賬號名稱:密碼占位符:UID:GID:用戶說明:家目錄:登陸shell
  • /etc/shadow:包含用戶賬號的密碼信息(影子文件)
[root@localhost ~]# head -1 /etc/shadow
root:$6$4/ne8o5V38hiA2jr$6SclA1hllj8FPXqyMtfof5T4NMH1gJeDQ31AfoR4wapYPBQWlbZQKKPkuUBWoqgwA1GsuHW.1lTg59tyfrwvC/::0:99999:7:::
賬號名稱:密碼信息:上次修改密碼的時間:密碼最短有效天數:密碼最長有效天數:提前7天警告密碼將過期:密碼過期後多少天內禁用此用戶:賬號失效時間:保留欄位
  • 個別詳細解釋

密碼信息:MD5加密的密碼字串信息;為*!!時,被鎖定,不能登陸;為空,無密碼。

上次修改密碼的時間:表示從1970年1月1日到最近一次修改密碼那天所間隔的天數。

密碼最短有效天數:修改密碼後,最少經過多少天才能再次修改密碼。預設為0,不限制。

密碼最長有效天數:修改密碼後,經過該天數,必須再次修改密碼。預設為99999,不限制。

提前7天警告密碼將過期:預設值為7

賬號失效時間:指定用戶賬號作廢的天數,從1970年1月1日起計算。

組分類

  • 基本組(私有組):伴隨用戶的創建而創建,與用戶同名。用戶只能屬於一個基本組,在/etc/passwd中查看。

  • 附加組(公共組):用戶可屬於多個附加組,在/etc/group中查看。

組配置文件

  • /etc/group:包含組的基本信息

  • /etc/gshadow:包含組的密碼信息

1.查詢root組包含哪些用戶

[root@localhost ~]# grep "^root" /etc/group
root:x:0:

2.查詢那些組包含root用戶

[root@localhost ~]# grep "root" /etc/group
root:x:0:

UID 和 GID

  • UID:用戶識別號
用戶 UID 範圍
root 0
程式用戶 1 ~ 999
普通用戶 1000 ~ 60000
  • GID:組識別號

用戶、組管理

useradd

  • 添加用戶賬號

-u:指定UID
-d:指定家目錄位置
-e:指定賬戶失效時間,YYYY-MM-DD天數
-g:指定基本組名稱或GID
-G:指定附加組
-M:不創建宿主目錄
-s:指定用戶的登陸shell/bin/bash可登錄,/sbin/nologin不可登錄。

[root@localhost ~]# useradd  -d /zhangsan zhangsan
[root@localhost ~]# useradd -e 2020-01-01 -s /sbin/nologin ftpuser

用戶賬號初始配置文件

  • 來源:模板目錄/etc/skel
  • 用途:可以做一些自動運行的後臺管理任務
[root@localhost ~]# ls -a /zhangsan/
.  ..  .bash_logout  .bash_profile  .bashrc

.bash_logout:每次退出登陸時執行
.bash_profile:用戶每次登陸時被執行
.bashrc:每次載入/bin/bash時執行,包括登錄系統。

  • 每次登出時清空歷史記錄
[root@localhost ~]# vi .bash_logout
# ~/.bash_logout
history -c

passwd

  • 設置、更改密碼

-d:清空賬戶密碼
-l:鎖定賬戶
-S:查看賬戶狀態
-u:解鎖賬戶

[root@localhost ~]# passwd zhangsan
Changing password for user zhangsan.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd -l zhangsan
Locking password for user zhangsan.
passwd: Success
[root@localhost ~]# passwd -S zhangsan
zhangsan LK 2019-08-20 0 99999 7 -1 (Password locked.)
[root@localhost ~]# passwd -u zhangsan
Unlocking password for user zhangsan.
passwd: Success
[root@localhost ~]# passwd -S zhangsan
zhangsan PS 2019-08-20 0 99999 7 -1 (Password set, SHA512 crypt.)
[root@localhost ~]# passwd -d zhangsan
Removing password for user zhangsan.
passwd: Success

usermod

  • 修改賬戶屬性,參數類似useradd

-u:修改用戶UID
-d:修改家目錄位置
-e:修改賬號失效時間
-s:指定用戶的登陸shell
-l:更改用戶登陸名稱
-L:鎖定賬戶
-U:解鎖賬戶
-g:修改用戶的基本組(或GID
-G:修改用戶的附加組(或GID

[root@localhost ~]# tail -1 /etc/passwd
zhangsan:x:1001:1001::/zhangsan/:/bin/bash
[root@localhost ~]# mv /zhangsan/ /home/
[root@localhost ~]# usermod -d /home/zhangsan/ zhangsan
[root@localhost ~]# tail -1 /etc/passwd
zhangsan:x:1001:1001::/home/zhangsan/:/bin/bash
[root@localhost ~]# usermod -L zhangsan
[root@localhost ~]# passwd -S zhangsan
zhangsan LK 2019-08-20 0 99999 7 -1 (Password locked.)
[root@localhost ~]# usermod -U zhangsan
[root@localhost ~]# passwd -S zhangsan
zhangsan PS 2019-08-20 0 99999 7 -1 (Password set, SHA512 crypt.)
[root@localhost ~]# usermod -l lisi zhangsan
[root@localhost ~]# tail -1 /etc/passwd
lisi:x:1001:1001::/home/zhangsan/:/bin/bash

userdel

  • 刪除用戶賬號

-r:同時刪除家目錄

[root@localhost ~]# userdel -r zhangsan
[root@localhost ~]# ls /home/zhangsan
ls: cannot access /home/zhangsan: No such file or directory

groupadd

  • 添加組賬號

-g:指定GID

[root@localhost ~]# groupadd ftpusers
[root@localhost ~]# tail -1 /etc/group
ftpusers:x:1001:
[root@localhost ~]# groupadd -g 1005 sftpusers
[root@localhost ~]# tail -2 /etc/group
ftpusers:x:1001:
sftpusers:x:1005:

gpasswd

  • 添加、設置、刪除組成員

-a:添加組成員
-d:刪除組成員
-M:指定組成員,多個以,分隔,會覆蓋原有的。

[root@localhost ~]# useradd ftp1
[root@localhost ~]# useradd ftp2
[root@localhost ~]# useradd ftp3
[root@localhost ~]# useradd ftp4
[root@localhost ~]# useradd ftp5
[root@localhost ~]# echo "000000" | passwd --stdin ftp1
Changing password for user ftp1.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "000000" | passwd --stdin ftp2
Changing password for user ftp2.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "000000" | passwd --stdin ftp3
Changing password for user ftp3.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "000000" | passwd --stdin ftp4
Changing password for user ftp4.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "000000" | passwd --stdin ftp5
Changing password for user ftp5.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# gpasswd -a ftp1 ftpusers
Adding user ftp1 to group ftpusers
[root@localhost ~]# gpasswd -a ftp2 ftpusers
Adding user ftp2 to group ftpusers
[root@localhost ~]# groups ftp1
ftp1 : ftp1 ftpusers
[root@localhost ~]# groups ftp2
ftp2 : ftp2 ftpusers
[root@localhost ~]# grep "^ftpusers" /etc/group
ftpusers:x:1001:ftp1,ftp2
[root@localhost ~]# gpasswd -M ftp3,ftp4,ftp5 ftpusers
[root@localhost ~]# grep "^ftpusers" /etc/group
ftpusers:x:1001:ftp3,ftp4,ftp5

groupdel

  • 刪除組賬號
[root@localhost ~]# groupdel sftpusers

用戶、組查詢

id

  • 查詢用戶賬號的身份標識

id [username]

[root@localhost ~]# id root
uid=0(root) gid=0(root) groups=0(root)

groups

  • 查詢用戶賬號所屬的組

groups [username]

[root@localhost ~]# groups root
root : root

finger

  • 查詢用戶賬號的登陸屬性

finger [username]

[root@localhost ~]# finger root
Login: root                             Name: root
Directory: /root                        Shell: /bin/bash
On since Tue Aug 20 16:58 (CST) on pts/0 from 192.168.128.1
   6 seconds idle
No mail.
No Plan.

可能需要安裝:yum install finger -y

w、who、users

  • 查詢當前主機的用戶登陸情況
[root@localhost ~]# w
 17:35:34 up  2:48,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.128.1    16:58    6.00s  0.21s  0.01s w
[root@localhost ~]# who
root     pts/0        2019-08-20 16:58 (192.168.128.1)
[root@localhost ~]# users
root

last

  • 查詢最近登陸的用戶信息
[root@localhost ~]# last
root     pts/0        192.168.128.1    Tue Aug 20 17:36   still logged in
reboot   system boot  3.10.0-693.el7.x Tue Aug 20 17:36 - 17:37  (00:01)
reboot   system boot  3.10.0-693.el7.x Fri Aug 16 17:18 - 17:21  (00:03)

wtmp begins Fri Aug 16 17:18:08 2019

文件、目錄許可權及歸屬

概述

[root@promote ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 846 Aug 16 17:15 /etc/passwd

-:文件類型,-普通文件、d目錄、b塊設備文件、c字元設備文件、l鏈接文件。
rw-:User,屬主用戶對文件的訪問許可權。
r--:Group,屬組內成員對文件的訪問許可權。
r--:Other,其他用戶對文件的訪問許可權。
.:與SELinux有關
root:文件屬主
root:文件屬組

chmod

  • 設置文件、目錄許可權

chmod [ugoa] [+-=] [rwx] 文件或目錄

ugoau宿主,g屬組,o其他用戶,a所有用戶。
+-=+增加許可權,-減少許可權,=設置對應的許可權。
rwxr讀,w寫,x執行。

[root@localhost ~]# ls -l test.txt
-rw-r--r--. 1 root root 0 Aug 20 18:19 test.txt
[root@localhost ~]# chmod g+w,o+w test.txt
[root@localhost ~]# ls -l test.txt
-rw-rw-rw-. 1 root root 0 Aug 20 18:19 test.txt

chmod nnn 文件或目錄

nnn:代表ugo分別設置的許可權值

u g o
4 2 1
[root@localhost ~]# chmod 644 test.txt
[root@localhost ~]# ls -l test.txt
-rw-r--r--. 1 root root 0 Aug 20 18:19 test.txt

chown

  • 設置文件、目錄的歸屬

chown [選項] [屬主][:[屬組]] 文件或目錄

-R:遞歸修改

[root@localhost ~]# mkdir /opt/test
[root@localhost ~]# touch /opt/test/test{1,2}.txt
[root@localhost ~]# ls -lR /opt/
/opt/:
total 0
drwxr-xr-x. 2 root root 40 Aug 20 18:26 test

/opt/test:
total 0
-rw-r--r--. 1 root root 0 Aug 20 18:26 test1.txt
-rw-r--r--. 1 root root 0 Aug 20 18:26 test2.txt
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# echo "000000" | passwd --stdin zhangsan
Changing password for user zhangsan.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# chown -R zhangsan /opt/test/
[root@localhost ~]# ls -lR /opt/
/opt/:
total 0
drwxr-xr-x. 2 zhangsan root 40 Aug 20 18:26 test

/opt/test:
total 0
-rw-r--r--. 1 zhangsan root 0 Aug 20 18:26 test1.txt
-rw-r--r--. 1 zhangsan root 0 Aug 20 18:26 test2.txt
[root@localhost ~]# chown -R :zhangsan /opt/test/
[root@localhost ~]# ls -lR /opt/
/opt/:
total 0
drwxr-xr-x. 2 zhangsan zhangsan 40 Aug 20 18:26 test

/opt/test:
total 0
-rw-r--r--. 1 zhangsan zhangsan 0 Aug 20 18:26 test1.txt
-rw-r--r--. 1 zhangsan zhangsan 0 Aug 20 18:26 test2.txt
[root@localhost ~]# chown -R root:root /opt/test/
[root@localhost ~]# ls -lR /opt/
/opt/:
total 0
drwxr-xr-x. 2 root root 40 Aug 20 18:26 test

/opt/test:
total 0
-rw-r--r--. 1 root root 0 Aug 20 18:26 test1.txt
-rw-r--r--. 1 root root 0 Aug 20 18:26 test2.txt

umask

  • 指定用戶在新建文件或目錄時的許可權預設值,指預設值需要減掉的許可權。777-022=755,666-022=644。

預設:umask 022


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Windows下的Linux子系統安裝,WSL 2下配置docker 安裝WSL 2需要Windows 10版本是Build 18917或更高,首先先確認系統版本已升級。 在“啟用或關閉Windows功能”中啟用以下兩個選項:Windows虛擬機平臺、適用於Linux的Windows子系統。 啟用這 ...
  • windows系統: 部署了一個Tomcat8.5.15,bin目錄下startup.bat執行,結果提示Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these envi ...
  • 查看zabbix_agentd.log時出現下列錯誤 [root@4gronghe_110 ~]# tail /var/log/zabbix/zabbix_agentd.log 1266:20140523:063554.157 no active checks on server [127.0.0. ...
  • 什麼是虛擬機? 虛擬化是在Host操作系統之上導入Guest操作系統的技術。這種技術最初是一個啟示,因為它允許開發人員在同一主機上運行的不同虛擬機中運行多個操作系統。這消除了對額外硬體資源的需求。 虛擬機或虛擬化的優點是: 多個操作系統可以在同一臺機器上運行 在出現故障的情況下,維護和恢復很容易 由 ...
  • 總結: 遇到的問題:No support for locale: zh_CN.utf8 可能的解決方法:1.sudo dpkg-reconfigure locale (重新配置?) 2.上一步失敗,提示locale 未安裝,於是安裝之: sudo dpkg-reconfigure locale 3. ...
  • (一) 軟體介紹由俄羅斯人lgor Sysove開發,為開源軟體。支持高併發:支持幾萬併發連接(特別是靜態小文件業務環境) 資源消耗少:在3萬併發連接下開啟10個Nginx線程消耗記憶體不到200M 支持非同步網路I/O事件模型epoll(Linux2.6+) apache(select)功能介紹 1. ...
  • SPI協議簡述 SPI,是英語Serial Peripheral interface的縮寫,顧名思義就是串列外圍設備介面。由Motorola首創。SPI介面主要應用在 EEPROM,FLASH,實時時鐘,AD轉換器,還有數字信號處理器和數字信號解碼器之間。SPI,是一種高速的,全雙工,同步的通信匯流排 ...
  • 一、安裝時間同步工具 二、同步時間 1、修改時區 2、同步時間 3、寫入硬體時間 4、自動時間同步 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...