Laravel - 创建具有特定用户、组和权限的文件
Laravel - Create file with specific user, group and permissions
我尝试使用 put
创建一个文件并赋予该文件 777
.
权限
如果我这样创建文件:
use File;
...
$content = "<?php echo 'test'; ?>";
$file = app_path() . '/Http/Controllers/test.php';
File::put($file, $content);
但是,文件是使用以下权限创建的:
-rw-r--r-- 1 daemon daemon 2,2K Mär 14 08:08 test.php
此外,用户和组是 daemon
而不是 root
。
如何创建具有用户和组 root
以及权限 rwxrwxrwx
的文件?
例如
-rwxrwxrwx 1 root root 2,2K Mär 14 08:08 test.php
我也将这些行添加到我的 /etc/sudoers
www-data ALL=(ALL) NOPASSWD: /bin/chmod
www-data ALL=(ALL) NOPASSWD: /bin/chown
www-data ALL=(ALL) NOPASSWD: /bin/chgrp
但我仍然得到 chmod(): no permission
,代码如下:
File::chmod($unitPath, 0777);
chown($unitPath,"root");
chgrp($unitPath,"root");
Laravel 内置支持更改 mod
例如:
File::chmod($file,0755); //the leading zero is a must
不幸的是,它的文件系统 module 中没有 chown,但您可以调用 php 一个
chown($file,"root");
更改群组
chgrp($file,"group");
注意:如果您不是超级用户,更改组和所有者将失败,即使您可以 sudo。
我用shell_exec()
解决了
shell_exec('sudo chmod 0777 '. $unitPath);
shell_exec('sudo chown root:root '. $unitPath);
通过在文件 /etc/sudoers
.
中输入这些行,确保允许 www-data
执行命令
www-data ALL=(ALL) NOPASSWD: /bin/chmod
www-data ALL=(ALL) NOPASSWD: /bin/chown
重要!始终使用 visudo
来编辑 /etc/sudoers
,否则您很容易出现语法错误并损坏文件并失去使用 sudo
的可能性,并且您需要通过从 live cd 启动来修复系统.
我尝试使用 put
创建一个文件并赋予该文件 777
.
如果我这样创建文件:
use File;
...
$content = "<?php echo 'test'; ?>";
$file = app_path() . '/Http/Controllers/test.php';
File::put($file, $content);
但是,文件是使用以下权限创建的:
-rw-r--r-- 1 daemon daemon 2,2K Mär 14 08:08 test.php
此外,用户和组是 daemon
而不是 root
。
如何创建具有用户和组 root
以及权限 rwxrwxrwx
的文件?
例如
-rwxrwxrwx 1 root root 2,2K Mär 14 08:08 test.php
我也将这些行添加到我的 /etc/sudoers
www-data ALL=(ALL) NOPASSWD: /bin/chmod
www-data ALL=(ALL) NOPASSWD: /bin/chown
www-data ALL=(ALL) NOPASSWD: /bin/chgrp
但我仍然得到 chmod(): no permission
,代码如下:
File::chmod($unitPath, 0777);
chown($unitPath,"root");
chgrp($unitPath,"root");
Laravel 内置支持更改 mod
例如:
File::chmod($file,0755); //the leading zero is a must
不幸的是,它的文件系统 module 中没有 chown,但您可以调用 php 一个
chown($file,"root");
更改群组
chgrp($file,"group");
注意:如果您不是超级用户,更改组和所有者将失败,即使您可以 sudo。
我用shell_exec()
shell_exec('sudo chmod 0777 '. $unitPath);
shell_exec('sudo chown root:root '. $unitPath);
通过在文件 /etc/sudoers
.
www-data
执行命令
www-data ALL=(ALL) NOPASSWD: /bin/chmod
www-data ALL=(ALL) NOPASSWD: /bin/chown
重要!始终使用 visudo
来编辑 /etc/sudoers
,否则您很容易出现语法错误并损坏文件并失去使用 sudo
的可能性,并且您需要通过从 live cd 启动来修复系统.