在Linux上如何为单个用户设置某个文件的读、写、执行权限?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Linux上如何为单个用户设置某个文件的读、写、执行权限?相关的知识,希望对你有一定的参考价值。

参考技术A 请自行安装ssh远程工具
远程连接上linux服务器
我们创建一个sh的文件
看看我们创建的文件
这里可以看到是没有可执行权限的
接下来我们要用到chmod命令
先看看chmod命令的帮助信息
接着我们添加可执行权限
chmod
777
test.sh
设置完成之后在来看看文件属性
参考技术B 创建组,把需要拥有rwx的用户放进本组中,不需要rwx的用户排除组外,
设置
文件夹及其内文件
组属性rwx
其他用户属性为rw-
但问题是既然有w权限那他就可以改属性,这样做也
没有意义
呀除非只给r属性

不间断的读/写调用

【中文标题】不间断的读/写调用【英文标题】:Uninterruptible read/write calls 【发布时间】:2010-07-30 15:26:12 【问题描述】:

在我在 Linux 上进行 C 编程冒险期间的某个时刻,我遇到了一些标志(可能是 ioctl/fcntl?),它使文件描述符上的读写操作不会中断。

不幸的是,我不记得如何做到这一点,或者我在哪里读到它。有人能解释一下吗?

更新0

为了优化我的查询,我采用了相同的阻塞并保证 fwrite()fread() 提供,没有用户空间缓冲。

【问题讨论】:

【参考方案1】:

您可以通过确保所有信号处理程序都安装有SA_RESTART 标志sigaction() 来避免read()write() 中的EINTR

但是,这并不能保护您免受 读取/写入。这只能通过将read() / write() 放入循环中来实现(除了必须提供给read() / write() 调用的缓冲区之外,它不需要额外的缓冲区。)

这样的循环看起来像:

/* If return value is less than `count', then errno == 0 indicates end of file,
 * otherwise errno indicates the error that occurred. */
ssize_t hard_read(int fd, void *buf, size_t count)

    ssize_t rv;
    ssize_t total_read = 0;

    while (total_read < count)
    
        rv = read(fd, (char *)buf + total_read, count - total_read);

        if (rv == 0)
            errno = 0;

        if (rv < 1)
            if (errno == EINTR)
                continue;
            else
                break;

        total_read += rv;
    

    return rv;

【讨论】:

【参考方案2】:

您是否希望在读/写时禁用中断,或者保证在您的时候没有其他人会读/写文件?

第二种,你可以使用fcntl()的F_GETLK、F_SETLK和F_SETLKW分别获取、释放和测试记录锁。然而,由于 POSIX 锁只是建议性的,Linux 不会强制执行它们——它只在协作进程之间有意义。

第一项任务涉及进入零环并禁用本地处理器上的中断(或全部,如果您在 SMP 系统上)。完成后记得再次启用它们!

【讨论】:

第一个。我知道 POSIX 咨询锁,并且也同意这些不是我所追求的。

以上是关于在Linux上如何为单个用户设置某个文件的读、写、执行权限?的主要内容,如果未能解决你的问题,请参考以下文章

设置 Mongodb 文件夹的读/写权限

linux文件权限

linux权限位说明

linux文件的权限说明

liunx文件权限

C#如何获取另一个用户的读/写权限? [复制]