How to restrict root user to access or modify a file and directory in Linux
Now in this article I will show you steps to prevent or restrict access of root user to access certain files or directories. Now by default root is the super user who has access to all the files and directories available on the Linux node but it is also possible to restrict even a root user from accessing and modifying the content of a file or directory.
You can restrict root user from accessing and modifying a file or directory using extended file attributes. We will be dealing with chattr
and lsattr
to achieve this in our demonstration.
Now chattr - change file attributes on a Linux file system
,
supports multiple options but we will be concentrating only on the
options which can help restrict root user access on certain files and
directories.
To get the complete list of options supported with chattr
you can view the man page of chattr
using below command
# man chattr
We will work with two attributes
a:
- Append text to a file
- Can’t overwrite
i:
- Makes a file immutable
- Can’t be deleted or changed in any way
Create a secret file and directory
Now
before we start we must have a top secret file which needs protection
from root user. I have created a secret_file with below text
[root@node1 ~]# cat /tmp/deepak/secret_file
This is a secret file
Check the assigned attributes
By default when we create a file or directory, it does not has any extended attributes other than “e” which means extent format i.e. these files support extended attributes
[root@node1 ~]# lsattr /tmp/
-------------e-- /tmp/tracker-extract-files.0
-------------e-- /tmp/yum_save_tx.2019-03-22.22-16.7ocUW8.yumtx
-------------e-- /tmp/systemd-private-1ad03926d17f4de68a8fdfdd0449c980-chronyd.service-FhlC0B
-------------e-- /tmp/systemd-private-1ad03926d17f4de68a8fdfdd0449c980-bolt.service-2Oomt7
-------------e-- /tmp/systemd-private-1ad03926d17f4de68a8fdfdd0449c980-rtkit-daemon.service-TEwKlB
-------------e-- /tmp/deepak
-------------e-- /tmp/systemd-private-1ad03926d17f4de68a8fdfdd0449c980-colord.service-cUfgTm
-------------e-- /tmp/yum_save_tx.2019-03-22.22-16.ZCjaVi.yumtx
-------------e-- /tmp/systemd-private-1ad03926d17f4de68a8fdfdd0449c980-cups.service-5yacYU
Restrict access and allow only to append content
Now we will use “+a
” to allow root user to append some data to our secret file but root won’t be allowed to overwrite the file.
[root@node1 ~]# chattr +a /tmp/deepak/secret_file
Check the assigned attributes and as you see now we have “a
” also assigned to our secret_file
[root@node1 ~]# lsattr /tmp/deepak/
-----a-------e-- /tmp/deepak/secret_file
Next try to append some data to this file
[root@node1 ~]# echo "I am appending some more content" >> /tmp/deepak/secret_file
Looks like it worked as expected, verify the same
[root@node1 ~]# cat /tmp/deepak/secret_file
This is a secret file
I am appending some more content
So, as you see now our secret file has some more content.
Let us try to overwrite the data
[root@node1 ~]# echo "I am trying to overwrite the content" > /tmp/deepak/secret_file
-bash: /tmp/deepak/secret_file: Operation not permitted
As expected the extended attributes didn’t allowed me to overwrite the data.
Make the file immutable (restrict all activity)
Now let us make the file immutable so no change at all can be made to this file.
[root@node1 ~]# chattr +i /tmp/deepak/secret_file
Check the applied attributes
[root@node1 ~]# lsattr /tmp/deepak/secret_file
----ia-------e-- /tmp/deepak/secret_file
As you see both “a
” and “i
” are applied to our secret file but since “i
” serves our purpose we do not need “a
” here so we will remove the “a
” attribute
[root@node1 ~]# chattr -a /tmp/deepak/secret_file
Next verify the applied attributes again
[root@node1 ~]# lsattr /tmp/deepak/secret_file
----i--------e-- /tmp/deepak/secret_file
Next I will try to overwrite the data of this file and will also attempt to remove this file
[root@node1 ~]# echo "I am trying to overwrite the content" > /tmp/deepak/secret_file
-bash: /tmp/deepak/secret_file: Permission denied [root@node1 ~]# rm -f /tmp/deepak/secret_file
rm: cannot remove ‘/tmp/deepak/secret_file’: Operation not permitted
But as you see due to the extended attributes the system does not allows root user to perform any activity on this file.
Instead of file you can also apply these attributes at directory level to protect all the files under the respective directory.
Remove extended attributes
To remove an extended attributes as I also showed in above step use minus sign along with the option
# chattr -a <file/directory>
# chattr -i <file/directory>
Lastly I hope the steps from the article to prevent or restrict root user access on files and directories on Linux was helpful. So, let me know your suggestions and feedback using the comment section.
https://www.golinuxcloud.com/restrict-root-directory-extended-attributes/
How to restrict root user to access or modify a file and directory in Linux的更多相关文章
- linux下编译安装MariaDB 10.4.7,解决错误:cannot access ‘/auth_pam_tool_dir’: No such file or directory
编译安装MariaDB 10.4.7,前面的步骤我就不复述了,一切正常没什么问题. 当执行到:scripts/mysql_install_db --basedir=/usr/local/mysql - ...
- python文件和文件夹訪问File and Directory Access
http://blog.csdn.net/pipisorry/article/details/47907589 os.path - Common pathname manipulations 都是和路 ...
- 命令stat anaconda-ks.cfg会显示出文件的三种时间状态(已加粗):Access、Modify、Change。这三种时间的区别将在下面的touch命令中详细详解:
7.stat命令 stat命令用于查看文件的具体存储信息和时间等信息,格式为"stat 文件名称". stat命令可以用于查看文件的存储信息和时间等信息,命令stat anacon ...
- hadoop 异常 ls: Cannot access .: No such file or directory.
bin/hadoop dfs -lsls: Cannot access .: No such file or directory. bin/hadoop dfs -ls /用这个命令代替试试 原因是格 ...
- [转] stat命令输出结果中, Access,Modify,Change的含义
先建立一个空白文件a.txt 1 [emduser@emd tmp]$ touch a.txt 2 3 [emduser@emd tmp]$ ls -al a.txt 4 5 -rw-rw-r ...
- 初次启动hive,解决 ls: cannot access /home/hadoop/spark-2.2.0-bin-hadoop2.6/lib/spark-assembly-*.jar: No such file or directory问题
>>提君博客原创 http://www.cnblogs.com/tijun/ << 刚刚安装好hive,进行第一次启动 提君博客原创 [hadoop@ltt1 bin]$ ...
- /dev/root: No such file or directory
/*************************************************************************** * /dev/root: No such fi ...
- qemu 出现Could not access KVM kernel module: No such file or directory failed to initialize KVM: No such file or directory
使用qemu命令 qemu-system-x86_64 -hda image/ubuntu-test.img -cdrom ubuntu-16.04.2-server-amd64.iso -m 102 ...
- 使用PuTTY软件远程登录root被拒:access denied
PuTTY是一个Telnet.SSH.rlogin.纯TCP以及串行接口连接软件. 使用PuTTY软件远程登录root时,提示:ACCESS DENIED,很有可能是由sshd的默认配置造成的. 可以 ...
随机推荐
- 数据库路由中间件MyCat - 源代码篇(3)
此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 2. 前端连接建立与认证 Title:MySql连接建立以及认证过程client->MySql:1.T ...
- Each record in table should have a unique `key` prop,or set `rowKey` to an unique primary key.
Each record in table should have a unique `key` prop,or set `rowKey` to an unique primary key. 1.rea ...
- 剑指Offer的学习笔记(C#篇)-- 包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 一 . 题目该怎么想 1 . 定义栈的数据结构:实现Push.Pop.Top.Min方 ...
- katalon studio配置git与git项目创建
katalon 是一款在2015年诞生的可以安装在windows.macOS.linux操作系统上,基于selenium 和 Appium 测试框架,并集成了这些框架的优点的自动化测试工具.关于这个工 ...
- CodeForces - 851B -Arpa and an exam about geometry(计算几何)
Arpa is taking a geometry exam. Here is the last problem of the exam. You are given three points a, ...
- hdu2510-符号三角形(dfs+打表)
n只有24 可以写个暴力搜索,然后打表,不然这个很难通过剪枝直接优化到1s以内. #include<bits/stdc++.h> #define inf 0x3f3f3f3f ; usin ...
- Table行合并操作
此方法不可取,但几天心血 保留,已有新想法,稍后会出一个完善的Table行列合并方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...
- ms sqlserver 登录失败 错误:4064
无法打开用户默认数据库.登录失败.用户‘sa’登录失败.(Microsoft SQL Server, 错误:4064) 解决方法:解决方法:先用windows身份验证的方式登录进去,然后在 安全性=& ...
- sql server replace函数巧妙完成字符串联结
示例一: 需求:将'1,2,3,4,5,6,7,8,9,10'转成:'1','2','3','4','5','6','7','8','9','10' ),) set @s='1,2,3,4,5,6,7 ...
- Nginx中的Rewrite的重定向配置与实践
阅读目录 一:理解地址重写 与 地址转发的含义. 二:理解 Rewrite指令 使用 三:理解if指令 四:理解防盗链及nginx配置 简介:Rewrite是Nginx服务器提供的一个重要的功能, ...