CentOS/Linux上授予用户文件夹写入权限

一、linux文件权限介绍

在Linux中,一切皆为文件(目录也是文件),每个文件对用户具有可读(read)、可写(write)、可执行(execute)权限。目录的执行操作表示是否有权限进入该目录,文件的可执行表示是否可以运行该文件。文件都会从属于一个用户和一个用户组,每个文件针对文件的拥有者、所属组以及其他用户组具有特定的权限。

1.1.查看文件权限示例

[root@ZSSM01 zhsm]# ls -la
total 16356
drwxr-xr-x 2 root  root     4096 Nov 18 15:44 .
drwxrwxr-x 6 zsitd zsitd      55 Nov  6 14:39 ..
-rw-r--r-- 1 root  root      168 Jul 27 10:02 appsettings.Development.json
-rw-r--r-- 1 root  root      629 Nov  3 13:52 appsettings.json
-rw-r--r-- 1 root  root    52616 May 12  2020 dotnet-aspnet-codegenerator-design.dll
-rw-r--r-- 1 root  root       31 Nov  6 14:27 host.json
-rw-r--r-- 1 root  root    37256 Jun 17 22:02 Microsoft.AspNetCore.Authentication.JwtBearer.dll

1.2.权限说明

我们可以看到文件的权限,-rw-rw-r– ,一共有10位数。
其中:

  • 最前面那个 – 代表的是类型(-代表文件,d代表目录,l代表连接)
  • 中间那三个 rw- 代表的是所有者(user)
  • 然后那三个 rw- 代表的是组群(group)
  • 最后那三个 r– 代表的是其他人(other)

权限部分:

  • r 表示文件可以被读(read) ,用数字表示为:4
  • w 表示文件可以被写(write) ,用数字表示为:2
  • x 表示文件可以被执行(如果它是程序的话) ,用数字表示为:1
  • -表示相应的权限还没有被授予,用数字表示为0,
    权限的不同组合,如rwx用数字表示则为7,r-x用数字表示则为5,以此类推。那么一个文件的权限(所有者、所属组及其他)就可能是如下的情况:
  • -rw——- (600) 只有所有者才有读和写的权限
  • -rw-r–r– (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
  • -rwx—— (700) 只有所有者才有读,写,执行的权限
  • -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
  • -rwx–x–x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
  • -rw-rw-rw- (666) 每个人都有读写的权限
  • -rwxrwxrwx (777) 每个人都有读写和执行的权限

1.3.特殊权限

在 linux 系统中还有三种与用户身份无关的三个文件权限属性。即SUID、SGID和Sticky。

1.4.示例

《CentOS/Linux上授予用户文件夹写入权限》

二、授予文件/文件夹权限

2.1.背景/目的

运行在centos下在的.net core webapi站点需要在运行目录下创建和修改文件,因此运行该程序的用户需要对文件夹具有写入权限,而该文件夹是root用户创建。

[program:Sms]
command=dotnet Sudo.Sms.WebApi.dll ; 运行程序的命令
directory=/data/www/sms ; 命令执行的目录
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=zsitd ; 进程执行的用户身份
stopsignal=INT
autostart=true
autorestart=true ;程序意外退出是否自动重启
startsecs=3 ;/自动重启间隔
stderr_logfile=/var/log/supervisor/Sudo.Sms.WebApi.err.log ; 错误日志文件
stdout_logfile=/var/log/supervisor/Sudo.Sms.WebApi.out.log ; 输出日志文件

[root@ZSSM01 ~]# cd /data/www/sms
[root@ZSSM01 sms]# ls -la
total 5880
drwxrwxr-x 2 root  root     4096 Nov 22 13:53 .
drwxrwxr-x 6 zsitd zsitd      55 Nov  6 14:39 ..
-rw-r--r-- 1 root  root      211 Sep  8 14:04 appsettings.Development.json
-rw-r--r-- 1 root  root      575 Sep 14 13:18 appsettings.json
-rw-r--r-- 1 root  root       31 Sep  4 12:07 host.json
-rw-r--r-- 1 root  root    37256 Aug 19 14:48 Microsoft.AspNetCore.Authentication.JwtBearer.dll

2.2.修改文件/文件夹所属组

将文件夹/data/www/sms所属用户组修改为zsitd。

[root@ZSSM01 sms]# chgrp -R zsitd /data/www/sms
[root@ZSSM01 sms]# ls -la
total 5880
drwxrwxr-x 2 root  zsitd    4096 Nov 22 13:53 .
drwxrwxr-x 6 zsitd zsitd      55 Nov  6 14:39 ..
-rw-r--r-- 1 root  zsitd     211 Sep  8 14:04 appsettings.Development.json
-rw-r--r-- 1 root  zsitd     575 Sep 14 13:18 appsettings.json
-rw-r--r-- 1 root  zsitd      31 Sep  4 12:07 host.json
-rw-r--r-- 1 root  zsitd   37256 Aug 19 14:48 Microsoft.AspNetCore.Authentication.JwtBearer.dll

2.3.授予用户组写入权限

[root@ZSSM01 sms]# chmod -R 775 /data/www/sms
[root@ZSSM01 sms]# ls -la
total 5880
drwxrwxr-x 2 root  zsitd    4096 Nov 22 13:53 .
drwxrwxr-x 6 zsitd zsitd      55 Nov  6 14:39 ..
-rwxrwxr-x 1 root  zsitd     211 Sep  8 14:04 appsettings.Development.json
-rwxrwxr-x 1 root  zsitd     575 Sep 14 13:18 appsettings.json
-rwxrwxr-x 1 root  zsitd      31 Sep  4 12:07 host.json
-rwxrwxr-x 1 root  zsitd   37256 Aug 19 14:48 Microsoft.AspNetCore.Authentication.JwtBearer.dll

三、关于文件权限补充

3.1. ACL授权

此外,授权文件权限,还可以通过ACL来授权。

[root@ZSSM01 sms]# setfacl -Rm user:zsitd:rw /data/www/sms 
[root@ZSSM01 sms]# getfacl /data/www/sms
getfacl: Removing leading '/' from absolute path names
# file: data/www/sms
# owner: root
# group: root
user::rwx
user:zsitd:rw-
group::r-x
mask::rwx
other::r-x

3.2. 权限补充

此时,我们发现,在原有的“-rw-rw-r–”后增加了一个“+”,这表示启用了ACL权限。

[root@ZSSM01 sms]# ls -la
total 160
drwxrwxr-x+ 2 root  root     154 Nov 22 16:16 .
drwxrwxr-x  7 zsitd zsitd     67 Nov 22 16:16 ..
-rw-rw-r--+ 1 root  root  131708 Sep 14 13:21 Sudo.Sms.WebApi.deps.json
-rw-rw-r--+ 1 root  root   19456 Sep 14 13:21 Sudo.Sms.WebApi.dll
-rw-rw-r--+ 1 root  root     236 Sep 14 13:21 Sudo.Sms.WebApi.runtimeconfig.dev.json
-rw-rw-r--+ 1 root  root     224 Sep 14 13:21 Sudo.Sms.WebApi.runtimeconfig.json

3.3. 去除ACL权限

[root@ZSSM01 sms]# setfacl -Rb /data/www/sms
[root@ZSSM01 sms]# ls -la
total 160
drwxr-xr-x 2 root  root     154 Nov 22 16:16 .
drwxrwxr-x 7 zsitd zsitd     67 Nov 22 16:16 ..
-rw-r--r-- 1 root  root  131708 Sep 14 13:21 Sudo.Sms.WebApi.deps.json
-rw-r--r-- 1 root  root   19456 Sep 14 13:21 Sudo.Sms.WebApi.dll
-rw-r--r-- 1 root  root     236 Sep 14 13:21 Sudo.Sms.WebApi.runtimeconfig.dev.json
-rw-r--r-- 1 root  root     224 Sep 14 13:21 Sudo.Sms.WebApi.runtimeconfig.json

四、参考文章

  1. Linux 文件和文件夹权限操作: https://blog.csdn.net/zbj18314469395/article/details/79884857
  2. Linux文件权限与群组修改命令详解:https://www.jb51.net/article/164396.htm
  3. 在 Linux 上给用户赋予指定目录的读写权限: https://linux.cn/article-8487-1.html
  4. Linux 最大有效权限与删除ACL: https://www.cnblogs.com/andrew3/p/12890255.html
  5. 在 Linux 上给用户赋予指定目录的读写权限: https://blog.csdn.net/qq_34937383/article/details/77977590
    原文作者:dotnba
    原文地址: https://blog.csdn.net/ldy/article/details/109954667
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞