在 Linux 中为新文件夹和文件设置默认权限

在 Linux 中为新文件夹和文件设置默认权限

我正在使用 OpenSuSE,我的计算机只有 2 个帐户:root 和 me。我有一个目录/srv/www/htdocs/abc

我只是想对其进行设置,以便在此目录中创建新文件夹或文件时,它们的权限将设置为 777。

当在此目录中创建新文件时,我必须再次将它们设置为 777 以获得写入权限。

我使用 root 并输入:

chmod me /srv/www/htdocs

但我不工作。我怎样才能做到这一点?

答案1

使用chmod用于更改权限,该命令chown用于更改文件和目录的所有权。

所有权

要更改目录的所有权,您可以使用以下命令:

$ sudo chown -R me /srv/www/htdocs

笔记:我们正在使用该sudo工具将这些命令的权限提升到与 root 相同的级别,而无需成为 root。

权限

要更改此目录的权限:

$ sudo chmod -R 777 /srv/www/htdocs

掩码

使用该命令umask设置您的终端,以便在创建文件和目录时,它们的权限会受到一些影响。使用时应小心,umask因为在某些情况下它不会完全按照您的想法授予您权限。

对于目录来说似乎不错:

$ for i in `seq 1 7`;do echo "umask: 00$i"; umask 00$i; rm -fr blah; mkdir blah;ls -l|grep blah;done
umask: 001
drwxrwxrw-   2 saml saml     4096 Jul 29 14:39 blah
umask: 002
drwxrwxr-x   2 saml saml     4096 Jul 29 14:39 blah
umask: 003
drwxrwxr--   2 saml saml     4096 Jul 29 14:39 blah
umask: 004
drwxrwx-wx   2 saml saml     4096 Jul 29 14:39 blah
umask: 005
drwxrwx-w-   2 saml saml     4096 Jul 29 14:39 blah
umask: 006
drwxrwx--x   2 saml saml     4096 Jul 29 14:39 blah
umask: 007
drwxrwx---   2 saml saml     4096 Jul 29 14:39 blah

但是,它不会让您拥有与特定 umask 完全一致的文件。请参见umask 006下面的示例:

$ for i in `seq 1 7`;do echo "umask: 00$i"; umask 00$i; rm -fr blah; touch blah;ls -l|grep blah;done
umask: 001
-rw-rw-rw-   1 saml saml        0 Jul 29 14:40 blah
umask: 002
-rw-rw-r--   1 saml saml        0 Jul 29 14:40 blah
umask: 003
-rw-rw-r--   1 saml saml        0 Jul 29 14:40 blah
umask: 004
-rw-rw--w-   1 saml saml        0 Jul 29 14:40 blah
umask: 005
-rw-rw--w-   1 saml saml        0 Jul 29 14:40 blah
umask: 006
-rw-rw----   1 saml saml        0 Jul 29 14:40 blah
umask: 007
-rw-rw----   1 saml saml        0 Jul 29 14:40 blah

还有其他的,这只是为了强调一个例子!

那你该怎么办?

假设您正在处理 Apache 目录(基于 path /srv/www/htdocs),我会查找您的用户me和 Apache 运行的用户都是其成员的 Unix 组。您可以使用以下groups命令来确定:

$ groups saml
saml : saml vboxusers jupiter newgrp

$ groups apache
apache : apache

您还可以使用id命令:

$ id saml
uid=500(saml) gid=501(saml) groups=501(saml),502(vboxusers),503(jupiter),10000(newgrp)

$ id apache
uid=48(apache) gid=48(apache) groups=48(apache)

在我的系统上,Apache 由用户运行apache。查看该用户,您可以看到它apache也在一个组中。因此一种方法是将用户添加me到该组中。

例如,添加meapache组中:

$ sudo usermod -a -G apache me

另一种方法是创建另一个组并将apache和添加me到该辅助组(例如 apacheplus),然后在 上运行以下命令/srv/www/htdocs

$ sudo chgrp -R apacheplus /srv/www/htdocs

相关内容