我們有時會遇到這樣的需求,限制一個Linux用戶,讓他只能在指定的目錄下進行添加、修改、刪除操作,並且只能使用sftp登錄服務器,不能用ssh操作。這些可以通過配置sftp服務實現。
提供sftp服務的有vsftpd和internal-sftp,這里用的是系統自帶的internal-sftp,操作步驟如下:
1.創建新用戶ui,禁止ssh登錄,不創建家目錄
useradd -s /sbin/nologin -M www
2.設置用戶密碼
passwd www
3.創建用戶的根目錄,用戶就只能在此目錄下活動
mkdir /home/www
4.設置目錄權限,目錄的權限設定有兩個要點:
目錄開始一直往上到系統根目錄為止的目錄擁有者都只能是root
目錄開始一直往上到系統根目錄為止都不可以具有群組寫入權限
chown root:root /home/www chmod 755 /home/www
5.配置sshd_config
vim /etc/ssh/sshd_config
6.修改為下面內容,保存退出
#注釋掉這行 #Subsystem sftp /usr/libexec/openssh/sftp-server #添加在配置文件末尾 Subsystem sftp internal-sftp #指定使用sftp服務使用系統自帶的internal-sftp Match User www #匹配用戶,如果要匹配多個組,多個組之間用逗號分割 ChrootDirectory /home/www #用chroot將指定用戶的根目錄,chroot的含義:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/ ForceCommand internal-sftp #指定sftp命令 X11Forwarding no #這兩行,如果不希望該用戶能使用端口轉發的話就加上,否則刪掉 AllowTcpForwarding no
7.重啟sshd服務
service sshd restart
8.測試:用戶登錄后進入的是/home/www即用戶根目錄,根目錄是無法寫入的,所以先用root在/home/www新建一個ui目錄
mkdir /home/www/ui
修改目錄所有者和權限
chown ui:ui /home/www/ui chmod 777 /home/www/ui #可以在其他目錄創建軟連接指向ui目錄 #ln -s /home/www/ui /www/
sftp登錄www用戶,進入ui目錄,即可在/home/www/ui下,對文件進行添加、修改、刪除的操作
sftp -oPort=22 ui@123.56.18.72 sftp> cd ui