我用了你的方法,但是创建的aaa目录还是700权限,虽然我不是用root用户启动的程序,我是用lander用户启动的useradd -s /sbin/nologin -g lander lander usermod -L lander
时间: 2024-03-05 08:53:23 浏览: 16
如果你使用了你上面提到的命令来创建用户并修改用户组和登录Shell,并且使用lander用户启动了程序,那么创建的aaa目录应该是lander用户的家目录,权限应该是700。这是因为在Linux系统中,每个用户都有自己的家目录,而默认情况下,用户的家目录权限是700,只有该用户能够读写和执行该目录。
如果你想修改aaa目录的权限,可以使用chmod命令来修改,比如:
```
chmod 755 /path/to/aaa
```
这样就将aaa目录的权限改为了755,即允许所有用户读写和执行该目录,但只有lander用户才能够修改其中的文件。
相关问题
我是用lander用户启动的java程序
如果你是用lander用户启动的Java程序,那么你可以尝试以下代码来修改aaa目录的权限:
```java
import java.io.File;
import java.nio.file.Files;
import java.nio.file.attribute.PosixFilePermission;
import java.util.HashSet;
import java.util.Set;
public class FilePermissionExample {
public static void main(String[] args) throws Exception {
File file = new File("/path/to/aaa");
Set<PosixFilePermission> perms = new HashSet<PosixFilePermission>();
perms.add(PosixFilePermission.OWNER_READ);
perms.add(PosixFilePermission.OWNER_WRITE);
perms.add(PosixFilePermission.OWNER_EXECUTE);
perms.add(PosixFilePermission.GROUP_READ);
perms.add(PosixFilePermission.GROUP_WRITE);
perms.add(PosixFilePermission.GROUP_EXECUTE);
perms.add(PosixFilePermission.OTHERS_READ);
perms.add(PosixFilePermission.OTHERS_WRITE);
perms.add(PosixFilePermission.OTHERS_EXECUTE);
Files.setPosixFilePermissions(file.toPath(), perms);
}
}
```
这段代码使用了Java 7中引入的NIO.2 API中的Files类来修改文件或目录的权限。在Linux系统中,文件或目录的权限是由一组权限位组成的,分别对应文件或目录所有者、所属组和其他用户的读、写和执行权限。在Java中,可以使用PosixFilePermission类来表示这些权限位,然后使用Files的setPosixFilePermissions方法来设置文件或目录的权限。
需要注意的是,该代码仅在Linux系统上有效,如果你在Windows系统上运行该代码,会抛出UnsupportedOperationException异常。此外,你必须以有足够权限的用户身份运行Java程序,否则无法修改文件或目录的权限。
在槽函数中报错 paintengine should no lander be called
这个错误通常是因为在使用QPainter对象进行绘图时,没有正确的结束绘图操作而导致的。在使用QPainter对象进行绘图时,应该遵循以下原则:
1. 在需要绘图的Widget中重写paintEvent函数,只有在paintEvent函数中才能获取QPainter对象进行绘图。
2. 在绘图操作完成后,要调用QPainter对象的end函数结束绘图操作。
如果在其他函数中获取QPainter对象进行绘图,并且没有结束绘图操作,就会报出 "paintengine should no lander be called" 错误。因此,我们应该避免在非paintEvent函数中进行绘图操作。
如果你在槽函数中需要进行绘图操作,可以通过调用update函数来触发paintEvent函数,然后在paintEvent函数中完成绘图操作,示例代码如下:
```cpp
void MyWidget::onButtonClicked()
{
// 修改需要绘图的数据
...
// 触发paintEvent函数
update();
}
void MyWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
// 绘制操作
...
}
```
这样,在槽函数中修改需要绘图的数据后,调用update函数就会触发paintEvent函数,然后在paintEvent函数中完成绘图操作,就可以避免 "paintengine should no lander be called" 错误。