23 道权限、文件与账户练习题及答案
CompTIA Linux+ 认证考试练习的全部权限、文件与账户练习题,附正确答案和简短解析。
开始练习测验 →1. 用户 bob 执行 cat /srv/data/report.csv 时得到 "Permission denied"。对该文件执行 ls -l 显示 -rwxrwxrwx 1 root root,而 ls -ld /srv/data 显示 drwxr-x--- 2 root root。如何解释这次拒绝?
- A.该文件属于 root 组,因此对 bob 生效的是组类别的权限。
- B.bob 缺少 /srv/data 的执行权限,因此无法穿越该目录去打开里面的文件。✓ 答案
- C.内核会拒绝任何人读取全局可写的文件,除非读者就是属主。
- D.cat 需要父目录的读权限,而 bob 所属的类别并不具备该权限。
目录上的执行权限就是“搜索”(穿越)权限:要通过该目录解析任何路径名都必须具备它。bob 属于 /srv/data 的其他人类别,该类别为 ---,路径解析在此终止,文件自身的 777 权限根本不会被检查。目录的读权限只允许列出名字,不足以访问其中的条目。
编号 QB-JG2DT3依据: path_resolution(7) manual page — directory search (execute) permission报告此题的问题
2. ls -l /shared/notes.txt 显示 -r--r--r-- 1 alice alice,ls -ld /shared 显示 drwxrwxrwx 2 root root。既不是 alice 也不是 root 的用户 carol 成功删除了该文件。如何解释?
- A.谁能删除目录中的条目,由该目录的写权限和执行权限决定。✓ 答案
- B.只读文件仍可被任何人删除,因为 rm 会忽略文件本身的权限位。
- C.444 这一权限为其他人类别同时授予了读取和删除该数据的权利。
- D.只有目录的属主才能删除条目,而 carol 从 root 继承了该权利。
删除一个名字实际上是修改包含它的目录,因此内核检查的是该目录的写权限和执行权限,而不是被删文件的权限。/shared 的权限是 777 且未设置受限删除位,因此任何用户都可以删除其中的条目,无论属主是谁。
编号 QB-4ZJVJ5依据: unlink(2) manual page — write and execute permission on the containing directory报告此题的问题
3. 管理员对目录 /srv/team 执行了 chmod 2750。随后 ls -ld 会为它显示哪一个权限字符串?
- A.drwxr-s---✓ 答案
- B.drwsr-x---
- C.drwxr-S---
- D.drwxr-x--T
在四位八进制权限中,最高位表示特殊位:4 是 set-user-ID,2 是 set-group-ID,1 是受限删除位。因此 2750 表示 set-group-ID 加上属主 rwx、组 r-x、其他人无权限;由于组的执行位存在,set-group-ID 显示在组执行位上为小写 s。
编号 QB-KGDQY4依据: chmod(1) manual page — octal modes and the set-group-ID bit报告此题的问题
4. ls -l /usr/bin/passwd 显示 -rwsr-xr-x 1 root root。用四位八进制表示,这组权限是什么?
- A.4755✓ 答案
- B.2755
- C.6755
- D.1755
属主执行位上的小写 s 表示 set-user-ID 已置位且属主同时具有执行权限,特殊位为八进制 4。三组权限 rwx、r-x、r-x 分别是 7、5、5,因此是 4755。设置了 set-user-ID 的程序以文件属主的有效用户 ID 运行,而不是调用者的。
编号 QB-5ZW7R6依据: chmod(1) and chmod(2) manual pages — set-user-ID bit in four-digit octal modes报告此题的问题
5. 某用户的 shell 中生效的 umask 是 027。她用输出重定向创建了一个普通文件,又用 mkdir 创建了一个目录,之后都没有再改动。这两者最终的权限各是什么?
- A.文件为 644,目录为 755。
- B.文件为 750,目录为 750。
- C.文件为 640,目录为 750。✓ 答案
- D.文件为 639,目录为 750。
该掩码从普通文件的基准权限 666 和目录的基准权限 777 中清除相应位:666 去掉 027 得 640,777 去掉 027 得 750。这是按位清除而不是十进制相减,而且普通文件在创建时永远不会获得执行权限,无论掩码允许什么。
编号 QB-MGR266依据: umask(1p), POSIX shell and utilities specification — file mode creation mask报告此题的问题
6. 一位普通用户拥有 report.csv,想让用户 dave 成为它的属主。她执行 chown dave report.csv,却得到 "Operation not permitted"。她遇到的是哪条规则?
- A.该命令还必须给出组,写成 chown dave:dave report.csv。
- B.如果文件的组与新属主的主组不同,chown 就会拒绝执行。
- C.只要把文件权限设为对所有类别都是 666,就可以转交文件。
- D.把文件指派给新属主是一项特权操作,只有 root 能执行。✓ 答案
Linux 不允许非特权用户把文件转交他人,否则可以借此规避配额和记账;只有特权进程才能修改文件的用户 ID。属主仍然可以用 chgrp 或 chown :group 修改所属组,但只能改成自己所属的组。
编号 QB-6Z9JW7依据: chown(2) manual page — changing file ownership requires privilege报告此题的问题
7. devs 组的成员需要能够编辑 /srv/project 中彼此的文件,并且在那里新建的每个文件都必须属于 devs 组。该目录已经 chgrp devs 且权限为 770。哪一步能实现这种组继承?
- A.用 chmod u+s /srv/project 为该目录设置 set-user-ID 位。
- B.用 chmod +t /srv/project 为该目录设置受限删除位。
- C.用 chmod g+s /srv/project 为该目录设置 set-group-ID 位。✓ 答案
- D.对每个账户执行 usermod -g devs,把 devs 设为各成员的主组。
目录上的 set-group-ID 位使新建条目继承该目录的所属组,而不是创建者的主组,新建的子目录也会继承该位。set-user-ID 位在目录上没有这种含义,受限删除位管的是谁能删除条目,而不是新文件属于哪个组。
编号 QB-NG4DB7依据: chmod(1) manual page — set-group-ID on directories报告此题的问题
8. ls -ld /tmp 显示 drwxrwxrwt。共享上传目录 /var/spool/upload 的权限是 drwxrwxrwx,用户不断删除彼此的文件。在末位加上 t 会带来什么效果?
- A.删除或重命名目录中的条目被限制为该条目的属主、该目录的属主或 root。✓ 答案
- B.目录内的文件对除 root 以外的用户变为只读,不能再改动。
- C.对已有文件的写入被限制为各自的属主,但仍可自由创建新条目。
- D.新建条目都会继承该目录的所属组,删除权限也随该组一起决定。
受限删除位在其他人执行位上显示为 t,正是它让全局可写的目录变得安全:所有人仍可创建文件,但只有文件属主、目录属主或特权进程才能删除或重命名已有条目。这也正是 /tmp 的权限为 1777 的原因。
编号 QB-7ZMV39依据: chmod(1) manual page — restricted deletion flag; Filesystem Hierarchy Standard, /tmp报告此题的问题
9. ls -l /usr/local/bin/collect 显示 -rwSr--r-- 1 root root。属主那一组权限中的大写 S 告诉管理员什么?
- A.set-group-ID 位已置位,因此该程序以自身所属组的权限运行。
- B.set-user-ID 位已置位,但属主的执行位缺失,因此该位不起任何作用。✓ 答案
- C.属主同时具有执行权限和 set-user-ID,这正是用大写字母表示的情形。
- D.该文件带有不可改变属性,ls 把它显示在属主那一组权限中。
当特殊位与对应的执行位同时存在时,ls 显示小写 s;当特殊位已置位而执行位缺失时,显示大写 S。属主没有执行权限的 set-user-ID 文件根本无法通过该类别运行,因此该位是失效的,通常说明操作有误,例如误用了 chmod 4644。
编号 QB-PGFQG8依据: ls(1) manual page — mode string notation for set-user-ID without execute报告此题的问题
10. 某目录的状态是 drwxrws--- 2 root devs。成员 sam 在其中创建了一个文件,ls -l 显示 -rw-r--r-- 1 sam devs。devs 组的同事能读该文件,却不能编辑。组写位缺失的原因是什么?
- A.set-group-ID 位只复制组名,同时还会把新文件强制为 644。
- B.组成员必须先执行 newgrp devs,因为该文件是在别的组下创建的。
- C.目录的组写位作用于目录条目本身,而不是作用于其中的文件。
- D.创建者的 umask 清除了组写位,而 set-group-ID 位并不会把它补回来。✓ 答案
目录上的 set-group-ID 位只决定新条目的所属组;新文件的权限位仍由创建进程请求的权限减去其 umask 得出。掩码为 022 时组写位会被清除,因此协作目录通常除了 set-group-ID 位之外还需要 002 这样的掩码。
编号 QB-GXAFUA依据: chmod(1) manual page and umask(1p) — set-group-ID directories and the creation mask报告此题的问题
11. getfacl budget.ods 输出这些行:user::rw-、user:jan:rw- #effective:r--、group::r--、mask::r--、other::---。jan 反映她无法保存修改。是什么在阻止她?
- A.该修改需要重新挂载,因为 ACL 条目只在挂载时生效。
- B.她的命名条目排在属组条目之后,而属组条目在此只授予读权限。
- C.命名用户条目对写操作不起作用,因此结果由其他人类别决定。
- D.mask 条目把所有命名条目的上限限制为读,因此 jan 的写权限被削掉了。✓ 答案
mask 条目是所有命名用户条目、命名组条目以及属组条目权限的上限,getfacl 会用 #effective 标出被削减后的结果。提高掩码(例如 setfacl -m m::rw budget.ods)就能恢复 jan 的写权限;注意对带 ACL 的文件执行 chmod g+w 修改的是掩码,而不是属组条目。
编号 QB-ZEGMEB依据: acl(5) manual page — ACL mask entry and effective permissions报告此题的问题
12. 在 /srv/audit 中新建的文件必须自动给 auditors 组读写权限,无论创建者的 umask 是什么。哪种做法能实现这一点?
- A.用 setfacl -m g:auditors:rw /srv/audit 为该组添加一条访问条目。
- B.用 chmod g+rwx 和 chgrp auditors /srv/audit 给目录添加组写权限。
- C.用 chmod g+s /srv/audit 添加 set-group-ID 位,让所属组传给新文件。
- D.用 setfacl -m d:g:auditors:rw /srv/audit 为该组添加一条默认条目。✓ 答案
用 d: 前缀在目录上设置的默认 ACL 会被其中新建的每个文件和子目录继承,从而不再依赖创建者的 umask。普通访问条目只管目录本身,而 set-group-ID 位只传递所属组,并不授予写权限。
编号 QB-HXNSZB依据: setfacl(1) manual page — default ACL entries on directories报告此题的问题
13. root 无法修改或删除 /etc/app/licence.conf:编辑器和 rm 都报 "Operation not permitted"。该文件权限为 -rw-r--r-- 1 root root,文件系统以读写方式挂载,lsattr 对该文件输出 ----i---------e-----。这是怎么回事?
- A.设置了仅追加属性,因此写入必须改用 >> 重定向进行。
- B.该文件属于 root 且权限为 644,因此写入前需要先执行 chmod u+w。
- C.显示为 e 的区段格式属性使该文件保持只读,直到卷被重新挂载。
- D.设置了不可改变属性,必须先用 chattr -i 清除它才能做任何修改。✓ 答案
lsattr 输出中的 i 标志是不可改变属性:只要它存在,文件就不能被修改、删除、重命名或添加新的硬链接,即使特权进程也会被拒绝并报 "Operation not permitted"。只有用 chattr -i 清除它才能恢复正常行为;e 标志只是表明该文件使用区段存储。
编号 QB-2FUXKC依据: chattr(1) manual page — immutable attribute报告此题的问题
14. 管理员执行 ln /data/orig.log /data/copy.log,然后分别对两个名字执行 stat。两者报告相同的 inode 号以及 "Links: 2"。随后她删除了 /data/orig.log。之后数据处于什么状态?
- A.数据已经消失,因为删除第一个名字会释放它背后的 inode。
- B.数据仍可通过 /data/copy.log 访问,而链接计数降为一。✓ 答案
- C.数据还在且链接计数仍为二,因为 stat 会缓存该值直到卸载。
- D.数据还在,但 /data/copy.log 现在指向一个空文件,直到重新建立链接。
硬链接只是指向同一个 inode 的另一个目录条目,因此不存在“原件”和“副本”之分:两个名字地位相同。删除一个名字只会把链接计数减一,只有计数降到零且没有进程仍打开该文件时,inode 及其数据才会被释放。
编号 QB-JXZ47D依据: ln(1) and stat(1) manual pages — hard links, inodes and link counts报告此题的问题
15. /home 位于一个文件系统上,/srv 位于另一个文件系统上。命令 ln /home/ana/data.csv /srv/share/data.csv 失败并报 "Invalid cross-device link"。管理员应该怎么做,为什么?
- A.用 ln -s 创建符号链接,因为硬链接无法跨越两个文件系统。✓ 答案
- B.用 ln -f 强制创建链接,因为失败是由目标名字已存在引起的。
- C.用 cp -l 复制文件,因为该选项能跨文件系统创建硬链接。
- D.用 hardlinks 选项重新挂载 /srv,因为该挂载拒绝了第二个条目。
硬链接是引用某个 inode 号的目录条目,而 inode 号只在单个文件系统内部有意义,因此内核会以 EXDEV 拒绝该操作。符号链接则在自己的 inode 中保存一个路径名,所以它既能跨文件系统,也能指向目录。
编号 QB-3F7ASD依据: ln(1) manual page and link(2) EXDEV error — hard links within one filesystem报告此题的问题
16. ls -l /etc/app/current 显示 lrwxrwxrwx 1 root root 20 current -> /opt/app/spring/bin。一位同事重命名了 /opt/app/spring 之后,打开 /etc/app/current 的用户都得到 "No such file or directory"。他认为该链接自身的 rwxrwxrwx 权限应该仍然允许访问。实际情况如何?
- A.符号链接保存的是目标的 inode,因此重命名本应被自动跟随。
- B.符号链接保存的是一个路径字符串,目标被重命名后它就成了悬空的断链。✓ 答案
- C.lrwxrwxrwx 这一权限已授予访问权,所以错误必定来自只读挂载。
- D.符号链接保存着数据的一份副本,而重命名把这份副本清空了。
符号链接保存的是一个路径名,每次访问都会重新解析,因此重命名或删除目标会使链接变成悬空链接。符号链接上显示的权限固定为 rwxrwxrwx,从不参与访问判定:真正起作用的是目标的属主和权限,这里的修复办法是用 ln -sfn 重新指向。
编号 QB-KXCFCE依据: symlink(7) manual page — symbolic link resolution and dangling links报告此题的问题
17. 在同一个目录中,ls -l 显示四个条目,其权限字符串分别以 prw-r--r--、srwxrwxrwx、brw-rw---- 和 crw-rw-rw- 开头。按此顺序,这四者分别是哪类文件?
- A.依次是管道文件、符号链接、备份设备和写时复制文件。
- B.依次是打印队列、数据流、引导分区和控制台日志。
- C.依次是命名管道、套接字、块设备和字符设备。✓ 答案
- D.依次是进程文件、共享文件、缓冲文件和缓存文件。
权限字符串的第一个字符表示文件类型:- 普通文件、d 目录、l 符号链接、p FIFO(命名管道)、s 套接字、b 块设备、c 字符设备。块设备通过缓冲区以固定大小的块寻址,字符设备则是无缓冲的字节流;对这两类设备,ls 会在通常显示大小的位置打印主、次设备号。
编号 QB-4FJMXE依据: ls(1) manual page — file type characters in the mode string; inode(7)报告此题的问题
18. 用户 ravi 是附属组 docker 和 wheel 的成员。管理员执行了 usermod -G developers ravi,ravi 随即失去了这两个组所赋予的访问权限。发生了什么,本来应该怎么做?
- A.-G 形式改动的是主组,附属组列表需要用 -aG 来设置。
- B.-G 形式在下次登录时才生效,丢失的访问权限重启后会恢复。
- C.-G 形式替换了整个附属组列表,而 -aG 才是在其后追加。✓ 答案
- D.-G 形式删除了 ravi 在 /etc/group 中的条目,用 groupmod -a 可以恢复。
usermod -G 会把附属组列表设置为所列出的那些组,并悄悄地把账户从未列出的组中移除;加上 -a 后,-G 才是把所列组追加到现有列表之后。主组是另一项设置,用 -g 修改;而新的组成员关系只对之后启动的会话生效,或者在 shell 中执行 newgrp。
编号 QB-MXQSHF依据: usermod(8) manual page — the -a option used with -G报告此题的问题
19. 管理员执行了 passwd -l dana,并确认 dana 在 /etc/shadow 中的口令散列现在以叹号开头。dana 仍能用她的公钥通过 SSH 登录。为什么还能登录?
- A.加锁作用于控制台登录,而 SSH 查询的是它自己的凭据数据库。
- B.加锁在下次修改口令时才生效,所以当前的访问权限仍会照常保留。
- C.加锁只是给已存的散列加前缀,它阻止口令登录,但不影响基于密钥的登录。✓ 答案
- D.加锁会清除账户的登录 shell,而基于密钥的登录完全绕过 shell。
给口令加锁会在已存散列前写入一个叹号,使任何输入的口令都无法匹配,但账户的其他方面完全不变。公钥认证根本不会查看该字段,因此要彻底禁止访问,必须让账户本身过期或删除授权密钥。
编号 QB-5FWX4G依据: passwd(1) and shadow(5) manual pages — password locking报告此题的问题
20. 必须立即切断一位外部承包人的所有交互式登录途径,同时为审计保留她的主目录和文件。哪一项操作能做到?
- A.用 passwd -l 给口令加锁,这会拒绝该用户的一切登录方式。
- B.用 chage -E 0 让账户本身过期,这会拒绝该用户的一切登录。✓ 答案
- C.用 userdel -r 删除账户,这会停止登录并把文件原样保留。
- D.把登录 shell 设为 /bin/false,这会拒绝任何一次认证尝试。
把账户过期字段设为过去的时间(chage -E 0 正是这样做)会禁用账户本身,因此任何认证方式都无法通过,而主目录和文件保持不动。给口令加锁仍允许基于密钥的登录;非登录 shell 只是阻止交互式 shell;userdel -r 则会删除主目录和邮件缓存。
编号 QB-QE3PD8依据: chage(1) and shadow(5) manual pages — account expiration field报告此题的问题
21. /etc/passwd 中有一行内容为:backupsvc:x:0:0:backup agent:/var/lib/backupsvc:/bin/bash。关于这条记录,最重要的事实是什么?
- A.第二个字段是 x,因此该账户可以完全不用口令就通过认证。
- B.第三个字段是 0,因此该账户在系统上拥有完整的 root 特权。✓ 答案
- C.主目录位于 /var/lib 之下,因此内核把该账户视为非特权账户。
- D.名字以 svc 结尾,因此系统会把该账户限制在服务用途内。
以冒号分隔的七个字段依次是:用户名、口令占位符、UID、GID、注释、主目录、登录 shell,而内核完全依据数字 UID 作出特权判定。任何 UID 为 0 的账户,不管叫什么名字,都等同于 root;第二字段的 x 只是表示口令散列存放在 /etc/shadow 中。
编号 QB-7XVGT7依据: passwd(5) manual page — field layout and the meaning of UID 0报告此题的问题
22. id sam 输出 uid=1007(sam) gid=1007(sam) groups=1007(sam),1200(devs),1300(qa)。/etc/group 中 devs 那一行把 sam 列为成员,但 sam 同名组那一行根本没有列出他。为什么?
- A.主组成员关系记录在 /etc/passwd 的记录里,而不是在组的成员列表中。✓ 答案
- B.成员列表只收录用 gpasswd 添加的账户,而 useradd 会跳过这一步。
- C.主组信息存放在 /etc/gshadow 中,sam 的名字就被写在那里。
- D.当组名与用户名相同时,该组就不会在自己那一行列出成员。
用户的主组来自其 /etc/passwd 记录第四字段中的 GID,因此不会在 /etc/group 的成员列表中重复出现;组记录的四个字段依次是组名、口令、GID 和附属成员列表。这正是为什么合并两处信息的 id 会显示出仅用 grep 查 /etc/group 看不到的组。
编号 QB-REEZJ9依据: passwd(5) and group(5) manual pages — primary and supplementary group membership报告此题的问题
23. 管理员把一个全站通用的别名文件放进 /etc/skel,期望现有用户下次登录时就能用上。他们始终看不到该文件,而之后创建的账户却都有。为什么?
- A./etc/skel 的内容要等用 useradd -D 重新生成 /etc/profile 后才生效。
- B./etc/skel 的内容在每次登录时读取,所以那些用户必须先注销。
- C./etc/skel 的内容是在主目录被创建的那一刻复制进去的。✓ 答案
- D./etc/skel 的内容会在现有主目录权限提升到 755 之后进入其中。
/etc/skel 是一次性的模板:useradd 只在创建主目录时把它复制进去,因此之后的修改永远不会进入已存在的主目录。需要对所有人生效的设置应放在系统级登录文件中,例如 /etc/profile 或 /etc/profile.d 下的片段文件。
编号 QB-8X8UY8依据: useradd(8) manual page — /etc/skel and home directory creation报告此题的问题
本考试的其他主题
练习题依据 CompTIA 公布的 Linux+ 考试大纲及 Linux 系统管理的通行实践编写。CompTIA 和 Linux+ 是 CompTIA 的商标,Linux 是 Linus Torvalds 的注册商标;本网站与 CompTIA 无关联,也未获其认可。真实考试除选择题外还包含实操题(performance-based questions),要求在模拟环境中实际完成任务——四选一的题型无法复现这一部分,因此本题库覆盖的是知识部分,请同时在真实系统上动手练习。CompTIA 会定期修订大纲并为每个版本编号:报考前请向 CompTIA 确认现行大纲、考试代码与报考要求。 关于 CompTIA Linux+ 认证 →