使用 chattr 命令的不可变位 Linux 密码技巧
您可以在 Linux 上借助名为 chattr 的实用程序使文件不可变。您可以在 Linux 的第二个扩展文件系统上更改文件属性。操作员可以+将选定的属性添加到文件的现有属性中;-将它们删除;并使=它们成为文件的唯一属性。
该-R选项递归更改目录及其内容的属性。这对于保护 Web 服务器 DocumentRoot 或其他可通过 sftp/ftp 公开访问的目录非常有用。
Linux 上的不可变属性是什么?
具有不可变属性的文件不能:
- 修改的
- 已删除
- 重命名
- 任何人(包括 root 用户)均未创建软链接或硬链接。
只有 root(超级用户)或拥有 CAP_LINUX_IMMUTABLE 能力的进程才能设置或清除此属性。使用 lsattr 命令列出使用 chattr 命令设置的 Linux 第二个扩展文件系统上的文件属性。
如何在 Linux 上使文件不可变
首先,您需要以 root 用户身份登录。只有 root 用户才能设置和删除文件上的不可变标志。语法是:
chattr +i file chattr +i /path/to/filename
在 Linux 上输入以下命令来对 /etc/shadow 文件进行写保护:
# chattr +i /etc/shadow
现在,以普通用户身份登录(例如 vivek)并输入 passwd 命令来更改密码:
$ passwd
Changing password for user vivek. Changing password for vivek (current) UNIX password: OLDPASSWED New password: NEWPASSWD Retype new password:NEWPASSWD passwd: all authentication tokens updated successfully.
注销并尝试使用新密码登录。但是系统不会接受您的新密码。您仍需使用旧密码。
要使用 lsatter 命令(以 root 用户身份运行)获取 Linux 第二扩展文件系统列表:
# lsattr /etc/shadow
----i-------- /etc/shadow
请注意,即使是 root 用户也不允许更改密码。您可以使用以下命令删除该属性(同样必须以 root 用户身份运行):
chattr -i /etc/shadow lsattr /etc/shadow
示例输出:
------------- /etc/shadow
保护 Linux 上的挂载点
想要对整个挂载点进行写保护,以便任何人都无法添加或删除文件(包括 root 用户)?请尝试:
# secure partition mounted at /securebackup location ## chattr +i -R /securebackup lsattr -d /securebackup lsattr -l /securebackup cd /securebackup ## Try to add or delete something ## echo "test" > foo.txt mkdir foo ls -l rm SeaToolsDOS223ALL.ISO ## Remove it again ## cd / chattr -i -R /securebackup lsattr -d /securebackup
示例输出:
图 01:如何在 Linux 上使文件和挂载点不可变以提高安全性
保护重要文件
您可以保护重要文件,例如:
- /etc/php.ini
- 密码文件 /etc/passwd
- /etc/shadow
- /etc/group 及更多
关于 FreeBSD 或 Apple OS X Unix 类用户的说明
尝试 chflags 命令。此命令会修改列出的文件的文件标志,如参数所指定,包括用户不可变标志。
要查看所有 Linux 第二扩展文件系统属性,请输入以下命令阅读手册页: