我有一堆长时间运行的脚本和应用程序,它们将输出结果存储在少数用户之间共享的目录中.我想要一种方法来确保在此共享目录下创建的每个文件和目录都自动拥有u=rwxg=rwxo=r权限.
我知道我可以使用umask 006我的各种脚本,但我不喜欢这种方法,因为许多用户编写自己的脚本,可能忘记自己设置umask.
我真的只是希望文件系统设置新创建的文件和目录,如果它在某个文件夹中,则具有一定的权限.这是可能吗?
更新:我认为可以使用默认ACL功能使用POSIX ACL来完成,但目前这一切都在我的脑海中.如果任何人都可以解释如何使用默认ACL,它可能会很好地回答这个问题.
第一个问题
请问,您能解释一下在MVC中如何实现最简单的ACL.
这是在Controller中使用Acl的第一种方法......
<?php
class MyController extends Controller {
public function myMethod() {
//It is just abstract code
$acl = new Acl();
$acl->setController('MyController');
$acl->setMethod('myMethod');
$acl->getRole();
if (!$acl->allowed()) die("You're not allowed to do it!");
...
}
}
?>
Run Code Online (Sandbox Code Playgroud)
这是一个非常糟糕的方法,它的缺点是我们必须将Acl代码添加到每个控制器的方法中,但我们不需要任何其他依赖项!
接下来的方法是制作所有控制器的方法private并将ACL代码添加到控制器的__call方法中.
<?php
class MyController extends Controller {
private function myMethod() {
...
}
public function __call($name, $params) {
//It is just abstract code
$acl = new Acl();
$acl->setController(__CLASS__);
$acl->setMethod($name);
$acl->getRole();
if (!$acl->allowed()) die("You're not allowed to do it!"); …Run Code Online (Sandbox Code Playgroud) 如何再次将AWS S3公用文件夹设为私有?
我正在测试一些临时数据,所以我在一个桶中公开了整个文件夹.我想再次限制它的访问权限.那么如何让文件夹再次保密呢?
一直在寻找这个问题但现在无济于事:
如何确定片段是从backstack恢复?我在FragmentActivity中使用兼容性库和ListFragment.选择ListFragment中的项目时,将启动新的片段以替换ListFragment.
我注意到当FragmentActivity暂停时,会调用Fragment的onSaveInstanceState.但是当Fragment通过FragmentTransaction放入后端堆栈时,onSaveInstanceState不会被调用,那么使用null savedInstanceState Bundle调用生命周期方法onCreateView和onActivityCreated.
我问这个是因为我想在创建或恢复Fragment时加载一些数据,但是当用户通过它回来时却不是这样.堆栈中.
我看过如何检查片段是否从后台恢复? 但希望增加更多细节,希望这会引发答案.
但请注意:可以在onDestroy()之前的任何时间调用此方法.在许多情况下,片段可能大部分被拆除(例如放置在没有显示UI的后台堆栈上),但是在其拥有的活动实际上需要保存其状态之前,其状态将不会被保存.
所以onSaveInstanceState绝对是不可能的......
android acl fragment android-compatibility android-support-library
我正在开发一个Web应用程序,我目前将以下ACL分配给它用于访问其数据的AWS账户:
{
"Statement": [
{
"Sid": "xxxxxxxxx", // don't know if this is supposed to be confidential
"Action": [
"s3:*"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::cdn.crayze.com/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,我想使其更具限制性,以便在我们的AWS凭据遭到破坏时,攻击者无法销毁任何数据.
从文档中看,我似乎只想允许以下操作:s3:GetObject而且s3:PutObject,我特别希望帐户只能创建不存在的对象 - 即应拒绝对现有对象的PUT请求.这可能吗?
我的github项目中有一些贡献者.我想只允许其中一个"推"到掌握.而这个人不是我(存储库的所有者).有可能吗?
有人能告诉我如何获得一个标有"编辑"ACL权限的类型的所有实体吗?
我想用Doctrine EntityManager构建一个查询.
我使用vagrant和chef在虚拟机中开发自己的博客.为了方便访问wordpress文件夹,我创建了一个共享文件夹.
基本上wordpress文件夹在我的主机上,并作为共享文件夹挂载在VM中的/ var/www/wordpress中.配置类似于:
config.vm.share_folder "foo", "/guest/path", "/host/path"
Run Code Online (Sandbox Code Playgroud)
我的问题是,vagrant:vagrant即使我在主机上更改了VM,我的VM中的所有权也始终如此.VM中的所有权更改将被忽略.
我不能chown用来设置上传目录的所有权www-data:www-data.
可以使用chmod和更改访问限制777,但这是一个非常丑陋的黑客.
这就是我真正想要的.这可能吗?:
我想更改C:驱动器的ACL .我想要做的是删除用户可以直接在驱动器上创建文件夹的权限.我在编写时在另一个文件夹上测试了脚本.它没有问题.完成后,我在我们的测试环境中尝试了实际驱动器上的脚本.我得到一个我无法弄清楚的错误.如果我手动删除权限它没有问题.有人有个主意吗?
$path = "C:\"
$colRights = [System.Security.AccessControl.FileSystemRights]"CreateDirectories"
$InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::None
$PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None
$objType =[System.Security.AccessControl.AccessControlType]::Allow
$objUser = New-Object System.Security.Principal.NTAccount("Authenticated Users")
$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule ($objUser, $colRights, $InheritanceFlag, $PropagationFlag, $objType)
$objACL = Get-ACL $path
$objACL.RemoveAccessRule($objACE)
Set-ACL $path $objACL
Run Code Online (Sandbox Code Playgroud)
错误是:
Set-Acl : The security identifier is not allowed to be the owner of this object.
At C:\Users\mhodler\Desktop\Remove Permission.ps1:57 char:8
+ Set-ACL <<<< $path $objACL
+ CategoryInfo : InvalidOperation: (C:\:String) [Set-Acl], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.SetAclCommand
Run Code Online (Sandbox Code Playgroud) 在Web应用程序中使用Symfony2中的ACL实现时,我们遇到了一个用例,其中建议的使用ACL的方法(检查单个域对象的用户权限)变得不可行.因此,我们想知道是否存在可用于解决问题的ACL API的某些部分.
用例位于控制器中,该控制器准备要在模板中呈现的域对象列表,以便用户可以选择她想要编辑的对象.用户无权编辑数据库中的所有对象,因此必须相应地过滤列表.
这可以(根据其他解决方案)根据两种策略完成:
1)一个查询过滤器,它使用当前用户的ACL为对象(或多个对象)附加有效对象id的给定查询.即:
WHERE <other conditions> AND u.id IN(<list of legal object ids here>)
Run Code Online (Sandbox Code Playgroud)
2)一个查询后过滤器,用于删除用户在从数据库中检索完整列表后没有正确权限的对象.即:
$objs = <query for objects>
$objIds = <getting all the permitted obj ids from the ACL>
for ($obj in $objs) {
if (in_array($obj.id, $objIds) { $result[] = $obj; }
}
return $result;
Run Code Online (Sandbox Code Playgroud)
第一种策略是可取的,因为数据库正在进行所有过滤工作,并且都需要两次数据库查询.一个用于ACL,一个用于实际查询,但这可能是不可避免的.
在Symfony2中是否有任何一种策略(或实现预期结果)的实现?
acl ×10
amazon-s3 ×2
permissions ×2
php ×2
symfony ×2
android ×1
branch ×1
chef-infra ×1
doctrine ×1
fragment ×1
git ×1
github ×1
linux ×1
oop ×1
powershell ×1
protection ×1
umask ×1
vagrant ×1