C 在linux中创建文件时选择BSD或sys5样式
当我在linux中创建文件时,默认组所有者成为创建文件的进程的gid。若我将SGID添加到父目录,则该文件将继承父目录所有者组。此外,我还可以更改fs装载选项,使其行为类似于sys5或BSD 如果我不考虑目录权限和fs装载选项而选择此选项,该怎么办?是否有c函数选项或syscall参数允许您选择组所有者C 在linux中创建文件时选择BSD或sys5样式,c,linux,filesystems,bsd,systems-programming,C,Linux,Filesystems,Bsd,Systems Programming,当我在linux中创建文件时,默认组所有者成为创建文件的进程的gid。若我将SGID添加到父目录,则该文件将继承父目录所有者组。此外,我还可以更改fs装载选项,使其行为类似于sys5或BSD 如果我不考虑目录权限和fs装载选项而选择此选项,该怎么办?是否有c函数选项或syscall参数允许您选择组所有者 $ find . -ls 262 4 drwxrwxr-x 4 devops devops 4096 Apr 24 18:01 . 999 4
$ 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()
或create()
选项
您的程序可以调用
chown()
,在创建文件组后手动重置文件组。但是,只有当您的进程以root用户身份运行,或者作为拥有父目录的组的成员运行时,这才可以可靠地工作。很可能您不能
粘性位的实现完全存在于内核中,没有控制其操作方式的open()
或create()
选项
您的程序可以调用
chown()
,在创建文件组后手动重置文件组。但是,只有当您的进程以root用户身份运行,或者作为拥有父目录的组的成员运行时,此操作才能可靠地工作。请输入代码。背景很重要。如果您真的关心权限,chown()
和chmod()
与他们的命令行好友做同样的事情。依赖于粘性的东西真的很难,我强烈反对。请输入代码。背景很重要。如果您真的关心权限,chown()
和chmod()
与他们的命令行好友做同样的事情。依靠黏糊糊的东西真的很烦人,我强烈反对这样做。