我正在为“开发”组中的用户创建一个共享文件夹。我在使用一系列命令来执行此操作时遇到麻烦,我需要设置以下权限:
我可以使用哪些命令系列来完成此任务? 我只是似乎无法使用chmod和来实现此目的,当我以其他用户身份登录时,即使设置了粘性位,我也不断获得拒绝查看该文件夹或创建文件的权限。
答案 0 :(得分:1)
天使和弦,
首先,您必须在请求中声明您是否具有操作文件系统权限的 root 特权(登录,sudo)。
现在您需要将任务拆分为较小的块:
a。将用户添加到开发人员组(dev_group-假定已经存在)
AlwaysScrollable()
b。创建开发者组目录
import Foundation
extension Data {
var prettyPrintedJSONString: NSString? { /// NSString gives us a nice sanitized debugDescription
guard let object = try? JSONSerialization.jsonObject(with: self, options: []),
let data = try? JSONSerialization.data(withJSONObject: object, options: [.prettyPrinted]),
let prettyPrintedString = NSString(data: data, encoding: String.Encoding.utf8.rawValue) else { return nil }
return prettyPrintedString
}
}
let str = "[{\"userId\" : \"5e633967c04aff49e5e22c5b\", \"onlineStatus\" : 1 }]".data(using: .utf8)!.prettyPrintedJSONString!
debugPrint(str)
c。在文件夹上分配权限:请参见doc
- 所有者root.dev_group(根)
- 所有者rwx-可以读取,创建,更改到目录
- rwx组-可以读取,创建,更改到目录
- 其他/世界r-x-只能读取并更改到目录(检查是否需要)
- 设置SGID-新创建的文件/目录从目录继承组
- 将'stiky'位置1-只能操作自己的文件/目录
root# for user in (user1 user2 user3 ... usern)
do
usermod -a -G dev_group $user
done
或
mkdir /some/path/to/developer/group/dir
注意:对目录的执行权限允许更改为目录
d。为每个用户定义umask:
- 用户rwx
- r组-
- 其他---
(在shell初始化脚本中为.bashrc .profile...。)
chown root.dev_group [path to directory] # owner root.dev_group
chmod u=rwx,g=rwx,o=rx [path to directory] # user rwx; group rwx; other r-x
chmod g+s [path to directory] # SGID bit inherit group from directory for new files and directories
chmod +t [path to directory] # stiky bit manipulate own files and directories only
注意::如果由于任何正当原因umask必须不同,则用户必须在创建时更改权限,在新文件/目录上复制时间
使用访问控制列表acl和SELinux contexts可以实现更细化的访问限制。