我正在使用 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
到该组中。
例如,添加me
到apache
组中:
$ sudo usermod -a -G apache me
另一种方法是创建另一个组并将apache
和添加me
到该辅助组(例如 apacheplus),然后在 上运行以下命令/srv/www/htdocs
:
$ sudo chgrp -R apacheplus /srv/www/htdocs