Linux系统中如何修改及设置文件系统的权限及安全

作者&投稿:宜彭 (若有异议请与网页底部的电邮联系)
~

如果文件系统的权限设置不合理,就会威胁系统的安全,所以当运维人员遇到不能修改及删除文件的情况,就要对文件的的权限进行修改和设置了,下面小编就给大家介绍下Linux系统中如何修改及设置文件的权限。

一、锁定系统重要文件

系统运维人员有时候可能会遇到通过root用户都不能修改或者删除某个文件的情况,产生这种情况的大部分原因可能是这个文件被锁定了。在Linux下锁定文件的命令是chattr,通过这个命令可以修改ext2、ext3、ext4文件系统下文件属性,但是这个命令必须有超级用户root来执行。和这个命令对应的命令是lsattr,这个命令用来查询文件属性。

通过chattr命令修改文件或者目录的文件属性能够提高系统的安全性,下面简单介绍下chattr和lsattr两个命令的用法。

chattr命令的语法格式如下:

chattr [-RV] [-v version] [mode] 文件或目录主要参数含义如下:

-R:递归修改所有的文件及子目录。

-V:详细显示修改内容,并打印输出。

其中mode部分用来控制文件的属性,常用参数如下表所示:

参数含义

+在原有参数设定基础上,追加参数

-在原有参数设定基础上,移除参数

=更新为指定参数

a即append,设定该参数后,只能向文件中添加数据,而不能删除。常用于服务器日志文件安全,只有root用户才能设置这个属性c即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作i即immutable,设定文件不能被修改、删除、重命名、设定链接等,同时不能写入或新增内容。这个参数对于文件系统的安全设置有很大帮助s安全的删除文件或目录,即文件被删除后硬盘空间被全部收回u与s参数相反,当设定为u时,系统会保留其数据块以便以后能够恢复删除这个文件。这些参数中,最常用到的是a和i,a参数常用于服务器日志文件安全设定,而i参数更为严格,不允许对文件进行任何操作,即使是root用户lsattr用来查询文件属性,用法比较简单,其语法格式如下:

lsattr [-adlRvV] 文件或目录

常用参数如下表所示。

参数含义

-a列出目录中的所有文件,包括以。开头的文件-d显示指定目录的属性

-R以递归的方式列出目录下所有文件及子目录以及属性值-v显示文件或目录版本

在Linux系统中,如果一个用户以root的权限登录或者某个进程以root的权限运行,那么它的使用权限就不再有任何的限制了。因此,攻击者通过远程或者本地攻击手段获得了系统的root权限将是一个灾难。在这种情况下,文件系统将是保护系统安全的最后一道防线,合理的属性设置可以最大限度地减小攻击者对系统的破坏程度,通过chattr命令锁定系统一些重要的文件或目录,是保护文件系统安全最直接、最有效的手段。

对一些重要的目录和文件可以加上“i”属性,常见的文件和目录有:

chattr -R +i /bin /boot /lib /sbin

chattr -R +i /usr/bin /usr/include /usr/lib /usr/sbinchattr +i /etc/passwd

chattr +i /etc/shadow

chattr +i /etc/hosts

chattr +i /etc/resolv.conf

chattr +i /etc/fstab

chattr +i /etc/sudoers

对一些重要的日志文件可以加上“a”属性,常见的有:

chattr +a /var/log/messages

chattr +a /var/log/wtmp

对重要的文件进行加锁,虽然能够提高服务器的安全性,但是也会带来一些不便,例如,在软件的安装、升级时可能需要去掉有关目录和文件的immutable属性和append-only属性,同时,对日志文件设置了append-only属性,可能会使日志轮换(logrotate)无法进行。因此,在使用chattr命令前,需要结合服务器的应用环境来权衡是否需要设置immutable属性和append-only属性。

另外,虽然通过chattr命令修改文件属性能够提高文件系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var等目录。

根目录不能有不可修改属性,因为如果根目录具有不可修改属性,那么系统根本无法工作:/dev在启动时,syslog需要删除并重新建立/dev/log套接字设备,如果设置了不可修改属性,那么可能出问题;/tmp目录会有很多应用程序和系统程序需要在这个目录下建立临时文件,也不能设置不可修改属性;/var是系统和程序的日志目录,如果设置为不可修改属性,那么系统写日志将无法进行,所以也不能通过chattr命令保护。

虽然通过chattr命令无法保护/dev、/tmp等目录的安全性,但是有另外的方法可以实现,在面将做详细介绍。

二、文件权限检查和修改

不正确的权限设置直接威胁着系统的安全,因此运维人员应该能及时发现这些不正确的权限设置,并立刻修正,防患于未然。下面列举几种查找系统不安全权限的方法。

(1)查找系统中任何用户都有写权限的文件或目录查找文件:find / -type f -perm -2 -o -perm -20 |xargs ls -al查找目录:find / -type d -perm -2 -o -perm -20 |xargs ls –ld(2)查找系统中所有含“s”位的程序

find / -type f -perm -4000 -o -perm -2000 -print | xargs ls –al含有“s”位权限的程序对系统安全威胁很大,通过查找系统中所有具有“s”位权限的程序,可以把某些不必要的“s”位程序去掉,这样可以防止用户滥用权限或提升权限的可能性。

(3)检查系统中所有suid及sgid文件

find / -user root -perm -2000 -print -exec md5sum {} /;find / -user root -perm -4000 -print -exec md5sum {} /;

将检查的结果保存到文件中,可在以后的系统检查中作为参考。

(4)检查系统中没有属主的文件

find / -nouser -o –nogroup

没有属主的孤儿文件比较危险,往往成为黑客利用的工具,因此找到这些文件后,要么删除掉,要么修改文件的属主,使其处于安全状态。

三、/tmp、/var/tmp、/dev/shm安全设定

在Linux系统中,主要有两个目录或分区用来存放临时文件,分别是/tmp和/var/tmp。存储临时文件的目录或分区有个共同点就是所有用户可读写、可执行,这就为系统留下了安全隐患。攻击者可以将病毒或者木马脚本放到临时文件的目录下进行信息收集或伪装,严重影响服务器的安全,此时,如果修改临时目录的读写执行权限,还有可能影响系统上应用程序的正常运行,因此,如果要兼顾两者,就需要对这两个目录或分区就行特殊的设置。

/dev/shm是Linux下的一个共享内存设备,在Linux启动的时候系统默认会加载/dev/shm,被加载的/dev/shm使用的是tmpfs文件系统,而tmpfs是一个内存文件系统,存储到tmpfs文件系统的数据会完全驻留在RAM中,这样通过/dev/shm就可以直接操控系统内存,这将非常危险,因此如何保证/dev/shm安全也至关重要。

对于/tmp的安全设置,需要看/tmp是一个独立磁盘分区,还是一个根分区下的文件夹,如果/tmp是一个独立的磁盘分区,那么设置非常简单,修改/etc/fstab文件中/tmp分区对应的挂载属性,加上nosuid、noexec、nodev三个选项即可,修改后的/tmp分区挂载属性类似如下:

LABEL=/tmp /tmp ext3 rw,nosuid,noexec,nodev 0 0其中,nosuid、noexec、nodev选项,表示不允许任何suid程序,并且在这个分区不能执行任何脚本等程序,并且不存在设备文件。

在挂载属性设置完成后,重新挂载/tmp分区,保证设置生效。

对于/var/tmp,如果是独立分区,安装/tmp的设置方法是修改/etc/fstab文件即可;如果是/var分区下的一个目录,那么可以将/var/tmp目录下所有数据移动到/tmp分区下,然后在/var下做一个指向/tmp的软连接即可。也就是执行如下操作:

[root@server ~]# mv /var/tmp/* /tmp

[root@server ~]# ln -s /tmp /var/tmp

如果/tmp是根目录下的一个目录,那么设置稍微复杂,可以通过创建一个loopback文件系统来利用Linux内核的loopback特性将文件系统挂载到/tmp下,然后在挂载时指定限制加载选项即可。一个简单的操作示例如下:

[root@server ~]# dd if=/dev/zero of=/dev/tmpfs bs=1M count=10000[root@server ~]# mke2fs -j /dev/tmpfs

[root@server ~]# cp -av /tmp /tmp.old

[root@server ~]# mount -o loop,noexec,nosuid,rw /dev/tmpfs /tmp[root@server ~]# chmod 1777 /tmp

[root@server ~]# mv -f /tmp.old/* /tmp/

[root@server ~]# rm -rf /tmp.old

最后,编辑/etc/fstab,添加如下内容,以便系统在启动时自动加载loopback文件系统:

/dev/tmpfs /tmp ext3 loop,nosuid,noexec,rw 0 0

为了验证一下挂载时指定限制加载选项是否生效,可以在/tmp分区创建一个shell文件,操作如下:

[root@tc193 tmp]# ls -al|grep shell

-rwxr-xr-x 1 root root 22 Oct 6 14:58 shell-test.sh[root@server ~]# pwd

/tmp

[root@tc193 tmp]# 。/shell-test.sh

-bash: 。/shell-test.sh: Permission denied可以看出,虽然文件有可执行属性,但是已经在/tmp分区无法执行任何文件了。

最后,再来修改一下/dev/shm的安全设置。由于/dev/shm是一个共享内存设备,因此也可以通过修改/etc/fstab文件设置而实现,在默认情况下,/dev/shm通过defaults选项来加载,对保证其安全性是不够的,修改/dev/shm的挂载属性,操作如下:

tmpfs /dev/shm tmpfs defaults,nosuid,noexec,rw 0 0

通过这种方式,就限制了任何suid程序,同时也限制了/dev/shm的可执行权限,系统安全性得到进一步提升。

上面就是Linux下文件系统权限修改和设置的相关介绍了,为了系统的安全着想,可使用命令锁定重要的文件,合理的文件权限设置也是很重要的。




linux中如何删除文件
1、打开linux系统,在linux的桌面的空白处右击。2、在弹出的下拉选项里,点击打开终端即可进入命令行。3、在终端窗口中输入rm+文件名命令,回车后即可删除掉。

linux下如何下载软件到linux系统中?
1、首先在LINUX系统中,打开桌面的主目录文件夹,然后点击下载目录。2、然后点击文件中的下载目录,如下图所示。3、进入后右键选择在终端中打开,如下图所示。4、接着在终端看到一个$符号,前面的是中文下载证明终端已经进入了这个目录,然后输入命令:chmod +x +文件名回车。给予run文件可执行权限。5...

如何使用Linux系统中的Vim编辑器
1、首先打开Linux终端命令行,输入Vim命令,如下图所示 2、进入Vim编辑器以后我们会发现不管按什么键都不能输入内容,如下图所示,因为现在处于命令模式 3、接下来我们按键盘上的i键从命令模式进入到编辑模式,如下图所示 4、然后我们会看到编辑器底部会出现insert字样,这代表当前是编辑模式,如下图所示...

如何在Linux系统中查看和管理磁盘空间?
首先,df命令,作为系统内核工具包coreutils的一部分,是查看磁盘空间的首选。只需键入“df -lh”,系统便会呈现详细的磁盘使用情况和文件系统挂载信息,让你一目了然。对于更高级的磁盘分区管理,Cfdisk和Parted这两个工具同样不可或缺。Cfdisk作为util-linux包的一部分,虽然版本差异可能带来些许变化,但...

在linux操作系统中怎样读取u盘
在Linux操作系统中,操作U盘的步骤相当直接且简单。首先,将U盘插入电脑并确保其指示灯亮起,表明已连接。登录Linux系统后,打开命令行界面的方法是通过组合键Ctrl+Alt+T。为了执行后续操作,需要获取管理员权限,输入命令"sudo-i",然后输入管理员密码。确认权限后,利用"fdisk-l"命令扫描和确认U盘是否被...

linux系统中如何安装程序、软件的几种方法
由于软件可能将文件分散地安装在系统的多个目录中,往往很难把它删除干净,那你应该在编译前进行配置,指定软件将要安装到目标路径:.\/configure --prefix=目录名,这样可以使用rm -rf 软件目录名命令来进行干净彻底的卸载。与其它安装方式相比,需要用户自己编译安装是最难的,它适合于使用Linux已有一定经验...

如何在Linux系统中查看IP地址
在大多数Linux系统里输入终端命令打开终端程序。你可以在应用程序列表里找到终端,也可以输入“终端”来进行搜索。输入以下命令:ip addr show 。接着,终端会返回各个已连接的网络设备的详细信息。每个设备的IP地址位于“inet”字符后面。 如果你不确定是哪个设备,可以查看最常用的、接入“eth0”端口的...

Linux系统关闭防火墙的步骤关闭linux的防火墙
Linux系统的防火墙功能可以帮助用户保护其系统安全,但如果系统中出现防火墙问题,有时候用户需要关闭防火墙以解决问题,那么Linux系统中如何操作关闭与启用防火墙呢?下面就来详细讲解一下Linux系统关闭防火墙的步骤。一、关闭Systemd防火墙 大多数Linux系统使用Systemd作为系统启动和管理守护进程,Systemd有自己的...

linux系统如何在应用商店中搜索并安装阿里旺旺?
在Linux系统中,阿里旺旺的安装就像一场轻盈的旅程,只需几个步骤就能轻松完成。首先,打开你的系统启动器或者应用菜单,找到那个象征着无限可能的图标,那就是我们的“应用商店”。在搜索框的聚焦处,键入"阿里旺旺"的字样,就像点亮一盏寻找的灯,它会立即出现在你的视线中。轻点进入搜索结果,眼前的应用...

linux如何登录用户linux如何登录
linux系统如何以root身份登录?使用终端可以使用su-登录,如果是图形界面可以注销登录时选择其他,输入root,输入密码登录,如不允许root登录,按如下步骤设置:1.用普通用户登录。2.在终端执行sudo-s,然后输入当前登录的普通用户密码,进入到root用户模式。3.执行gedit\/etc\/lightdm\/lightdm.conf。4.添加如下...

江夏区15693848058: 如何在linux下编辑和修改文件 -
费紫氯霉: 如何在linux下编辑和修改文件 vi filename :打开或新建文件,并将光标置于第一行首 vi n filename :打开文件,并将光标置于第n行首 vi filename :打开文件,并将光标置于一行首 vi /pattern filename:打开文件,并将光标置于第一个与pattern...

江夏区15693848058: linux中怎么添加或修改配置文件 -
费紫氯霉: 1、首先辑配置文件,添加下面的这一行 . 2、然后编辑/etc/passwd文件,添加下面的信息 . 3、然后创建家目录/home/zouni,然后再将/etc/skel当中的文件都拷贝过去. 4、然后我们再去设置用户的密码,我们可以使用openssl 的这个工具来进行生成,其中-1 表示的是使用MD5的方式,-salt 表示进行加盐. 5、最后复制上面生成的密码,将其复制到我们的/etc/shadow文件当中就完成了.

江夏区15693848058: linux 编辑文件,与修改文件名??? -
费紫氯霉: 1、首先,连接相应linux主机,进入到linux命令行状态下,等待输入shell指令. 2、其次,在linux命令行中输入:rename 1.txt 2.txt 1.txt,即可将1.txt重命名为2.txt. 3、接着,输入:vi 2.txt.4、最后,按下回车,此时成功进到文件的vi编辑模式中,可对文件进行编辑.

江夏区15693848058: 如何修改Linux文件的属性与权限 -
费紫氯霉: Linux修改文件和文件夹的权限用chmod命令,chmod命令格式为:chmod xyz 要修改权限的文件或目录 其中x是文件或目录的所有者的rwx权限相加,y是文件或目录的所属用户组的rwx权限相加,z是其他用户对文件或目录的rwx权限相加.而rwx...

江夏区15693848058: Linux系统中如何修改及设置文件系统的权限及安全 -
费紫氯霉: 1、文件夹中所有文件的权限设置:chmod -R 777 文件夹名字2、文件的权限 chmod 777 文件名3、查看文件以及文件的权限:进入文件夹 cd /home/xxx/文档 进入当前文件夹的子目录:cd ./文件夹名字 查看文件夹中所有文件名字:ls -a 所有文件都会展示,包含隐藏文件

江夏区15693848058: linux 中如何修改文件内容? -
费紫氯霉: 可以使用vim命令编辑文件.具体的是, 1、vi filename :打开或新建文件,并将光标置于第一行首 2、编辑移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾插入文本类命令 i :在光标前 I :在当前行首 最后使用 :x:保存当前文件并退出.《Linux就该这么学》里有相关介绍,建议看看.

江夏区15693848058: linux中如何通过命令修改文件属性 -
费紫氯霉: ls -l即可查看目录信息分别对应的是:文件属性 连接数 文件拥有者 所属群组 文件大小 文件修改时间 文件名例如:d rwx r-xr-x第一个字符指定了文件类型.在通常意义上,一个目录也是一个文件.如果第一个字符是横线,表示是一个非...

江夏区15693848058: 如何使用linux命令行修改文件 -
费紫氯霉: 我们一般使用“date -s”命令来修改系统时间.比如将系统时间设定成1996年6月10日的命令如下. #date -s 06/10/96 将系统时间设定成下午1点12分0秒的命令如下. #date -s 13:12:00 注意,这里说的是系统时间,是linux由操作系统维护的....

江夏区15693848058: linux怎么更改文件权限 -
费紫氯霉: Linux是多用户系统,所以权限设置比较严格,文件权限一共有九位表示,加上地一个文件类型一共是十个比如“----------”,除开第一位,每三位表示一个权限,分别是所属人,所属人的组,所有人,每三位用来表示读,写,执行的权限,分别...

江夏区15693848058: linux系统如何修改文件的所有者和所属组别 -
费紫氯霉: chown命令修改所有者:chown username filename 同时修改属组:chown username:groupname filename chgrp命令修改属组:chgrp groupname filename

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网