重新设置属主和权限

Sftp限制用户访问权限的方法介绍,有需要的朋友可以参考下。

第一步:查看OpenSSH软件版

代码如下: [[email protected] ~]# rpm -qa | grep ssh
openssh-4.3p2-36.el5
openssh-clients-4.3p2-36.el5
openssh-server-4.3p2-36.el5
openssh-askpass-4.3p2-36.el5 
或者:
[[email protected] ~]# ssh -V
OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

发现操作系统的OpenSSH软件是4.3p2,低于4.8p1版本,所以需要做升级。
 
第二步:下载最新的OpenSSH软件
OpenSSH是免费的,可以到官网上进行下载: www.openssh.com
当前最高版本是OpenSSH6.0,我们就可以下载该版本:openssh-6.0p1.tar.gz

下载的时候,我们需要看一看官方安装指导文档Installation instructions ,里面有安装该版本的注意事项和安装步骤说明,最好仔细阅读一下。

第三步:确认OpenSSH软件安装条件
在官方安装指导文档中提到,安装OpenSSH6.0需要具备两个条件:
You will need working installations of Zlib and OpenSSL.
Zlib 1.1.4 or 1.2.1.2 or greater (ealier 1.2.x versions have problems):
http://www.gzip.org/zlib/

OpenSSL 0.9.6 or greater:
http://www.openssl.org/

上面指出了,OpenSSH6.0安装所依赖的两款软件Zlib和OpenSSL的最低版本,如果服务器的软件版本不符合要求,就要先升级该两款软件。

首先我们需要确认服务器上Zlib和OpenSSL软件的版本:

代码如下:

[[email protected] ~]# rpm -qa | grep -i zlib
zlib-devel-1.2.3-3
perl-Compress-Zlib-1.42-1.fc6
zlib-1.2.3-3
perl-IO-Zlib-1.04-4.2.1

[[email protected] ~]# rpm -qa | grep -i openssl
pyOpenSSL-0.6-1.p24.7.2.2
openssl-devel-0.9.8e-12.el5
openssl-0.9.8e-12.el5

可以看到,Zlib 的版本是1.42 ,OpenSSL的版本是0.9.8,满足OpenSSH6.0安装的要求。

第四步:卸载OpenSSH软件
安装之前,有下面几个工作需要完成:

(1)停sshd服务
[[email protected] ~]# service sshd stop
Stopping sshd: [  OK  ]

(2)备份sshd文件
说明:在卸载之前需要将 /etc/init.d/sshd 文件做个备份,安装完成后,需要再将备份的sshd文件拷贝到/etc/init.d/目录中,这样可以保证升级完成后可以继续使用service sshd start/stop/restart  的方式管理sshd服务,否则将不可使用。
[[email protected] ~]# cp /etc/init.d/sshd /root/sshd

(3)卸载服务器上已经存在的OpenSSH软件
卸载OpenSSH,通过rpm -qa 命名查询出需要卸载的rpm软件包, 再用 rpm -e 命令卸载:

查询:
[[email protected] ~]# rpm -qa | grep -i openssh
openssh-4.3p2-36.el5
openssh-clients-4.3p2-36.el5
openssh-server-4.3p2-36.el5
openssh-askpass-4.3p2-36.el5
卸载:
[[email protected] ~]# rpm -e openssh-4.3p2-36.el5 -deps
[[email protected] ~]# rpm -e openssh-clients-4.3p2-36.el5 -deps
[[email protected] ~]# rpm -e openssh-server-4.3p2-36.el5 -deps
[[email protected] ~]# rpm -e openssh-askpass-4.3p2-36.el5 -deps
 
(4)删除 /etc/ssh/ 目录下的ssh文件
rm -rf /etc/ssh/*

第五步:安装OpenSSH软件
解压下载的软件包 openssh-6.0p1.tar.gz
[[email protected] ~]# tar -zxvf openssh-6.0p1.tar.gz

安装OpenSSH软件:
进入解压出的文件夹,按照顺序执行下面的编译和安装命令:
[[email protected] ~]# ./configure –prefix=/usr –sysconfdir=/etc/ssh –with-pam –with-md5-passwords –mandir=/usr/share/man
[[email protected] ~]# make
[[email protected] ~]# make install

执行完成后,就可以用 ssh -V 命名查看openssh的版本,验证安装结果:
[[email protected] ~]# ssh -V
OpenSSH_6.0p1, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
可以看到版本已经变成6.0p1了,说明安装没有问题。

接下来,恢复sshd文件,将备份的sshd文件复制到 /etc/init.d/ 目录下:
[[email protected] ~]# cp /root/sshd /etc/init.d/sshd

测试sshd服务的启动和停止:
[[email protected] ~]# service sshd restart
Stopping sshd: [  OK  ]
Starting sshd: [  OK  ]
OK,到这里,OpenSSH 的升级就做完了。

注意:
这样升级完成,在服务器关机启动后,sshd服务不会自动启动,为了使sshd服务在开机时自动启动,我们需要执行下面的命令:
[[email protected] ~]# chkconfig --add sshd
[[email protected] ~]# chkconfig --level 123456 sshd on
这样开机后就可以自动启动sshd服务了。

第六步:配置sftp服务用户的访问权限
(1)创建sftp用户的主根目录
[[email protected] ~]# mkdir -p /home/sftp
[[email protected] ~]# chmod -R 755 /home/sftp

(2)创建sftp用户组和一个sftp用户
[[email protected] ~]# groupadd sftp
[[email protected] ~]# useradd -g sftp -d /home/sftp/blog blog
[[email protected] ~]# passwd blog

(3)权限设置
设置 /etc/ssh/sshd_config配置文件,通过Chroot限制用户的根目录。
[[email protected] ~]# vi /etc/ssh/sshd_config
# override default of no subsystems
#注释掉原来的Subsystem设置
#Subsystem      sftp    /usr/libexec/sftp-server
#启用internal-sftp
Subsystem sftp internal-sftp

# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# ForceCommand cvs server
#限制blog用户的根目录
Match User pay
ChrootDirectory /home/sftp/blog/
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
保存退出,重启sshd服务:
[[email protected] ~]# service sshd restart

(4)测试sftp权限控制
使用blog用户尝试登录sftp ,发现无法登陆,给出的提示也很难看懂,什么原因呢?
原来要使用Chroot功能实现用户根目录的控制,目录权限的设置非常重要,否则将会无法登陆。

目录权限设置上要遵循2点:
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755。
如果不能遵循以上2点,即使是该目录仅属于某个用户,也可能会影响到所有的SFTP用户。

设置目录的属主和权限:
[[email protected] ~]# chown root:root /home/sftp  /home/sftp/blog
[[email protected] ~]# chmod 755 /home/sftp /home/sftp/blog

由于上面设置了目录的权限是755,因此所有非root用户都无法在目录中写入文件。我们需要在ChrootDirectory指定的目录下建立子目录,重新设置属主和权限。以blog目录为例:
[[email protected] ~]#  mkdir /home/sftp/blog/web
[[email protected] ~]# chown blog:sftp /home/sftp/blog/web
[[email protected] ~]#  chown 775 /home/sftp/blog/web

设置完成后,我们再用blog用户登录sftp,发现这次可以正常登录了,并且可以访问的根目录控制在了/home/sftp/blog/下,达到了我们的要求。

补充:
上面是设置某一个sftp用户的访问权限,我们可以通过下面的配置,来设置某一个sftp组的用户访问权限:
Match group sftp
ChrootDirectory /home/sftp/
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

时间: 2024-10-10 16:26:56

重新设置属主和权限的相关文章

文件权限与属主属组管理

写在前面: 博客书写牢记5W1H法则:What,Why,When,Where,Who,How. 本篇主要内容: ● 文件及目录基本权限: ● 文件及目录属主属组设置: ● umask含义与设置 本篇涉及命令列表: ⊙ chown ⊙ chgrp ⊙ chmod ⊙ umask 进程安全上下文: 进程通常是由用户发起,运行程序文件产生的,此进程以用户的身份运行,那么运行进程的用户权限就是进程的权限了. 而当进程去访问文件时,系统就可以根据运行进程的用户身份来判断进程拥有那些权限了: 判断进程的发起

Linux编程 17 文件权限(权限设置chmod,改变文件属主属组关系chown,chgrp)

一. 概述 如果创建了一个目录或文件,有时会需要改变它的安全性设置,在linux系统上有一些工具可以完成这任务,包括使用chmod命令改变已有默认权限,分别能对属主,属组,其它用户的权限的控制分别以读取.写入.执行3种权限来区分设置,还有使用chown,chgrp来改变默认属主属组关系. 1 . 改变权限 chmod chmod命令用来改变文件和目录安全性设置,该命令的三种用法格式如下: model模式参数可以使用八进制或符号模式进行安全性设置,八进制模式设置非常直观,直接用期望赋予文件的标准3

Linux基础(7)修改文件的属主,属组,权限

修改Linux下文件的属主,属组以及权限的命令有chown chmod chgrp umask 1.chown 修改文件的属主 chown [options] username file_name... -R 递归修改 如果file是目录的话 使用chown还可以同时修改用户的属主,属组 chown  username.grpname file_name 或者chown username:grpname file_name 2.chmod 修改文件的权限 chomod MODE file...

Linux文件属性(属主属组权限)

Linux文件属性 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. 在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组 例如: [[email protected] /]# ls -l 总用量 24 lrwxrwxrwx. 1 root root 7 6月 6 21:30 bin -> usr/bin dr-xr-xr-x.

每个用户创建的文件各个用户之间可以互相修改、查看但只有root及其属主可删除

知识储备: 特殊权限: SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者:(常用于普通用户有管理员权限执行某些命令,非常危险) chmod u+s FILE chmod u-s FILE 如果FILE本身原来就有执行权限,则SUID显示为s:否则显示S: SGID: 运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组: chmod g+s FILE chmod g-s FILE Sticky: 在一个公共目录,每个人都可以创建文件,删除自己的文件

最近玩了一下qt5.2.1,顺着写点东西,关于这个版本设置程序主窗口居中

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include <QtGui/QGuiApplication> #include <QDebug> #include <QScreen> #include "qtquick2applicationviewer.h" int main(int argc, char *argv[]) {     QGuiApplication app(arg

nginx进程属主问题讨论

文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/  转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点,如有不当,欢迎指正. --- 近来由于工作需求,和nginx接触较多,现把关于nginx进程属主的问题总结如下: 规则 nginx启动进程可以在conf里指定user(user  work;)但是这个只有在用root启动的情况有意义, 如果是用其他用户启动的nginx master是没有意义的 nginx会忽略这个配置,如下n

chown--修改文件or目录的属主,属组

chown options  user:group  file/dir options:-R  dir:recursive 将目录和目录下的子目录以及文件的属主,属组改为指定的属组,属主 注意: USER : GROUP=USER . GROUP 只改属组:   :GROUP  or   .GROUP 或者使用chgrp(change group)  GROUP  file/dir 只改属主:    USER

文件属主获取

win/linux中的文件属主获取方法,写了很多遍都记不住 - -, 还是记录一下, i)win中通过api GetNamedSecurityInfo 获取到ower_sid, group_sid, 或者通过 getfilesecurity 获取到文件的file_sid, 通过GetSecurityDescriptorOwner/GetSecurityDescriptorGroup,获取到ower_sid, group_sid, 调用LookupAccountSid,获取ower/group 名