Linux編程 14 文件許可權(用戶列表passwd,用戶控制shadow,useradd模板與useradd命令參數介紹)

来源:https://www.cnblogs.com/MrHSR/archive/2018/09/19/9670010.html
-Advertisement-
Play Games

一. 概述 linux安全系統的核心是用戶賬戶。 創建用戶時會分配用戶ID(UID)。 UID是唯一的,但在登錄系統時不是用UID,而是用登錄名。在講文件許可權之之前,先瞭解下linux是怎樣處理用戶賬戶的。以及用戶賬戶需要的文件和工具,這樣處理文件許可權問題時,就知道如何使用它們了。 1.1 /etc ...


一. 概述

  linux安全系統的核心是用戶賬戶。 創建用戶時會分配用戶ID(UID)。 UID是唯一的,但在登錄系統時不是用UID,而是用登錄名。在講文件許可權之之前,先瞭解下linux是怎樣處理用戶賬戶的。以及用戶賬戶需要的文件和工具,這樣處理文件許可權問題時,就知道如何使用它們了。

  1.1  /etc/passwd用戶文件
    /etc/passwd 是用來將用戶的登錄名,匹配到對應的UID上。它包含了一些與用戶有關的信息。下麵截取二個片斷。如下圖所示:
        
        
    root用戶賬戶是linux系統管理員,固定分配給它的UID是0。 上面linux系統會為各種各樣的功能創建不同的用戶賬戶,而這些賬戶並不是真正的用戶。它們叫作系統賬戶,是系統上運行各種服務進程訪問資源用的特殊賬戶。root用戶UID是0,mysql用戶的UID是998。如下圖所示:
        
    linux系統賬戶預留了500以下的UID值。有些服務甚至要用特定的UID才能正常工作。在/etc/passwd文件中冒號分隔的欄位包含以下信息:

            mysql:x:998:1000::/home/mysql:/bin/bash

登錄用戶名

例如:mysql

用戶密碼

x (密碼欄位都被設置成了x)

用戶UID

998

用戶的組ID (GID)

I000

用戶的文本描述

mysql 用戶描述為空

用戶的HOME目錄位置

/home/mysql

用戶的預設shell

/bin/bash

  

  1.2  /etc/shadow 用戶文件

    /etc/shadow文件對linux系統密碼管理提供了更多的控制。只有root用戶才能訪問/etc/shadow文件。比起/etc/passwd安全許多,文件內容如下圖所示:
        
    比如讓mysql 用戶來查看該文件,是沒有這個許可權的。
        
    下是copy出來的root用戶賬戶信息:

root:$6$BSeXl2xuiNYlDwkO$X4dfd8A97XHRO9S.9KNqL/bRX4B33tIAzOu1dwiPVLDS42YqwaY8JrwYAExGPuvc42yhnMmO28VRMP.qVjYDY1::0:99999:7:::

    每條記錄都有9個欄位,字元串以冒號分隔的欄位信息如下:第一個欄位:登錄名。 第二個欄位:加密後的密碼。其它欄位以後在解讀。使用/etc/shadow,可以控制用戶多久更改一次密碼,以及什麼時候禁用該用戶賬戶(在其它欄位上設置這些功能)。

 

二. 用戶工具管理

  2.1 useradd 模板介紹

    在linux系統中添加新用戶的工具是useradd, 可以一次性創建新用戶賬戶及設置用戶HOME目錄結構。useradd命令使用系統的預設值以及命令行參數來設置用戶賬戶。系統預設值被設置在/etc/default/useradd文件中,可以定位到/etc/default/useradd文件,修改預設值。使用useradd       -D 選項查看這些預設值。如下圖所示:
        
    如果用戶不指定具體的值,使用useradd添加用戶時就會使用這些預設值。預設值解釋如下:

GROUP=100

新用戶會添加到GID為100的公共組中

HOME=/home

新用戶的HOME目錄將位於/home/loginname下

INACTIVE=-1

新用戶密碼在過期後不會被禁用

EXPIRE=

新用戶未設置過期日期

SHELL=/bin/bash

新用戶將bash shell作為預設shell

SKEL=/etc/skel

系統會將/etc/skel目錄下的內容複製到用戶的HOME目錄下

CREATE_MAIL_SPOOL=yes

系統為用戶賬戶在mail目錄下創建一個用於接收郵件的文件

    SKEL參數是指:useradd命令允許管理員創建一份預設的HOME目錄配置,然後把它作為創建新用戶HOME目錄的模板。這樣就能自動在每個新用戶的HOME目錄里放置預設的系統文件(上篇講到的系統環境變數位置)。新用戶HOME目錄下的系統文件模板。如下圖所示:
        
    在上篇中,知道了.bashrc, .bash_profile這些文件都是bash shell的標準啟動文件。系統會自動將這些預設文件複製到你創建的每個用戶HOME目錄下。我的linux系統在很久前創建了一個mysql用戶,下麵去/home/mysql下檢查有沒有這些標準啟動文件。
        
    上圖告訴我們,mysql目錄不存在,這是因為創建用戶預設情況下,useradd命令不會創建HOME目錄,需要使用useradd -m 命令來創建HOME目錄。我推測當mysql用戶沒有這些bash shell標準啟動文件時,會去繼承root用戶下的標識啟動文件。

   2.2  useradd -m
    上面mysql用戶沒有指定HOME目錄,下麵是創建一個新test用戶,並使用參數m來創建HOME目錄,並將/etc/skel目錄中的文件複製了過來,/home/test 下麵就有了標準啟動文件。如下圖所示:
        
    再次查看passwd用戶列表,多出來一個test用戶,創建的這個test除了指定了HOME目錄,其它參數都是使用的預設值(沒有指定組,密碼,過期時間)。如下圖所示:
        
    下麵是切換到test用戶下,如下圖所示:
        

   2.3 useradd 命令參數
    要想在創建用戶時改變預設值或預設行為,可以使用命令參數,下麵列出一些常用參數

參數

描述

-c comment

給新用戶添加備註

-d home_dir

為主目錄指定一個名字(如果不想用登錄名作為主目錄名)

-e expire_date

用YYYY-MM-DD格式指定一個賬戶過期日期

-f inactive_days

指定這個賬戶密碼過期後多少天,這個賬戶被禁用;0表示密碼一過期就立即禁用, 1表示禁用這個功能

-g initial_group

指定用戶登錄組GID

-m

創建用戶HOME目錄

-r

創建系統賬戶

-p passwd

指定預設密碼

    當創建用戶賬戶時,如果總需要修改某個值的話,最好還是修改一下系統的預設值,修改(useradd模板),也可以使用"useradd -D 預設參數"來修改模板,這裡就不再介紹useradd預設值參數。

 


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

-Advertisement-
Play Games
更多相關文章
  • (Network is unreachable)表示網路不可達,先ping一個外網網段檢測是否通暢,(如ping不通)檢查防火牆是否阻擋,網關是否正確,再檢查網卡配置文件(註:網卡配置順序錯誤,也可導致linux網路出問題)! 網卡配置: 網卡重啟:>ifconfig eth0 up|down>se ...
  • VPN英文全稱是“Virtual Private Network”,就是“虛擬專用網路”。可以遠程幫助用戶、分公司、商業伙伴及供應商同公司的內部網建立可信的安全連接,用於經濟有效地連接到商業伙伴和用戶的安全外聯網虛擬專用網。 搭建環境: 伺服器系統:Windows server 2008 R2 客戶 ...
  • 環境:Ubuntu 16.04 由於很久不用我的Ubuntu系統導緻密碼忘記,就想著應該有什麼辦法可以強制修改root密碼,就上百度找了一下,果然Ubuntu有辦法強制修改root密碼。 在這裡要謝謝這位博主啦。 第一步 重啟 Ubuntu ,並長按shift鍵,進入grub菜單,上下鍵選擇Ubun ...
  • windows server的伺服器遠程桌面預設埠號是3389,在工作中經常使用遠程桌面連接伺服器,但是這也是常常被黑客利用的埠號,但是如何修改掉預設埠,預防被黑客利用呢? 可以如下操作配置:很多人在使用windows操作系統的時候,由於修改埠的方法錯誤,導致自己不能遠程操作伺服器,給自己帶 ...
  • 雖然有kali linux這樣集合了很多安全工具的操作系統,但是kali的軟體源相對老舊,沒有ubuntu等主流debian系統豐富,kali預設使用su許可權進入圖形化界面也是違背linux許可權機制的體現之一,故使用主流debian系linux系統安裝安全工具集比kali更具可用性,但是許多安全工具 ...
  •     在awk中常用的內置函數大概分為:數值函數、字元函數、時間函數、二進位操作函數、數組函數、自定義函數等。 數值函數   常用的數值函數主要有int、rand、srand、sqrt等。詳細如下所示: | 函數 | 說明 | | | | | int(expr) | ...
  • 最近由於在學習STM32看到別人用寄存器編程式控制制跑馬燈,於是自己也想試一試。可是試了好久終究弄不出來。回頭看了下庫函數的調用關係才搞明白。首先通過查看GPIOA的設置函數發現設置如下: 改機構體根據結構體成員函數的大小自己形成了針對首地址的偏移量。從而與需要操作的寄存器地址偏移一一對應。通過查看設置 ...
  • 一、什麼是SSH? 簡單說,SSH是一種網路協議,用於電腦之間的加密登錄。 如果一個用戶從本地電腦,使用SSH協議登錄另一臺遠程電腦,我們就可以認為,這種登錄是安全的,即使被中途截獲,密碼也不會泄露。 最早的時候,互聯網通信都是明文通信,一旦被截獲,內容就暴露無疑。1995年,芬蘭學者Tatu ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...