linux非root用户下载软件失败

linux非root用户下载软件失败,第1张

Linux下的软件安装

Linux下的软件安装,实质上有如下四种,“正规”程度依次递减:

使用标准的yum/apt/yast包管理程序安装

比如:sudo apt-get install g++/sudo yum install -y gcc-c++

使用标准rpm/deb或厂商自己的安装包(比如nVidia的显卡驱动用的bin包)安装

直接解压软件开发者的tar.gz包

自源码编译。有些软件是别人自行写的,给的源代码,也没有提交到仓库,apt-get/yum/dnf的安装方式就行不通。这时需要先下载源代码,解压(不能点右键解压,对不少人是个难题),然后按照说明文档make &&make install。不管是从软件仓库,还是手工编译源代码的方式,对有root权限用户问题都不大(问题常出现在依赖)

非root用户安装

在linux系统下,软件包安装一般需要root权限,因为都是安装到绝对路径,需要往系统文件夹写文件。但是源码编译就看情况了,适合咱这种没有root权限的孩子……下面是Linux下非root用户安装软件的一般流程:

获取源代码,常用wget方式直接从url(一般都有官网,去官网看看啦)下载

解压源代码安装包,多为gzip过的tar包,一般使用tar -zxvf xxx.tar.gz即可

切换到解压后的目录,运行 ./configure。./configure –help可以列出配置项,非root用户最重要的配置项是安装目录prefix,例如 ./configure –prefix=/path/to/bin

编译源代码并复制可执行文件到指定的安装目录: make &&make install。这两条命令可以分开执行,make时指定 -j 参数并行编译,能显著减少编译耗时(单进程编译GCC需要几个小时,开启并行编译后可缩短到十几分钟)

使用export PATH=/path/to/bin:$PATH更新PATH变量。命令行窗口运行此命令只对本次会话中有效,可将其写到~/.bashrc或者~/.bash_profile中;

如果安装的是动态链接库,则需要更新动态链接库路径: export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH。最好将此命令写在.bashrc文件中,用户下次打开会话时自动执行。

linux中文件权限查看

对任意一个文件(Linux下一切皆文件,包括目录、CPU内存等设备),可以使用ls -lh查看其权限。命令的每行首列输出类似(d|-)rwxrwxrwx,这就是文件的权限标志。

第一个字母是文件类型,d表示目录,-表示普通文件,s套接字,l链接文件,等等

接下来有9列,每3列一组,总共3组,对应文件属主(owner)、属主组员(group)和其他用户(other)对该文件的权限。每组的标志类似rwx。rwx是读(read),写(write)和执行(execute)三种权限的缩写。如果没有某种权限,对应标志位是-

例如某个文件foo.txt,只有属主可读写,其权限标志就是:-rw-------。注意,非root用户下,文件夹必须要有执行(x)权限才能进入。

root用户是bug,电脑上所有的文件都是它的,权限位设置对其无效。非root用户默认 只对自己的home目录有完全的控制权限,对/tmp目录有读写的权限。/tmp目录如其名,应该只在其中存放临时性文件,该目录在系统重启时会被清空。/var、/usr、/bin、/opt等常见文件夹及子目录,几乎所有用户都能访问其中的文件和内容,执行可执行程序,但只有root用户和属主有写入的权限。

了解完权限,再看普通账户安装软件困难的原因。大部分软件默认安装路径是 /usr/bin 或 /usr/local/bin,安装时需要将可执行文件复制到这些目录下。普通用户没有目录的写权限,于是提示无权限导致安装失败。切换到root模式后,一切又都好使了。根据普通账号的权限,可以得出结论:非root用户,(几乎)只能安装软件到自己的家目录下。

Linux下vsftp匿名用户上传和下载的配置

配置要注意三部分,请一一仔细对照:

1、vsftpd.conf文件的配置(vi /etc/vsftpd/vsftpd.conf)

#允许匿名用户登录FTP

anonymous_enable=YES

#设置匿名用户的登录目录(如需要,需自己添加并修改)

anon_root=/var/ftp/pub

#打开匿名用户的上传权限

anon_upload_enable=YES

#打开匿名用户创建目录的权限

anon_mkdir_write_enable=YES

#打开匿名用户删除和重命名的权限(如需要,需自己添加)

anon_other_write_enable=YES

#匿名用户的掩码(如需要,需自己添加,含义:如umask是022,这时创建一个权限为666的文件,文件的实际权限为666-022=644)

anon_umask=022

2、ftp目录的权限设置

默认情况下,ftp的根目录为/var/ftp,为了安全,这个目录默认不允许设置为777权限,否则ftp将无法访问。但是我们要匿名上传文件,需要“other”用户的写权限,正确的做法:

在/var/ftp中建立一个upload(名子自己起吧)文件夹,将个文件夹权限设置为777(视具体需要自己设),在upload这个文件夹中,匿名用户可以上传文件、创建文件夹、删除文件等。

一般至此,便实现vsftpd匿名用户的上传下载了。如果还不行,就是下面的问题。

3、selinux的配置

SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控制的实现,是 Linux上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。

最简单的办法,关闭selinux

方法1:修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。

方法2:用命令setenforce 0,无需重启。(setenforce的格式:setenforce [ Enforcing | Permissive | 1 | 0 ])

方法3:在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux。

使用getenforce查看当前selinux是否正在运行。

不关闭selinux,就要设置selinux的ftp权限。

1、使用getsebool -a | grep ftp查看ftp相关设置状态,我们要将allow_ftpd_anon_write设为on。

2、使用setsebool -P 进行设置。例:setsebool -P allow_ftpd_anon_write=on。

 或使用togglesebool进行bool值取反,例如togglesebool allow_ftpd_anon_write。

3、修改selinux安全上下文,先介绍两个命令:

 命令1、ls -Zps -Zid -Z# 分别可以看到文件,进程和用户的SELinux属性

 命令2、#chcon 改变SELinux安全上下文

 chcon -u [user] 对象

 -r [role]

 -t [type]

 -R 递归

 --reference 源文件 目标文件 # 复制安全上下文

 使用方法:

步骤1、ls -Zd /var/ftp/upload/ 通常会看到:

 drwxr-xr-x ftp root system_u:object_r:public_content_t /var/ftp/upload/

步骤2、chcon -R -t public_content_rw_t /var/ftp/upload/

步骤3、ls -Zd /var/ftp/upload/ 如果看到如下信息就OK了:

 drwxr-xr-x ftp root system_u:object_r:public_content_rw_t /var/ftp/upload/

最后还是重启下selinux和vsftpd吧,不重启其实也没关系。重新登录到ftp上,应该就能解决问题了。

另,selinux的图形界面 可由system-config-selinux命令进入。

先ping一个IP地址例如ping 114.114.114.114如果可以通说明网络没有问题,那就检查网卡配置文件看有没有配置DNS。我觉得你DNS有问题的可能性较大。《linux就该这么学》不错的linux自学书籍


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7384931.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-05
下一篇2023-04-05

发表评论

登录后才能评论

评论列表(0条)

    保存