为ftp上传的文件指定权限

本文介绍如何在AIX操作系统中通过客户端或服务器端设置FTP上传文件的默认权限,包括使用site umask命令调整掩码及修改/etc/inetd.conf配置。

问题:在AIX操作系统中,用root用户ftp文件到AIX上后,文件的默认权限是rw-r-----,oracle用户无法读取。有没有办法指定上传文件的权限呢?

环境: AIX 6.1 


解决方法: 
1、在客户端设置。

关键要看客户端是否支持site命令,执行site umask 022进行设置。

[sycms1@root]/etc>ftp 138.*.*.*
Connected to 138.*.*.*.
220 gywlapp FTP server (Version 4.2 Wed Dec 23 11:06:15 CST 2009) ready.
Name (138.*.*.*:root): root
331 Password required for root.
Password: 
230-Last unsuccessful login: Tue Feb 22 10:03:46 CST 2011 on /dev/pts/1 from 192.168.100.111
230-Last login: Tue Mar  1 17:44:36 CST 2011 on ftp from ::ffff:138.*.*.*
230 User root logged in.
ftp> ? 
Commands may be abbreviated.  Commands are:
!                       image                   reget
$                       lcd                     reinitialize
account                 local                   remotehelp
append                  ls                      rename
ascii                   macdef                  reset
bell                    mdelete                 restart
binary                  mdir                    rhelp
block                   mget                    rmdir
bye                     mkdir                   rstatus
carriage-control        mls                     runique
case                    mode                    safe
cd                      modtime                 send
cdup                    mount                   sendport
clear                   mput                    site
close                   nmap                    size
copylocal               nlist                   status
cr                      non-print               stream
delete                  ntrans                  struct
debug                   open                    sunique
dir                     passive                 system
disconnect              private                 telnet
ebcdic                  prompt                  tenex
epsv                    protect                 trace
exp_cmd                 proxy                   type
file                    put                     user
form                    pwd                     verbose
get                     quit                    ?
glob                    quote                   clearcom
hash                    record
help                    recv
-- 可以看到aix的默认工具支持site

ftp> lcd /etc
Local directory now /etc
ftp> cd /tmp
250 CWD command successful.

-- 测试建设目录
ftp> mkdir www
257 MKD command successful.

-- 测试上传文件
ftp> mput hosts
mput hosts? y
200 PORT command successful.
150 Opening data connection for hosts.
226 Transfer complete.
2221 bytes sent in 0.003818 seconds (568.1 Kbytes/s)
local: hosts remote: hosts

-- 修改默认的mask,执行之后umask变成了022(默认是027),下面再建一个目录和文件进行对比。
ftp> site umask 022
200 UMASK set to 022 (was 027)
-- 测试建设目录www2
ftp> mkdir www2
257 MKD command successful.
-- 测试上传文件rc.net
ftp> mput rc.net
mput rc.net? y
200 PORT command successful.
150 Opening data connection for rc.net.
226 Transfer complete.
9085 bytes sent in 0.005395 seconds (1644 Kbytes/s)
local: rc.net remote: rc.net
ftp> 

再切换到服务器看下权限。
执行umask前,文件默认是-rw-r-----目录是drwxr-x---
执行umask后,文件默认是-rw-r--r--目录是drwxr-xr-x
# cd /tmp
# ls -ltr
total 260920
drwx------    2 root     system          256 Jul 02 2010  lost+found
……
drwxr-x---    2 root     system          256 Mar 01 18:14 www
drwxr-xr-x    2 root     system          256 Mar 01 18:15 www2
-rw-r-----    1 root     system         2154 Mar 01 18:15 hosts
-rw-r--r--    1 root     system         8873 Mar 01 18:16 rc.net

ps:为啥是umask 022就会自动对应rw-r-r呢?这个说起来有点长了,简单说吧。

以umask 022为例 : 
目录为777-022=755 
文件为666-022=644 
执行"ls -l",会显示以下权限,(r=4, w=2, x=1) 
目录:rwxr-xr-x 
文本文件:rw-r--r--


2、在服务器端设置。

本方法适用AIX操作系统,修改/etc/inetd.conf,将ftp一行改为: 
ftp --stream tcp6 --nowait root-- /usr/sbin/ftpd ftpd -u xxx 
其中-u是新的umask。

然后运行refresh -s inetd

ps:这种方法对所有使用ftp的用户有效,已经连接的用户需要重新连接才能生效。

### 解决CentOS 7 FTP上传文件权限问题 #### 配置Vsftpd服务 为了使FTP用户能够正常上传文件,需修改`vsftpd.conf`配置文件中的特定参数。通过编辑该配置文件来允许写入操作并调整其他相关选项: ```bash sed -i "s/^#write_enable=YES/write_enable=YES/" '/etc/vsftpd/vsftpd.conf' ``` 此命令会启用写功能[^1]。 对于匿名用户的上传需求,则应确保如下设置被正确应用到配置文件中: ```bash sed -i "s/^#anon_upload_enable=YES/anon_upload_enable=NO/" '/etc/vsftpd/vsftpd.conf' ``` 注意这里设为`NO`是因为通常不建议开放给所有人随意上传的能力;如果确实有这方面的需求,在充分考虑安全风险的前提下可以将其改为`YES`[^2]。 另外一个重要点在于处理本地用户创建新文件后的所有权归属问题。默认情况下可能会自动更改新建文件的所有者至root或其他系统账户,这往往不是期望的行为。因此应当禁用这一特性: ```bash sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf' ``` 上述指令已经给出作为参考。 #### 设置正确的目录权限 针对目标FTP根目录及其子级结构予适当读取、写入以及执行权限非常重要。假设FTP服务器的工作空间位于`/var/www/html`下,那么可以通过下面的方式设定合适的访问级别: ```bash chmod 755 /var/www/html/ find /var/www/html/ -type d -exec chmod 755 {} \; find /var/www/html/ -type f -exec chmod 644 {} \; ``` 这些命令分别设置了顶级目录和其他各级子目录的权限模式,并且保证所有文件都具有合理的可读性和不可改性[^3]。 当涉及到具体某个用户的个人存储区域时(比如`/home/user_name/public_html`),则应该进一步细化控制措施: ```bash chown user_name:user_name /home/user_name/public_html chmod 700 /home/user_name/public_html ``` 这样做的目的是确保只有指定用户才能对该路径下的资源实施增删查改的操作。 #### SELinux策略调整 SELinux的安全机制有时会对FTP服务造成影响,特别是在尝试向某些特殊位置保存数据的时候。为了避免这种情况发生,有必要确认当前系统的SELinux状态并非处于强制模式(enforcing),或者至少要为其定义例外情况。 查询现有上下文标签的方法如下所示: ```bash ls -Zd /var/www/html/ ``` 理想状态下,FTP工作区应当标记为httpd_sys_content_t或类似的公共web内容类别。如果不是的话,可通过以下方式重新标注: ```bash semanage fcontext -a -t public_content_rw_t "/var/www/html(/.*)?" restorecon -Rv /var/www/html/ ``` 以上两条语句的作用分别是添加新的fcontext规则并将变更同步生效于实际磁盘节点上。 最后一步是验证是否启用了必要的布尔值开关,从而允许FTP进程跨越不同类型的对象边界进行交互: ```bash setsebool -P allow_ftpd_full_access on ``` 至此,关于解决CentOS 7环境下FTP上传文件遭遇权限障碍的问题就介绍完毕了。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值