1. 程式人生 > >[轉]linux系統建立SFTP使用者及設定其chroot許可權

[轉]linux系統建立SFTP使用者及設定其chroot許可權

前言:
開發專案客戶要求與三方通過sftp互動檔案,我方系統部署sftp伺服器。考慮安全,計劃對提供給三方的使用者實現chroot控制

提供sftp本次選用的是系統自帶的internal-sftp。
限制使用者只能在home目錄下活動,需要使用chroot。openssl4.8p1以後都支援chroot,當前作業系統是rehl6.6 X64,自帶openssl版本足夠。

檢視openssl版本命令:
# ssh -V

開始正題,因為接入三方很多,現計劃建立sftpusers使用者組,各三方的sftp使用者都屬於此組以便統一管理。使用者HOME目錄統一指定到/chroot目錄下。

建立使用者組
# groupadd sftpusers

配置chroot目錄

# mkdir /chroot 
# chown root:root /chroot # 因root建立,此步可省 
# chown 755 /chroot

建立新使用者
# useradd -d /chroot/DF999999 -s /bin/false -g sftpusers DF999999
注意:
-d意為指定home目錄
-g意為使用者DF999999主屬組為sftpusers。若此處為-G,則會自動建立DF999999組為使用者的主屬組。

為使用者初始化密碼
# passwd DF999999

配置使用者home目錄許可權,用於chroot控制

# chown root:root /chroot/DF999999 
# chmod 755 /chroot/DF99999

配置sshd_config
編輯 /etc/ssh/sshd_config,line132左右

 # 找到如下行,並註釋掉
 Subsystem      sftp    /usr/libexec/openssh/sftp-server
 # 新增如下幾行
 Subsystem       sftp    internal-sftp  
 Match Group sftpusers
 ChrootDirectory %h  
 ForceCommand    internal
-sftp

如上記錄說明:

Subsystem sftp internal-sftp
這行指定使用sftp服務使用系統自帶的internal-sftp

Match Group sftpusers
這行用來匹配sftpusers組的使用者,如果要匹配多個組,多個組之間用逗號分割;
當然,也可以匹配使用者
Match User DF999999
這樣就可以匹配使用者了,多個使用者名稱之間也是用逗號分割,但我們這裡按組匹配更靈活和方便.

ChrootDirectory %h
用chroot將使用者的根目錄指定到%h,%h代表使用者home目錄,這樣使用者 就只能在使用者目錄下活動。也可用%u,%u代表使用者名稱。

ForceCommand internal-sftp
指定sftp命令
6. 重啟sshd服務
# service sshd restart

重啟完畢後用戶DF999999就可以正常通過sftp客戶端登入了。
但是因為/chroot以及/chroot/DF999999都屬於root使用者組,所以無讀寫許可權。進行如下處理:

於/chroot/DF999999目錄下建立上傳目錄
# mkdir /chroot/DF999999/send

上傳目錄許可權控制

# chown DF999999:sftpusers /chroot/DF999999/send 
# chmod 777 /chroot/DF999999/send

至此,使用者可以sftp登入,並上傳檔案到send目錄下。

重要說明:
1.如果目錄下不能上傳檔案,提示沒有許可權,檢查SElinux是否關閉,可以使用如下指令關閉SElinux。修改/etc/selinux/config檔案中的SELINUX=”” 為 disabled ,然後重啟。
或:
# setenforce 0
2.chroot設定需要遵循兩個原則

由ChrootDirectory指定的目錄開始一直往上到系統根目錄為止的目錄擁有者都只能是root
由ChrootDirectory指定的目錄開始一直往上到系統根目錄為止都不可以具有群組寫入許可權
遵循如上兩個原則,我將/chroot以及/chroot/DF999999目錄設定擁有者全部為root使用者,且許可權全部為755(群組無寫入許可權)

相關推薦

[]linux系統建立SFTP使用者設定chroot許可權

前言: 開發專案客戶要求與三方通過sftp互動檔案,我方系統部署sftp伺服器。考慮安全,計劃對提供給三方的使用者實現chroot控制 提供sftp本次選用的是系統自帶的internal-sftp。 限制使用者只能在home目錄下活動,需要使用ch

linuxsftp使用者建立設定主目錄

請自行安裝openssh。本人測試版本:openssh-clients-6.4p1-8.el7.x86_64openssh-server-6.4p1-8.el7.x86_64openssh-6.4p1-8.el7.x86_64版本查詢命令:rpm -qa | grep ope

百曉生帶你玩linux系統服務搭建系列----pxe遠程安裝服務器的搭建無人值守安裝

conf fig ces sys 鏡像文件 mount size set blog 實驗環境系統環境:centos6.5:程安裝服務器WIN7:客戶端一、pxe遠程安裝服務器的搭建 安裝並開啟需要的服務,tftp,ftp,dhcp。1) yum -y install t

百曉生帶你玩linux系統服務搭建系列----SSH遠程訪問控制

登入 conf rsa nag 系列 配置 上傳 我們 shel 實驗環境:linux centos 6.5*2實驗目的:用戶登錄控制及密鑰對驗證 sshd服務默認允許root用戶登錄,當在Internet中使用時這是非常不安全的。普遍的做法是先以普通用戶遠程登入,進入安全

Linux系統中vsftpd配置如何新增vsFTPd使用者和設定許可權

/etc/vsftpd/vsftpd.conf 本身就是一個挺詳細的配置檔案,且使用『 man 5 vsftpd.conf 』則可以得到完整的引數說明。與主機較相關的設定值 connect_from_port_20=YES (NO) ftp-data 的埠; listen_port=21 vsftpd 使用的

Linux系統虛擬機管理redhat7.2的安裝

虛擬機 redhat安裝1.安裝圖形安裝命令欄輸入virt-manager進入虛擬機管理界面點擊新增選擇源路經選擇1GB內存,單核cpu,9GB硬盤設置好名稱完成虛擬機的硬件配置進入到redhat7.2安裝界面設置時間設置預裝軟件自定義劃分硬盤設置完成後,完成root密碼設置,開始安裝redhat7.2.設置

[]Linux系統調用--fcntl函數詳解

f_dupfd 呵呵 inux 種類 etl exe adl 文件描述符fd 關閉 功能描述:根據文件描述詞來操作文件的特性。 文件控制函數 fcntl -- file control頭文件: #include <unistd.h> #inc

Linux 系統中文件傳輸文件歸檔

linux中文件傳輸 歸檔 壓縮及解壓 在linux系統中,我們要進行文件的傳輸,當文件比較多又比較大的時候,我們往往需要對文件進行處理,以提高傳輸速率。如下將進行詳細的方法介紹,以解決問題。一、系統中的文件傳輸進行兩臺主機文件傳輸,首先建立兩臺主機正常通信編輯文件,設置一個ip文件存放在 /et

安裝linux系統後調優安全設置

ras sync 完成 sap ssh連接 bin 建議 歷史 2.6 環境說明: [root@server1 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@server1 ~]# uname

()Linux系統stat指令用法

技術分享 ces type ont name log div node use 原文:https://www.cnblogs.com/linux-super-meng/p/3812695.html stat指令:文件/文件系統的詳細信息顯示。 stat命令主要用於顯

linux系統常用命令統計shell特殊字符

命令 輸入 grep命令 err name 信息 通配符 輸出 鏈接 shell 特殊字符:1.通配符2.管道 1.通配符 1.1星號(*):匹配任意長度 1.2問號(?):匹配一個長度的字符 1.3方括號([......]):匹配其中指定的字符 1.4方括號([-]):匹

百曉生帶你玩linux系統服務搭建系列----DNS服務的搭建一(正向解析)

home 主配置文件 baidu 安裝環境 圖片 搭建 href ace eid DNS正向解析的搭建 實驗環境系統環境:centos6.5 安裝DNS環境軟件包rpm -ivh /mnt/Packages/bind-9.8.2-0.17.rc1.el6_4.6.x86_

百曉生帶你玩linux系統服務搭建系列----構建虛擬ApacheWeb主機

ESS host mon conf 圖片 common roo echo 端口 虛擬Web主機指的是在同一臺服務器中運行多個Web站點,其中的每一個站點實際上並不獨自占用整個服務器,因此被稱為“虛擬”Web主機。通過Web主機服務可以充分利用服務器的硬件資源,從而大大降低網

Linux系統之進程服務的控制

user db2 3.3 -a 空間 text 什麽是 phi 虛擬 1、什麽是進程? ??系統中正在運行的程序。 2、圖形的進程查看方式 ??gnome-system-monitor 3、查看進程的命令 ??whatis?ps3.1ps??查看進程 3.2ps?a??查看

青蛙學Linux系統初始化init執行級

Linux系統的啟動首先從BIOS開始,接下來Linux的載入程式將核心映像載入到記憶體,進行核心初始化。在核心初始化的最後一步,就是啟動PID為1的init程序,這個程序是系統的第一個程序,負責啟動那些開機時需要啟動的服務。 大多數的Linux發行版的init系統都是和System V相容的,所以也被稱為

Linux系統建立python虛擬環境

搭建虛擬環境 問題:如果在一臺電腦上, 想開發多個不同的專案, 需要用到同一個包的不同版本,  新版本會覆蓋以前的版本, 其它的專案就無法運行了. 解決方案 : 虛擬環境 作用 : 虛擬環境可以搭建獨立的python執行環境, 使得單個專案的執行環

Linux系統建立python虛擬環境1

搭建虛擬環境 問題:如果在一臺電腦上, 想開發多個不同的專案, 需要用到同一個包的不同版本,  新版本會覆蓋以前的版本, 其它的專案就無法運行了. 解決方案 : 虛擬環境 作用 : 虛擬環境可以搭建獨立的python執行環境, 使得單個專案的執行環

Linux建立 sftp 使用者並限定目錄

Linux 下建立 sftp 使用者並限定目錄 1、建立 sftpUser 使用者組 [[email protected] ~]# groupadd sftpUser 2、建立 sftpUser 使用者並指定目錄 [[email protected] ~]# useradd -d

Linux系統配置java環境tomcat

下載jdk地址 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下載到本地  cp -r xxx.tar.gz  目的地路徑 或者wget&n

Redis學習(一):Linux系統環境下安裝編譯Redis

一、簡介         Redis(Remote Dictionary Server)是由義大利人Salvatore Sanfilippo(網名:antirez)開發的一款記憶體快取記憶體資料庫。它是一個key-value儲存系統,它支援豐富的資料型別,如:String