0基础自学linux运维-2.7-修改vsftp权限

一、环境说明:

作系统:centOS6.5

其它设置:

关闭了iptables及selinuxyum

yum安装了nginx(存在了nginx用户)

通过附一的命令安装了vsftp,用户名字为test

默认配置文件为

[root@vm2 vuser_conf]# cat /etc/vsftpd/vuser_conf/test

local_root=/disk1/tools

local_umask=022

write_enable=YES

guest_enable=yes

guest_username=nginx

anonymous_enable=no

anon_world_readable_only=no

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes

anon_umask=022

二、vsftp虚拟用户权限设置

2.1.修改用户权限相关的知识点

local_umask

本地用户上传后文件时的umask掩码

anon_umask

虚拟用户或匿名用户上传文件时的umask掩码


没有配置file_open_mod只有local_umask和anon_umask情况下

对于目录来说最大权限是777(rwxrwxrwx)对于文件来说最大权限是666(rw-rw-rw-)

file_open_mode上传档案的权限:

为了突破umak文件最大权限不能超过666,在ssh上可以采用chmod修改,在vsftp中file_open_mode参数与shh中的chmod 功能是等效的!只不过是该用户模式下的chmod

所以你用该真实用户chmod修改权限要在他的能力范围之内,如该用户无权修改其它真实用户的文件权限(比如root用户创建的文件)

与chmod不同的是前面补多一个0,如chmod 775,那file_open_mode则为0775

该参数一般放在最后执行


2.例1 文件权限为774,目录权限为775

         因用nginx作为php和nginx的进程用户,公司网络不稳定有时用FTP上传会经常性中断,需要还需要建立一个普通的ssh用户名字为putong用sftp上传,对VSFTP中test用户所在目录也能读写,为了解决这个问题,

nginx用户和ssh用户putong共用组,可以putong用户添加多一个nginx组

组要有读写权限,那么目录就要775,文件就要774权限了

sftp上传文件也要变成

操作:

#1.添加ssh用户putong,把nginx追加到其中,最后把putong的组改为nginx

usermod -a  -G nginx putong

[root@vm2 ~]# id putong

uid=501(putong) gid=501(putong)groups=501(putong),499(nginx)

vim /etc/passwd

#修改putong ssh用户组为nginx组号499,这样建立文件用户名为putong,组为nginx

putong:x:501:499::/home/putong:/bin/bash

#2.修改vsftp中test用户的配置使用其中目录权限为775,文件权限为774

local_root=/disk1/tools

local_umask=022

write_enable=YES

guest_enable=yes

guest_username=nginx

anonymous_enable=no

anon_world_readable_only=no

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes

anon_umask=002     #改成4位也行,0002

file_open_mode=0774  #此处的0不能少,这上参数相当于chmod 774 上传文件名

#3.修改ssh用户用sftp上传文件和目录的权限

         发现sftp没有像file_open_mode这样的参数,所在只能先用sftp上传完,随便用该账号ssh登陆,chmod命令修改文件及目录权限了,find

/disk1/tools/ -type f -exec chmod 774 {} \;

因为上面把putong用户的组改为nginx,这样nginx进程也能对该目录进行读写删除操作。

         如果觉得这样做麻烦的话,可以写一个脚本定时判断目录下文件权限是否是774,如果不是就修改为774也行。


2.3.vsftp用户改变总结

#1)设置上传文件权限:

可以使用file_open_mode参数,一定要4位数字,相当于chmod命令

如:

file_open_mode=0774相当于chmod

774 当前上传文件名


#2)修改虚拟用户目录权限:

可以使用anon_umask参数,保持local_umask=022不变,权限为777-anon_umask的值。

发现一个问题有偶尔会出现不稳定的情况,other组不稳定的情况,不知道是客户端原因还是其它。

如:

         anon_umask=003,则权限的值为777-003=774


三、VSFTP虚拟用户的精确控制

3.1.cmds_allowed参数

当我们需要对某个用户进行精确控制的情况下,如除了删除命令其它都可以执行,那么就要用到cmds_allowed参数了

         因为我的是基于虚拟用户,进入虚拟用户配置目录我这里是按“附一 VSFP安装”来弄,

#1.进入虚拟目录

cd /etc/vsftpd/vuser_conf

#2.随便找一个用户,我这里是test用户,保证

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

上面4个选择是YES的,默认配置是YES了

#3.在最后面添加一个cmds_allowed=命令1,命令2,...命令n即可控制进行精确的控制了


3.2. cmds_allowed参数命令列表

cmds_allowed参数可用的命令列表如下:

# ABOR - abort a file transfer

# CWD - change working directory

# DELE - delete a remote file

# LIST - list remote files

# MDTM - return the modification time of a file

# MKD - make a remote directory

# NLST - name list of remote directory

# PASS - send password

# PASV - enter passive mode

# PORT - open a data port

# PWD - print working directory

# QUIT - terminate the connection

# RETR - retrieve a remote file

# RMD - remove a remote directory

# RNFR - rename from

# RNTO - rename to

# SITE - site-specific commands

# SIZE - return the size of a file

# STOR - store a file on the remote host

# TYPE - set transfer type

# USER - send username


# less common commands:

# ACCT* - send account information

# APPE - append to a remote file

# CDUP - CWD to the parent of the current

directory

# HELP - return help on using the server

# MODE - set transfer mode

# NOOP - do nothing

# REIN* - reinitialize the connection

# STAT - return server status

# STOU - store a file uniquely

# STRU - set file transfer structure

# SYST - return system type


3.3.例子:

1. 可以上传、重命名、建立文件(或目录),不能删除(或目录)

[root@vm6 vuser_conf]# cd

/etc/vsftpd/vuser_conf/

[root@vm6 vuser_conf]# cat test

local_root=/disk1/tools

local_umask=022

write_enable=yes

guest_enable=yes

guest_username=nginx

anonymous_enable=no

anon_world_readable_only=no

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes

anon_umask=022

cmds_allowed=ABOR,APPE,CWD,CDUP,FEAT,LIST,MKD,MDTM,PASS,PASV,PWD,QUIT,RETR,REST,STOR,STRU,TYPE,USER,RNTO,RNFR


2. 可以上传和建立文件(或目录),不能重命名和删除文件(或目录)

把上面的RNTO,RNFR去掉即可

cmds_allowed=ABOR,APPE,CWD,CDUP,FEAT,LIST,MKD,MDTM,PASS,PASV,PWD,QUIT,RETR,REST,STOR,STRU,TYPE,USER


附一、vsftp安装

操作系统:centOS6.5

其它设置:关闭了iptables及selinux,yum安装了nginx

下面是以nginx用户基础建立的虚拟用户,#如果你想基于其他用户可以修改为其它如apache,mysql等,前提是它是系统存在的用户,如果虚拟用户所在的真实用户没权限那么虚拟用户也不有权限,虚拟用户是继承真实用户权限的基础再做权限控制的。

#------------------------------------------------------直接刷命令-------------------------------------

#1.安装vsftpd-2.2.2-14.el6.x86_64

yum -y install vsftpd

chkconfig vsftpd on

#2.基于虚拟用户的配置

cd /etc/vsftpd/

cp vsftpd.conf vsftpd.conf.orig

#写入配置文件含被动模式

cat>>vsftpd.conf<<EOF

#by hua 2016.1.12

user_config_dir=/etc/vsftpd/vuser_conf

pasv_enable=YES

pasv_min_port=5000

pasv_max_port=5100

pasv_promiscuous=YES

EOF


vsftpd]# tail -7 vsftpd.conf

#3.进行认证,安装Berkeley

DB工具

yum install db4 db4-utils -y

#创建用户密码文本

cat>>vuser_passwd.txt<<EOF

test

123456

EOF


#生成虚拟用户认证的db文件

db_load -T -t hash -f

/etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

cp /etc/pam.d/vsftpd  /etc/pam.d/vsftpd.orig

echo '#%PAM-1.0'

>/etc/pam.d/vsftpd

echo 'auth required

pam_userdb.so db=/etc/vsftpd/vuser_passwd'>>/etc/pam.d/vsftpd

echo 'account required

pam_userdb.so db=/etc/vsftpd/vuser_passwd' >>/etc/pam.d/vsftpd

cat /etc/pam.d/vsftpd

#创建虚拟用户配置文件

mkdir /etc/vsftpd/vuser_conf

cd /etc/vsftpd/vuser_conf/

#下面是test账号用法

cat>>test<<EOF

local_root=/disk1/tools

local_umask=022

write_enable=YES

guest_enable=yes

guest_username=nginx

anonymous_enable=no

anon_world_readable_only=no

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes

anon_umask=022

EOF

service vsftpd start

chkconfig vsftpd on

chown nginx.nginx /disk1/tools

#为了安全禁止匿名用户登陆,如果发现问题可以去掉

sed -i '/anonymous_enable/s/YES/NO/' /etc/vsftpd/vsftpd.conf

grep 'anonymous_enable'

/etc/vsftpd/vsftpd.conf

/etc/init.d/vsftpd restart

#------------------------------------------------------直接刷命令-------------------------------------

#如果是centos7则添加多一条,centos7用的是vsftp 3版本,centos6

yum安装的是2.2版本,不能添加否则报错

#500 OOPS: unrecognised variable in config

file: allow_writeable_chroot

echo

'allow_writeable_chroot=YES'>>/etc/vsftpd/vsftpd.conf


#3.错误解决:

500 OOPS: cannot locate user entry:nginx

说明没有nginx用户,可以修改guest_username=nginx为其他用户


附二、vsftp禁止下载,只能上传

         因公司业务需要,几个账号共用一个目录,里面的资料比较重要的不能让别人随意下载获取,故禁止下载。

vi /etc/vsftpd/vsftpd.conf

#在尾部添加,如下内容,并重启服务器

#deny download

anon_world_readable_only=NO

download_enable=NO


/etc/init.d/vsftpd restart

测试结果:

注:

如果是针对单个虚拟用户,只需要在该虚拟用户配置文件中添加下面两行并重启vsftp即可:

anon_world_readable_only=NO

download_enable=NO


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容