![使用 shell 命令给文件夹设置密码](https://linux22.com/image/525540/%E4%BD%BF%E7%94%A8%20shell%20%E5%91%BD%E4%BB%A4%E7%BB%99%E6%96%87%E4%BB%B6%E5%A4%B9%E8%AE%BE%E7%BD%AE%E5%AF%86%E7%A0%81.png)
我知道这可能很简单,但我在网上查了一下却没有找到
我想在 Linux 中使用 shell 命令为文件夹设置密码(以便只有知道密码的人才能进入)。有人知道我该怎么做吗?
答案1
真正的答案是使用密码保护文件夹不起作用。不过,标准 Unix 权限或扩展权限确实提供了一定程度的保护。您询问的是针对未指定问题的具体解决方案。我认为您有两个问题之一:
- 您希望阻止系统上的其他用户访问文件夹
- 您希望阻止任何人在任何时间、任何地点未经许可访问文件夹
在情况 #1 中,您可以通过 chmod(1) 命令获得 Unix 权限。您还可以使用 setfacl(1) 和 getfacl(1) 命令来使用一些高级技巧。请注意,您想要的“密码”与执行访问的帐户绑定。如果您担心某人使用帐户的方式太多(例如 ssh、X11、控制台、串行、ftp、Subversion),那么请了解复杂的 PAM(可插入身份验证模块)世界并限制其选项。如果您认为使用的密码太弱(例如“password123”),那么 PAM 可以强制密码的复杂性和长度。简而言之,让访问文件夹的身份验证通过操作系统用户身份验证方法进行。这提供了最佳的记帐、限制和可升级路径。
为了演示 setfacl 和 getfacl 命令,假设有三个用户:“u1”、“u2”和“u3”。我们正在查看“u1”拥有的文件夹“/f”。“u1”将只向“u2”授予访问权限,而不向“u3”授予访问权限。
u1% umask 700; mkdir /f; setfacl -m user:u2:rwx /f
u1% getfacl /f
user::rwx
user:u2:rwx <-- access granted
group::--- <-- anyone in the same group is still denied
mask::rwx
other::--- <-- everybody else is locked out too
在情况 #2 中,您遇到了一个恶意攻击者,他们可以随时访问硬盘的任何部分。您必须使用加密和环回设备来强制执行此操作。我不会在这里讨论这个话题,因为它相当复杂。一些发行版(Ubuntu?)允许对主目录进行加密。
如果没有办法提示用户输入密码,或者在另一个系统上安装文件系统可以绕过密码要求,那么使用密码保护文件就毫无用处。这就是加密的 U 盘在 Linux 中难以工作的原因——它们使用 Windows 专用软件来收集解密设备所需的密码。
= 零滞后时间
答案2
通常,您可以使用组权限来执行此操作。您可以创建一个组,将您希望能够查看这些文件的用户添加到该组,然后只授予用户和组读取文件的权限,即
chmod 640 file.txt
更新:
要添加组(以 root 身份),请使用“groupadd”命令
# groupadd mygroupname
删除:
# groupdel mygroupname
添加/删除群组中的人员:
# usermod -G mygroupname userNameToAdd
请注意,这要求您是系统所有者。如果您想要以系统用户的身份执行此操作,您最好将文件添加到存档中并为其设置密码,或者加密文件并共享密钥。
正如 embobo 在他们的评论中所说的那样,您可以使用 gpasswd 来创建可以添加/删除组中人员的组管理员,请查看该手册页。
答案3
另一种方法是压缩目录并使用此命令删除未加密的文件
zip -e protected.zip directory/ && rm -rf directory/
系统将提示您(两次)输入密码。
您可以通过解压缩来再次“解锁”该文件夹。
看看这man zip
是否man unzip
看起来可能是一个解决方案