在linux中创建文件时选择BSD或sys5风格
问题描述:
当我在linux中创建文件时,默认组拥有者成为创建文件的进程的gid。如果我将SGID添加到父目录文件将继承父目录所有者组。此外,我可以更改FS挂载选项,以表现出像sys5或类似BSD。在linux中创建文件时选择BSD或sys5风格
如果我想选择此选项,无论目录权限和fs挂载选项如何?有c函数选项或系统调用参数,它允许您选择组所有者?
$ find . -ls
262 4 drwxrwxr-x 4 devops devops 4096 Apr 24 18:01 .
999 4 drwxrwxr-x 2 devops root 4096 Apr 24 18:03 ./dir1
6093 4 drwxrwsr-x 2 devops root 4096 Apr 24 18:03 ./dir2
$ touch dir1/file dir2/file
$ find . -ls
262 4 drwxrwxr-x 4 devops devops 4096 Apr 24 18:01 .
999 4 drwxrwxr-x 2 devops root 4096 Apr 24 18:04 ./dir1
5576 0 -rw-rw-r-- 1 devops devops 0 Apr 24 18:04 ./dir1/file
6093 4 drwxrwsr-x 2 devops root 4096 Apr 24 18:04 ./dir2
6094 0 -rw-rw-r-- 1 devops root 0 Apr 24 18:04 ./dir2/file
$
而且我希望有这样的事情:
$ mytouch -s BSD dir1/file1
$ mytouch -s sys5 dir1/file2
$ find dir1 -ls
999 4 drwxrwxr-x 2 devops root 4096 Apr 24 18:10 dir1
6213 0 -rw-rw-r-- 1 devops root 0 Apr 24 18:10 dir1/file1
6214 0 -rw-rw-r-- 1 devops devops 0 Apr 24 18:10 dir1/file2
$
答
机会是,你不能。
粘滞位的实现完全存在于内核中,并且没有控制其操作方式的open()
或creat()
的选项。
你的程序可能会想到在调用chown()
后手动重置文件组。但是,如果您的进程以超级用户身份运行,或者作为拥有父目录的组的成员运行,则这只能可靠地运行。
请输入密码。上下文很重要。如果你真的关心权限,chown()和chmod()会和他们的命令行好友做同样的事情。取决于粘性位真的很黑,我强烈反对。 – tadman