Linux,centos文件权限设置只对文件夹有用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux,centos文件权限设置只对文件夹有用?相关的知识,希望对你有一定的参考价值。

我用的系统是centos6.5.,做了一系列测试,发现一些问题,权限设置仅对文件夹有效,对文件无效!
1、对A文件夹设置其他用户权限为RWX,A文件夹内放一个a文件,a文件的其他用户权限为R--(只读)。
结果其他用户照样可以对a文件进行修改、删除。
2、对A文件夹设置其他用户权限为RWX,A文件夹内放一个a文件夹,a文件夹的其他用户权限为R--(只读)。结果其他用户虽不能在a文件夹内写入,但可以直接修改升值删除a文件夹。
结果其他用户照样可以对a文件进行修改、删除。
3、对B文件夹设置其他用户权限为RW—,其他用户依然无法上传文件到B文件夹;(如何设置才可以让其他用户可以上传但不能看到同文件夹内其他文件?)
4、对C文件夹设置其他用户权限为RWX,C文件夹下放D文件夹,D文件夹其他用户目录权限为---(无任何权限)

参考技术A

    文件属主是否跟你说的其它用户同组,并且组权限为rw,或者是root用户

    如果没有执行权限x,就算是文件夹属主也不能在该文件夹下写入;能删除的话同上,查看是否同组、组权限

    同上,没有相应的执行权限x,就无法进入该文件夹路径(root可以),肯定无法写入

    什么问题?

追问

用户分为所有者(owner)、同用户组(group)、其他用户(other)。。。。我这里提到的其他用户就是other,肯定不再同一用户组。

追答

查了一下Linux操作系统下文件目录的属性意义:

w--(modify contents of ditrctory):可写入权限。拥有更改目录的结构清单,即:
 ---建立新的文件与目录;
  ---删除已经存在的文件与目录(不论该文件是属于谁的);
  ---将已经存在的文件或目录进行重命名;
  ---移动该目录内的文件、目录的位置。
  如果是一般身份用户,如果在这个用户家目录内,无论是谁(包括root)建立的文件。无论该文件属于谁,无论该文件的属性是什么。这个用户都“有权力将该文件删除”。由chattr命令更改的的不可删除属性例外。
这就解释了为什么其它用户能删除,具有w权限目录下的文件

参考技术B 对你的测试结果深表怀疑
你至少要列出文件的owner, group,还有所有的标志位的属性

然后测试用户的id, group
单凭你这些描述要挑战系统的权限设置,毫无说服力追问

“其他用户”都不知道。。
用户分为所有者(owner)、同用户组(group)、其他用户(other)。。。。我这里提到的其他用户就是other

追答

你怎么定义其他用户?
让你列出你的测试用户的id, group,才能确定是不是”其它用户“
你那个“其他用户”,可能属于文件的那个group,或者就是uid为0的用户

真是无知者无畏啊

参考技术C 这个都不懂?老师没教好??还是发下私信来 参考技术D 已实际测试结果为准!
多测试各自情况,自然就知道了本回答被提问者采纳
第5个回答  2014-03-18 做的什么测试?

Linux CentOS 8(用户与组相关权限管理实验)


Linux CentOS 8(用户与组相关权限管理实验)


目录


一、项目介绍

本节将介绍 Linux (Centos8)中用户与组的相关权限管理。

二、相关概念

2.1 用户管理简介

在 Linux 中的每个用户必须属于一个组,不能独立于组外。并且把用户分为三个基本组,所有者(user),所在组(group),其它组(other)来分配基本的权限。

用户通过/etc/passwd来查看用过的用户名获取用户的uid,通过/etc/group来获取用户所属组的gid,系统只能通过id号来识别用户。所以,越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。在 Linux 中主要是通过用户配置文件来查看和修改用户的信息。

2.2 在 Linux 中每个文件的所有者、所在组、其它组的概念

所有者
一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者。用ls ‐ahl 命令可以看到文件的所有者,也可以使用chown 用户名 文件名来修改文件的所有者。
文件所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组,用ls ‐ahl 命令可以看到文件的所有组,也可以使用chgrp 组名文件名来修改文件所在的组。
其它组
除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。

三、任务操作

任务1- 查看文件的所有者

通过ls ‐ahl 命令可以看到文件的所有者,如下所示。

[root@localhost ~]# ls -ahl
total 32K
dr-xr-x---.  2 root root  135 Jun  7 04:04 .
dr-xr-xr-x. 17 root root  224 Jun  3 22:26 ..
drwxr-xr-x.  2 root root    6 Jun 20 14:10 abc
-rw-------.  1 root root 1.2K Jun  3 22:33 anaconda-ks.cfg
-rw-r--r--.  1 root root    0 Jun 20 14:10 a.txt
-rw-------.  1 root root 4.5K Jun  7 23:16 .bash_history
-rw-r--r--.  1 root root   18 May 11  2019 .bash_logout
-rw-r--r--.  1 root root  176 May 11  2019 .bash_profile
-rw-r--r--.  1 root root  176 May 11  2019 .bashrc
-rw-r--r--.  1 root root  100 May 11  2019 .cshrc
-rw-r--r--.  1 root root  129 May 11  2019 .tcshrc

任务2- 查看文件权限

文件权限相关字符的理解:

drwxr-xr-x.  2 root root    6 Jun 20 14:10 abc
  • 第一个字符代表文件类型,文件为(-)、目录为(d),链接为(l)
  • 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)
    第一组rwx:文件所有者的权限是读、写和执行
    第二组r-x:与文件所有者同一组的用户的权限是读、执行但不能写
    第三组r-x:不与文件所有者同组的其他用户的权限是读和执行但不能写,也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7
  • 2 表示连接的文件数
  • root 表示用户
  • root 表示用户所在的组
  • 6 表示文件大小(字节)
  • Jun 20 14:10 表示最后修改日期
  • abc 表示文件名

相关字符说明,如表1所示。

表1 相关字符理解
模式名字说明
r设置为可读权限
w设置为可写权限
x执行权限设置为可执行权限
X特殊执行权限只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
ssetuid/gid当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
t粘贴位设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位

任务3- 查看用户信息

通过head -5 /etc/passwd 命令可以看到/etc/passwd下前5位用户的信息,如下所示。

[root@localhost ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

相关字段的理解如下:

root:x:0:0:root:/root:/bin/bash
  • 字段1:用户名 --> root
  • 字段2:密码占位符 --> x (这里都是用x代替)
  • 字段3:uid,用户id --> 0
  • 字段4:gid ,组id --> 0
  • 字段5:用户描述信息 --> root
  • 字段6:家目录 --> /root
  • 字段7:登录 shell (用户登陆shell ,当为/bin/bash表示可以登陆,/sbin/nologin表示不被授权登陆)

任务4- 查看密码信息

通过tail -5 /etc/shadow 命令可以看到/etc/shadow下后5位用户的密码信息,如下所示。

[root@localhost ~]# tail -5 /etc/shadow
jan16:$6$bqQsEXZq7A7tYhTx$ufDrTuSYHOmOESsCdS./j/0DZ2zxUlwTj/slkwnxhtIAuz7AuV23jIzeJRe82ixyFWp27rEZDhrcgKVN5U6DK/:18784:0:99999:7:::
jan15:!!:18784:0:99999:7:::
jan14ll:!!:18784:0:99999:7:::
user01:!!:18784:0:99999:7:::
user_02:$6$Z7QgOBz5F29oBhDX$zyhWxZyVD88t0Lt.ccPJDtm0S3LR5gRzTX7IvOYVuSSasRZXyTRllUO6Z42xCOO1aG7/wrVmrIdFhDUWX8Bxe/:18784:0:99999:7::18784:

相关字段的理解如下:

jan16:$6$bqQsEXZq7A7tYhTx$ufDrTuSYHOmOESsCdS./j/0DZ2zxUlwTj/slkwnxhtIAuz7AuV23jIzeJRe82ixyFWp27rEZDhrcgKVN5U6DK/:18784:0:99999:7:::
  • 字段1:用户名
  • 字段2:通过sha-512加密(二次加密,在经过第一次加密后,第二次加入随机数再次加密)的密码
  • 字段3:最后一次修改密码距离1970年1月1日的天数间隔
  • 字段4:密码最短有效期
  • 字段5:密码最长有效期
  • 字段6:密码过期前几天进行警告
  • 字段7:账户过期后,被锁定的天数
  • 字段8:账号失效时间距离1970年1月1日的天数间隔
  • 字段9:未分配功能
    其中,字段2是用户的密码位,如果是 * 表示该用户禁用,!! 表示用户密码未初始化,如果为空,表示空密码的,$表示经过加密。

任务5- 查看组信息

通过head -3 /etc/group 命令可以看到系统里前3个组的信息,如下所示。

[root@localhost ~]# head -3 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:

相关字段的理解如下:

root:x:0:
  • 字段1:组名称 --> root
  • 字段2:组密码占位符 --> x
  • 字段3:gid --> 0
  • 字段4:组成员
    注:一个用户只能有一个主要组,最多可以有31个附加组。主要组是用户创建文件时默认的所有组,附加组主要用于权限管理。不论用户属于哪个组,用户都能拥有该组的权限。

任务6- chage–设置用户密码相关权限

1. 查看“chage”的选项

[root@localhost ~]# chage -h
Usage: chage [options] LOGIN
Options:
  -d, --lastday LAST_DAY        set date of last password change to LAST_DAY
  -E, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
  -h, --help                    display this help message and exit
  -I, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -l, --list                    show account aging information
  -m, --mindays MIN_DAYS        set minimum number of days before password
                                change to MIN_DAYS
  -M, --maxdays MAX_DAYS        set maximum number of days before password
                                change to MAX_DAYS
  -R, --root CHROOT_DIR         directory to chroot into
  -W, --warndays WARN_DAYS      set expiration warning days to WARN_DAYS

chage 命令常用选项,如表2所示。

表2 chage 命令常用选项
选项说明
-m密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M密码保持有效的最大天数。
-w用户密码到期前,提前收到警告信息的天数。
-E帐号到期的日期。过了这天,此帐号将不可用。
-d上一次更改的日期。
-i停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

2. 查看root账户密码策略信息

[root@localhost ~]# chage -l user01
Last password change					: Jun 20, 2021  //最近一次密码修改时间
Password expires					: never  //密码过期时间  
Password inactive					: never  //密码失效时间
Account expires						: never  //帐户过期时间
Minimum number of days between password change		: 0  //两次改变密码之间相距的最小天数 
Maximum number of days between password change		: 99999  //两次改变密码之间相距的最大天数
Number of days of warning before password expires	: 7  //在密码过期之前警告的天数

3. 修改用户root密码过期时间

[root@localhost ~]# chage -l user01
Last password change					: Jun 20, 2021
Password expires					: Sep 16, 2021
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 88
Number of days of warning before password expires	: 7

4. 修改密码失效时间

[root@localhost ~]# chage -l user01
Last password change					: Jun 20, 2021
Password expires					: Sep 16, 2021
Password inactive					: Sep 21, 2021
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 88
Number of days of warning before password expires	: 7

从上述命令可以看到,在密码过期后5天,密码自动失效,这个用户将无法登陆系统了。

任务7- chown–设置文件所有者和文件关联组

1. 查看“chown”的选项

[root@localhost ~]# chown --help
Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...
  or:  chown [OPTION]... --reference=RFILE FILE...
Change the owner and/or group of each FILE to OWNER and/or GROUP.
With --reference, change the owner and group of each FILE to those of RFILE.
  -c, --changes          like verbose but report only when a change is made
  -f, --silent, --quiet  suppress most error messages
  -v, --verbose          output a diagnostic for every file processed
      --dereference      affect the referent of each symbolic link (this is
                         the default), rather than the symbolic link itself
  -h, --no-dereference   affect symbolic links instead of any referenced file
                         (useful only on systems that can change the
                         ownership of a symlink)
   ....
  -R, --recursive        operate on files and directories recursively

注:利用chown 命令可以将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID,组可以是组名或者组ID,文件是以空格分开的要改变权限的文件列表,支持通配符。 一般来说,这个指令仅限系统管理者(root)所使用,普通用户没有权限改变文件所属者及所属组。

chown 命令常用选项,如表3 所示。

表3 chown 命令常用选项的用法
选项说明
-R对目前目录下的所有文件与子目录进行相同的拥有者变更
-c若该文件拥有者确实已经更改,才显示其更改动作
-f若该文件拥有者无法被更改也不要显示错误讯息
-h只对于连结(link)进行变更,而非该 link 真正指向的文件
-v显示拥有者变更的详细资料
–help显示辅助说明
–version显示版本

2. 修改文件“abc”的所有者为“root”

[root@localhost ~]# ls -al // 查看所有文件信息
total 32
dr-xr-x---.  3 root   root  159 Jun 20 14:10 .
dr-xr-xr-x. 17 root   root  224 Jun  3 22:26 ..

drwxr-xr-x.  2 user01 root    6 Jun 20 14:10 abc

[root@localhost ~]# chown root abc  // 修改文件“abc”的所有者为“root
[root@localhost ~]# ls -al  
total 32
dr-xr-x---.  3 root root  159 Jun 20 14:10 .
dr-xr-xr-x. 17 root root  224 Jun  3 22:26 ..

drwxr-xr-x.  2 root root    6 Jun 20 14:10 abc

3. 修改文件“abc”的拥有者和群组都为“user01”

[root@localhost ~]# ls -al
total 32
dr-xr-x---.  3 root root  159 Jun 20 14:10 .
dr-xr-xr-x. 17 root root  224 Jun  3 22:26 ..

drwxr-xr-x.  2 root root    6 Jun 20 14:10 abc

[root@localhost ~]# chown user01:user01 abc  //修改文件“abc”的拥有者和群组都为“user01
[root@localhost ~]# ls -al
total 32
dr-xr-x---.  3 root   root    159 Jun 20 14:10 .
dr-xr-xr-x. 17 root   root    224 Jun  3 22:26 ..

drwxr-xr-x.  2 user01 user01    6 Jun 20 14:10 abc

4. 修改当前目录下的所有文件与子目录的拥有者和群组都为“user01”

[root@localhost abc]# ll
total 0
drwxr-xr-x. 2 root root 6 Jun 20 16:19 a
-rw-r--r--. 1 root root 0 Jun 20 16:19 a.txt
-rw-r--r--. 1 root root 0 Jun 20 16:19 b.txt
-rw-r--r--. 1 root root 0 Jun 20 16:19 c.txt

[root@localhost abc]# chown -R user01:user01 *

[root@localhost abc]# ll
total 0
drwxr-xr-x. 2 user01 user01 6 Jun 20 16:19 a
-rw-r--r--. 1 user01 user01 0 Jun 20 16:19 a.txt
-rw-r--r--. 1 user01 user01 0 Jun 20 16:19 b.txt
-rw-r--r--. 1 user01 user01 0 Jun 20 16:19 c.txt

5. 修改/home/jan的关联组为“1777”(test),不改变所有者

[root@localhost ~]# ll /home/
total 0
drwx------. 2    1666 group1  62 Jun  6 16:05 jan
drwx------. 2 jan14ll jan14ll 62 Jun  7 03:33 jan1
drwx------. 2    1002 root    62 Jun  6 16:31 jan13
drwx------. 2 jan_14  test    62 Jun  7 01:27 jan_14
[root@localhost ~]# chown :1777 /home/jan  //修改`/home/jan`的关联组为“1777”(test),不改变所有者
[root@localhost ~]# ll /home/
total 0
drwx------. 2    1666 test    62 Jun  6 16:05 jan

6 修改/home/jan的所有者为user01,不改变关联组

[root@localhost ~]# chown user01: /home/jan  //修改/home/jan的所有者为user01,不改变关联组
[root@localhost ~]# ll /home/
total 0
drwx------. 2 user01  group1  62 Jun  6 16:05 jan

任务8- chmod–改变文件或目录权限

1. 查看“chmod”的选项
通过chmod --help 命令可以查看“chmod”的选项,如下所示。

[root@localhost ~]# chmod --help
Usage: chmod [OPTION]... MODE[,MODE]... FILE...
  or:  chmod [OPTION]... OCTAL-MODE FILE...
  or:  chmod [OPTION]... --reference=RFILE FILE...
Change the mode of each FILE to MODE.
With --reference, change the mode of each FILE to that of RFILE.
  -c, --changes    like verbose but report only when a change is made
  -f, --silent, --quiet  suppress most error messages
  -v, --verbose          output a diagnostic for every file processed
      --no-preserve-root  do not treat '/' specially (the default)
      --preserve-root    fail to operate recursively on '/'
      --reference=RFILE  use RFILE's mode instead of MODE values
  -R, --recursive        change files and directories recursively
      --help     display this help and exit
      --version  output version information and exit

chmod 命令常用选项,如表4 所示。

表4 chmod 命令常用选项的用法
选项说明
-c若该文件权限确实已经更改,才显示其更改动作
-f若该文件权限无法被更改也不显示错误讯息
-v显示权限变更的详细资料
-R对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

2. 设置文件“a.txt”为所有人可读取

[root@localhost ~]# ls -al
total 32
dr-xr-x---.  3 root   root    159 Jun 20 14:10 .
dr-xr-xr-x. 17 root   root    224 Jun  3 22:26 ..
drwxr-xr-x.  3 user01 user01   54 Jun 20 16:19 abc
-rw-------.  1 root   root   1211 Jun  3 22:33 anaconda-ks.cfg
--w-------.  1 root   root      0 Jun 20 14:10 a.txt

[root@localhost ~]# chmod a+r a.txt  //设置文件“a.txt”为所有人可读取

[root@localhost ~]# ls -al
total 32
dr-xr-x---.  3 root   root    159 Jun 20 14:10 .
dr-xr-xr-x. 17 root   root    224 Jun  3 22:26 ..
drwxr-xr-x.  3 user01 user01   54 Jun 20 16:19 abc
-rw-------.  1 root   root   1211 Jun  3 22:33 anaconda-ks.cfg
-rw-r--r--.  1 root   root      0 Jun 20 14:10 a.txt

3. 设置“abc”目录下的所有文件和子目录为任何人不可读取

[root@localhost abc]# ll
total 0
drwxr-xr-x. 2 user01 user01 6 Jun 20 16:19 a
-rw-r--r--. 1 user01 user01 0 Jun 20 16:19 a.txt
-rw-r--r--. 1 user01 user01 0 Jun 20 16:19 b.txt
-rw-r--r--. 1 user01 user01 0 Jun 20 16:19 c.txt

[root@localhost abc]# chmod -R a-r *   //(+)表示增加权限、(-)表示取消权限、(=)表示唯一设定权限。

[root@localhost abc]# ll
total 0
d-wx--x--x. 2 user01 user01 6 Jun 20 16:19 a
--w-------. 1 user01 user01 0 Jun 20 16:19 a.txt
--w-------. 1 user01 user01 0 Jun 20 16:19 b.txt
--w-------. 1 user01 user01 0 Jun 20 16:19 c.txt

文字设定法,如表5 所示。

表5 文字设定法
选项说明
u表示“用户(user)”,即文件或目录的所有者
g表示“同组(group)用户”,即与文件属主有相同组ID的所有用户
o表示“其他(others)用户”
a表示“所有(all)用户”,它是系统默认值
操作符号可以是:(+) 添加某个权限; (–) 取消某个权限; (=)赋予给定权限并取消其他所有权限

4. 设置文件“a”的权限为“777”,使三个组权限全部增加

[root@localhost abc]# ll
total 0
d-wx--x--x. 2 user01 user01 6 Jun 20 16以上是关于Linux,centos文件权限设置只对文件夹有用?的主要内容,如果未能解决你的问题,请参考以下文章

Linux下profile

CentOS下如何修改文件执行权限

Linux设置文件目录权限,四位数的目录权限是啥意思?如2770、3777、4777、0777等。

centos修改文件权限

03-Linux系统特殊权限

linux 文件都有哪些特殊权限