03_用户权限习题记录

用户权限课后习题详解

习题一:用户管理

题目 1:写一个 shell 脚本,批量创建 20 个用户(user1-20)密码中有 5 个随机字符

解答:

#!/bin/bash
for i in {1..20}; do
    user="user$i"
    password=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 5 | head -n 1)
    useradd $user
    echo "$user:$password" | chpasswd
    echo "用户名:$user,密码:$password"
done

使用场景: 批量创建测试用户时非常实用,避免手动逐个创建的繁琐。

解释:

tr -dc 'a-zA-Z0-9':过滤出只包含字母(大小写)和数字的字符。
-c或——complerment:取代所有不属于第一字符集的字符;
-d或——delete:删除所有属于第一字符集的字符;

fold -w 5:将输出限制为每行 5 个字符。
-w, --width=宽度      使用指定的列宽度代替默认的80

输出示例:

用户名:user1,密码:a3F8b
用户名:user2,密码:9kLm2
...

题目 2:如何查看用户对系统的操作情况和登录情况

解答:

查看操作情况:last 命令查看登录记录,lastlog 查看所有用户最后登录信息,wwho 查看当前登录用户。

查看登录情况:last 命令可查看历史登录情况。

使用场景: 系统管理员监控用户活动,排查安全问题。

输出示例(last 命令):

user1   pts/0        192.168.1.100    Fri May 19 14:25   still logged in
user2   pts/1        192.168.1.101    Fri May 19 13:40 - 14:10  (00:30)

题目 3:默认情况下,Linux 用户的登录用户密码的存放位置是()

答案:c./etc/shadow

解析: /etc/passwd 存放用户基本信息,/etc/shadow 存放加密后的密码。

题目 4:创建用户默认会拷贝哪个目录下的环境变量

答案:/etc/skel

解析: 创建新用户时,/etc/skel 目录下的文件会被复制到用户家目录,作为初始环境配置。

题目 5:创建 test 用户,指定 UID6666,基本组 test_test 附加组:sa,dba,注释信息:2019 new student,shell:bash

解答:

groupadd test_test
useradd -u 6666 -g test_test -G sa,dba -c "2019 new student" -s /bin/bash test

使用场景: 精确控制用户属性,满足特定安全和管理要求。

题目 6:修改 bgx 用户 uid,gid,附加组,注释信息,用户家目录,登录 shell,登录名

解答:

usermod -u 新UID -g 新GID -G 附加组列表 -c "新注释" -d 新家目录 -s 新shell -l 新登录名 bgx

使用场景: 用户信息变更时进行批量更新。

题目 7:如何查询用户信息以及登录信息

解答:

查询用户信息:id 用户名getent passwd 用户名

查询登录信息:last 用户名

输出示例(id 命令):

uid=1001(bgx) gid=1001(bgx) groups=1001(bgx),1002(sa),1003(dba)

题目 8:如何将创建的 test 用户设置一个 8 位的随机密码

解答:

password=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
echo "test:$password" | chpasswd

题目 9:如何创建一个 student_group 组,并指定 GID 为 999

解答:

groupadd -g 999 student_group

题目 10:如何使用 test 用户切换至 student_group 组

解答:

newgrp student_group

使用场景: 需要临时切换到特定组进行操作时。

习题二:用户和文件权限管理需求

需求解析与实现

1. 建立用户目录

mkdir -p /runtime/tech /runtime/edu

2. 添加组账号

groupadd -g 1001 tech
groupadd -g 1002 edu
groupadd -g 200 runtime

3. 添加用户账号

# tech 组用户
useradd -g tech -G runtime -s /bin/bash jerry
useradd -g tech -G runtime -s /bin/bash kim
useradd -g tech -G runtime -s /bin/bash amy
useradd -g tech -G runtime -s /bin/bash john
# 设置 kim 用户失效日期
usermod -e 2015-12-31 kim

# edu 组用户
useradd -g edu -G runtime -s /bin/ksh jiangsir
useradd -g edu -G runtime -s /bin/bash tansir

4. 设置目录权限及归属

chgrp runtime /runtime
chmod 750 /runtime

chgrp tech /runtime/tech
chmod 750 /runtime/tech

chgrp edu /runtime/edu
chmod 750 /runtime/edu

5. 建立公共数据存储目录 "/public"

mkdir /public
# 设置权限,技术组可读写执行
chmod 770 /public
chgrp tech /public

习题三:权限管理

题目 1:Linux 运行级别有几种,每个级别分别代表什么含义,如何切换运行级别和查看当前运行级别

解答:

Linux 传统运行级别(SysV init):

  • 0:关机
  • 1(s/S):单用户模式(维护模式)
  • 2:多用户模式,无网络
  • 3:多用户模式,命令行
  • 4:保留
  • 5:多用户模式,图形界面
  • 6:重启

查看当前运行级别:runlevelwho -r

切换运行级别:init 运行级别telinit 运行级别

现代 systemd 系统:

  • 0:关机(runlevel0.target
  • 1:救援模式(rescue.target
  • 2:多用户模式(multi-user.target
  • 3:多用户模式(与 2 相同)
  • 4:保留
  • 5:图形界面(graphical.target
  • 6:重启(reboot.target

切换命令:systemctl isolate 目标.target

查看当前状态:systemctl get-default

题目 2:linux 系统关机重启注销有哪些命令

解答:

关机:

  • shutdown -h now:立即关机
  • poweroff:关机
  • halt:停止系统,可能需要手动断电

重启:

  • reboot:重启
  • shutdown -r now:立即重启

注销:

  • logout:退出当前会话
  • exit:退出 shell 会话

题目 3:如何进入单用户模式,修改密码

解答:

进入单用户模式:

  1. 重启系统,在 GRUB 菜单出现时按 e 键编辑启动项
  2. 找到以 linux 开头的行,添加 singleinit=/bin/bash 到行尾
  3. Ctrl + XF10 启动

修改密码:

passwd 用户名

题目 4:linux 常用有哪些快捷键,并写出每列含义

常用快捷键:

快捷键 功能描述
Ctrl + C 终止当前操作
Ctrl + Z 挂起当前进程
Ctrl + D 退出当前 shell 或 EOF
Ctrl + A 光标移动到行首
Ctrl + E 光标移动到行尾
Ctrl + U 删除从光标到行首的字符
Ctrl + K 删除从光标到行尾的字符
Ctrl + W 删除光标前的单词
Alt + B 光标向左移动一个单词
Alt + F 光标向右移动一个单词
Ctrl + L 清屏
Ctrl + R 反向搜索历史命令

题目 5:请说出你知道的下列字符在 linux 里含义

符号 含义
~ 当前用户家目录
- 代表标准输入或上一个目录
. 当前目录
.. 父目录
` `
> 重定向输出,覆盖文件
>> 重定向输出,追加到文件
1> 标准输出重定向
2> 标准错误重定向
&> 同时重定向标准输出和标准错误

题目 6:如何最快的返回到当前用户的家目录

命令:

cd

cd ~

题目 7:应用程序一般都安装在那个目录

答案:

  • /usr/bin:用户可执行文件
  • /usr/sbin:系统管理员可执行文件
  • /usr/local/bin:本地安装的应用程序
  • /opt:可选应用程序

题目 8:日志一般都存放在哪个目录下

答案:/var/log

常见日志文件:

  • messages:系统日志
  • secure:安全相关日志
  • cron:计划任务日志
  • dmesg:内核日志

题目 9:重要配置文件一般存放在哪个目录下

答案:/etc

题目 10:系统重启后如何自动进入命令行模式的多用户操作系统

解答:

对于 SysV init 系统:

system-config-runlevel

选择运行级别 3。

对于 systemd 系统:

systemctl set-default multi-user.target

题目 11:系统网卡和 DNS 的配置文件路径在那里

解答:

  • 网卡配置(CentOS/RHEL):/etc/sysconfig/network-scripts/ifcfg-网卡名
  • DNS 配置:/etc/resolv.conf

题目 12:系统主机名如何临时修改,如何永久修改,如何查看主机名

解答:

临时修改:

hostname 新主机名

永久修改(CentOS/RHEL):

hostnamectl set-hostname 新主机名

或编辑 /etc/hostname 文件。

查看主机名:

hostname

hostnamectl

题目 13:创建目录 /data/

mkdir /data

题目 14:将 /data 目录移动到 /tmp 目录下,并将 /etc/passwd 文件复制到 /tmp/data 目录下

mv /data /tmp
cp /etc/passwd /tmp/data/

题目 15:如何查看当前所在的目录

pwd

题目 16:如何一次性创建 /text/1/2/3/4 目录

mkdir -p /text/1/2/3/4
mkdir -p /text{1..4}

题目 17:将 /etc 目录复制到 /text 目录下,并保持原属性不变

cp -a /etc /text/
  -a, --archive			等于-dR --preserve=all
      --attributes-only			只拷贝文件属性,不拷贝文件内容

题目 18:如何只查看 /text/etc 单个目录的信息,并以长格式显示

ls -ld /text/etc
  -d, --directory               当遇到目录时列出目录本身而非目录内的文件

题目 19:如何查看 /text 目录大小

du -sh /text

题目 20:在 /text 目录新建 ip.txt 文件,并设置属主有读写执行权限,属组读写权限,其他账户无权限

touch /text/ip.txt
chmod 760 /text/ip.txt

题目 21:如何删除 /text 目录以及目录下的所有文件

rm -rf /text

题目 22:如何查看一个命令所在的绝对路径(至少写出 2 中方法)

方法一:

which 命令名

方法二:

command -v 命令名

方法三:

type 命令名

题目 23:请打印 /etc/passwd 文件中的第 2-5 行(不低于三种方法)

方法一:sed

sed -n '2,5p' /etc/passwd

方法二:awk

awk 'NR>=2 && NR<=5' /etc/passwd

方法三:headtail

head -5 /etc/passwd | tail -3

题目 24:要求用命令 rm 删除文件时提示如下禁止使用 rm 的提示,并使该效果永久生效

解答:

创建别名:

echo 'alias rm="echo Do not use rm command."' >> /etc/bashrc
source /etc/bashrc

题目 25:用什么命令能创建文件(至少写出 2 中方法)

方法一:

touch 文件名

方法二:

echo "" > 文件名

方法三:

cat > 文件名

题目 26:一个文件的权限为 drwxr-xr-x,请写出文件的数值权限是多少,以及文件类型

数值权限:755

文件类型:目录(d 表示目录)

题目 27:系统默认的 umask 权限是多少,默认创建文件和目录的权限是多少

默认 umask:0022 或 0002(取决于系统配置)

默认文件权限:644(-rw-r--r--)

默认目录权限:755(drwxr-xr-x)

题目 28:当 umask 为 002,034,035 请问创建文件和目录分别是什么权限

umask 计算规则:文件权限 = 666 - umask,目录权限 = 777 - umask

  • umask 002:

    • 文件:666 - 002 = 664(-rw-rw-r--)
    • 目录:777 - 002 = 775(drwxrwxr-x)
  • umask 034:

    • 文件:666 - 034 = 632(-rw---w--)
    • 目录:777 - 034 = 743(drwx--rwx)
  • umask 035:

    • 文件:666 - 035 = 631(-rw---wx)
    • 目录:777 - 035 = 742(drwx--r-x)

题目 29:如何查看 /etc/services 整个文件有多少行

wc -l /etc/services

题目 30:查看 /etc/passwd 文件里 root 位置和 /bin/bash 位置?即将所有的第一列和最后一列位置调换

awk -F: '{print $NF,$1}' /etc/passwd

题目 31:使用 ifconfig eth0 查看网卡,如何只提取 IP 地址

ifconfig eth0 | grep 'inet ' | awk '{print $2}'

题目 32:系统的磁盘空间被占满如何定位,inode 被占满又如何定位

定位磁盘空间:

df -h

定位 inode:

df -i

查找大文件:

find / -type f -size +100M

查找占用 inode 的文件:

find / -type f | awk '{print $1}' | sort | uniq -c | sort -nr

题目 33:查找 /var/log/ 下所有 7 天以前的日志文件,并且将大于 30k 的文件移动 /tmp 下

find /var/log/ -type f -name "*.log" -mtime +7 -size +30k -exec mv {} /tmp/ \;

解释

-mtime n:文件修改时间正好是 n 天前。
-mtime -n:文件修改时间在 n 天内。
-mtime +n:文件修改时间超过 n 天。

-size n[c/k/M/G]:c 表示字节,k 表示 KB,M 表示 MB,G 表示 GB。
-size +n:文件大小大于 n。
-size -n:文件大小小于 n。
-size n:文件大小等于 n。

{}:表示 find 命令找到的文件路径。
mv:移动文件的命令。
/tmp/:目标目录,系统临时目录。
\;:表示 -exec 命令的结束。

题目 34:查询 /var/log/ 目录下三天前的的文件,并删除

find /var/log/ -type f -mtime +3 -exec rm -f {} \;

题目 35:统计 /var/log 下面所有文件的个数

find /var/log/ -type f | wc -l
posted @ 2025-05-23 22:40  FangNing  阅读(35)  评论(0)    收藏  举报