1、建立samba共享,共享目錄為/data,要求:描述完整的過程
1)共享名為shared,工作組為magedu
2)添加組develop,添加用戶gentoo,centos和Ubuntu,其中gentoo和centos以develop為附加組,Ubuntu不屬于develop組,密碼均為用戶名
3)添加samba用戶gentoo,centos和Ubuntu,密碼均為mageedu
4)此samba共享shared僅允許develop組具有寫權限,其他用戶只能以只讀方式訪問;
5)此samba共享服務僅允許來自192.168.68.0/16網絡的主機訪問;
yum -y install samba samba-client#安裝samba
vim /etc/samba/smb.conf [shared]
workgroup = magedu
hosts allow = 192.168.68.0/24
comment = shared
path = /data
write list = +develop
writable = yes
public =yes
[root@localhost ~]# groupadd develop
[root@localhost ~]# useradd ubuntu
[root@localhost ~]# useradd gentoo -G develop
[root@localhost ~]# useradd centos -G develop
[root@localhost ~]# smbpasswd -a gentoo
[root@localhost ~]# smbpasswd -a ubuntu
[root@localhost ~]# smbpasswd -a centos
[root@localhost ~]# pdbedit -L
gentoo:1001:
centos:1002:
ubuntu:1000:
[root@localhost ~]# setfacl -m g:develop:rwx /data/ #修改權限使得develop組的用戶能有修改權限
[root@localhost ~]# getfacl /data/
getfacl: Removing leading ‘/’ from absolute path names
# file: data/
# owner: root
# group: root
user::rwx
group::r-x
group:develop:rwx
mask::rwx
other::r-x
測試
[root@localhost ~]# smbclient //192.168.68.150/shared -U gentoo
Enter SAMBA\gentoo’s password:
Domain=[LOCALHOST] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: \> ls
.?????????????????????????????????? D??????? 0? Sun Nov 19 20:23:22 2017
..???????????????????????????????? DR??????? 0? Sun Nov 19 20:23:22 2017
17811456 blocks of size 1024. 16273628 blocks available
smb: \> lcd /etc
smb: \> put fstab
putting file fstab as \fstab (34.9 kb/s) (average 34.9 kb/s)
smb: \> exit
在samba server端
[root@localhost ~]# cd /data/
[root@localhost data]# ls
fstab
同樣的在windows端輸入\\smaba_server的ip\共享的目錄別名
2、搭建一套文件vsftp文件共享服務,共享目錄為/ftproot,要求:描述完整過程
1)基于虛擬用戶的訪問形式
2)匿名用戶只允許下載,不允許上傳
3)禁錮所有用戶于其家目錄當中
4)限制最大并發連接數200
5)匿名用戶的最大傳輸速率512KB/s
6)虛擬用戶的賬號存儲在mysql數據庫中
7)數據庫通過NFS進行共享
虛擬用戶登錄:FTP的專有用戶有兩種方式實現虛擬用戶,本地數據文件和數據庫服務器
使用虛擬用戶登錄FTP,只能訪問FTP服務器提供的資源,大大曾強了系統的安全
[root@localhost centos]# yum -y install openssl-devel mariadb-server pam-devel
源碼安裝PAM-MYSQL
[root@localhost ~]# wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
[root@localhost pam_mysql-0.7RC1]# ./configure –with-mysql=/usr/local/ –with-openssl –with-pam=/usr –with-pam-mods-dir=/usr/lib64/security
報錯:configure: error: Cannot locate mysql client library. Please check your mysql installation.
[root@localhost pam_mysql-0.7RC1]# ln -s /usr/local/mysql /usr/lib64/mysql/
[root@localhost pam_mysql-0.7RC1]# ln -s /usr/local/mysql/include/mysql /usr/include/mysql
?
[root@localhost pam_mysql-0.7RC1]# make && make install
[root@localhost mysql]# yum -y install vsftpd #安裝vsftpd
將虛擬用戶的賬號存在數據庫中:
[root@localhost mysql]# systemctl start mariadb
MariaDB [(none)]> create database vsftpd;
MariaDB [(none)]> use vsftpd;
Database changed
MariaDB [vsftpd]> create table users (
-> id int auto_increment not null primary key,
-> name char(30) not null,
-> password char(48) binary not null );
MariaDB [vsftpd]> desc users;
+———-+———-+——+—–+———+—————-+
| Field??? | Type???? | Null | Key | Default | Extra????????? |
+———-+———-+——+—–+———+—————-+
| id?????? | int(11)? | NO?? | PRI | NULL??? | auto_increment |
| name???? | char(30) | NO?? |???? | NULL??? |??????????????? |
| password | char(48) | NO?? |???? | NULL??? |??????????????? |
+———-+———-+——+—–+———+—————-+
3 rows in set (0.00 sec)
MariaDB [vsftpd]> insert into users(name,password) values (‘jerry’,password(‘123456’));
MariaDB [vsftpd]> flush privileges;
MariaDB [vsftpd]> grant select on vsftpd.* to ‘vsftpd’@’192.%.%.%’ identified by ‘magedu’;
編輯pam文件
[root@localhost ~]# vim /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=vsftpd passwd=mageedu host=192.168.68.150 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=mageedu host=192.168.68.150 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
創建系統用戶
[root@localhost ~]# useradd -s /sbin/nologin -d /ftproot/ vuser
[root@localhost ~]# chown vuser:vuser /ftproot/
[root@localhost ~]# ll -d /ftproot/
drwxr-xr-x. 2 vuser vuser 6 Nov 19 22:01 /ftproot/
配置/etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.mysql
anon_upload_enable=NO #不允許匿名用戶上傳文件
anonymous_enable=YES#允許匿名用戶訪問
chroot_local_user=YES #禁錮所有用戶于其家目錄當中
max_clients=200#限制最大并發連接數200
anon_max_rate=512000#匿名用戶的最大傳輸速率512KB
guest_enable=YES #允許來賓賬號登錄
guest_username=vuser#指定來賓賬戶名
然后重啟vsftpd
systemctl restart vsftpd
?
測試:
[root@localhost ~]# ftp 192.168.68.150
發現報錯:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
網上解決方法:在vsftpd.conf中添加allow_writeable_chroot=YES
從2.3.5之后,vsftpd增強了安全檢查,如果用戶被限定在了其主目錄下,則該用戶的主目錄不能再具有寫權限了!如果檢查發現還有寫權限,就會報該錯誤。
?
[root@localhost ~]# ftp 192.168.68.150
Connected to 192.168.68.150 (192.168.68.150).
220 (vsFTPd 3.0.2)
Name (192.168.68.150:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> lcd /root
Local directory now /root
ftp> put fstab
local: fstab remote: fstab
227 Entering Passive Mode (192,168,68,150,166,213).
550 Permission denied.?? #不能上傳
ftp> get fstab
local: fstab remote: fstab
227 Entering Passive Mode (192,168,68,150,224,175).
150 Opening BINARY mode data connection for fstab (465 bytes).
226 Transfer complete.
465 bytes received in 0.000479 secs (970.77 Kbytes/sec)? #能夠下載
ftp> exit
221 Goodbye.
將/ftproot基于nfs共享
[root@localhost centos]# yum -y install nfs-utils
[root@localhost centos]# mkdir /ftproot
[root@localhost centos]# vim /etc/exports
/ftproot 192.168.0.0/16(rw,sync)
Ro 該主機對該共享目錄有只讀權限
Rw 該主機對該共享目錄有讀寫權限
Root_squash 客戶機用root用戶訪問該共享文件夾時,將root用戶映射成匿名用戶
No_root_squash 客戶機用root訪問該共享文件夾時,不映射root用戶
All_squash 客戶機上的任何用戶訪問該共享目錄時都映射成匿名用戶
Anonuid 將客戶機上的用戶映射成指定的本地用戶ID的用戶
Anongid 將客戶機上的用戶映射成屬于指定的本地用戶組ID
Sync 資料同步寫入到內存與硬盤中
Async 資料會先暫存于內存中,而非直接寫入硬盤
Insecure 允許從這臺機器過來的非授權訪問
[root@localhost centos]# exportfs -r#使其生效
[root@localhost pam.d]# systemctl start nfs
檢查:[root@localhost ~]# showmount -e 192.168.68.150
Export list for 192.168.68.150:
/ftproot 192.168.0.0/16
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88764
寫的很詳細,贊