服务器配置教案 Help

2-2 用户权限、文件权限

用户账户相关文件

/etc/passwd 账户文件

查看用户账户 sudo cat /etc/passwd
返回的信息部分如下:

root:x:1:1:bin:/bin:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin yangzheng:x:1000:1000:yangzheng:/home/yangzheng:/bin/bash

格式用户名:密码占位符:用户编号(uid):归属组编号(gid):用户描述(可为空):家目录:shell路径
字段详解:

  • 根用户:root至高无上的权限

  • 系统用户:系统内置的一些服务功能自带的用户,如daemon、mail、sshd、tcpdump。

  • 普通用户:如zhangsan,

每行一个用户信息,各字段代表:

  • 用户名:zhangsan

  • 密码: x已设置,空白 未设置、用passwd <username>设置,密码文件见/etc/shadow

  • UID用户标识号:唯一编号

  • GID用户组标识号:用户组唯一编号,用户组见文件/ todo

  • 用户个人信息:姓名电话地址等,多个信息,号分隔可以为空

  • 用户家目录: root为/root,普通用户为/home/root ,类似Windows上的C:\uses\zhangsan

  • shell登录方式: bash终端。(拓展)除了bash终端还有zash等,命令行重度使用者会追求更好用功能更适合自己的终端。

/etc/shadow 密码文件

查看用户密码文件 sudo cat /etc/shadow 返回的信息部分如下:

sshd:!!:19985:::::: yangzheng:$6$VqPtxUSJ9joXpH6T$t5B8ff0DUMzN1ExZJGXorSZ/iFZocqGi061dhgCyQNNHZIAwiV/Z6WQjE8WBFM4/rAfi3OQ1mS5lbVmG1l2yU1:19989:0:99999:7:::

格式 用户名:加密后的密码:上次修改密码日期:密码策略(4个数字):账号失效日期:保留位
字段详解:

  • 用户名:zhangsan

  • 已加密的密码:(拓展)通过一系列逻辑和sha512算法生成,可见密码111111加密后生成了一长串东西。当用户输入密码时会走处理逻辑和哈希算法,如果结果与文件中的一致则密码通过,即使被盗取也无法知道原来的密码。 但是root可以重新设置其它用户的密码,所以在规范操作中建议使用sudo而不是su root ,这里因为是本地学习环境的虚拟机,没有重要资料,可以先su root更方便。

  • 上次修改密码日期减1970年1月1日的天数:

  • 密码修改最少要经过的天数:

  • 密码有效期天数: 99999表示永不过期

  • 密码失效前警示天数

  • 账户失效后禁止登录天数

  • 系统保留字段

其它用户权限相关 /etc/group 用户组,/etc/gshadow 用户组密码,/etc/sudoers sudo命令相关设置

查看用户组文件 cat /etc/group 格式组名:密码位:组编号:组内成员 返回

root:x:0: wheel:x:10:yangzheng yangzheng:x:1000:

cat /etc/gshadow 返回

root::: yangzheng:!::

格式组名:加密后的组密码:组管理员:组中用户(多个用户用","隔开) 字段详解:

  • 组名

  • 加密后的组密码, !为无密码

  • 组中用户,多个用户,分隔

cat sudoers 返回,略。

用户管理

添加

useradd zhangsan

设置密码

sudo passwd zhangsan
系统提示键入New PasswordRetype Password ,键入后回车。 注意在linux系统中键入密码并没有像Windows中一样提示位数* ,如果不确定输入的对不对,按退格删除或再执行一次设置密码命令。

删除用户

sudo userdel zhangsan

切换命令

su rootsu - root, 后者会转换工作区和上下文环境变量,切换的更为彻底。 切换为root用户后,一些需要权限的命令将不需要在前面加sudo。

用户组管理

添加 groupadd

groupadd students 。添加后tail -3 /etc/group查看文件某位发现students组已添加。

删除

groupdel studentstail -3 /etc/group查看文件末尾发现students组已删除。

添加删除成员

(假设已添加账户stu1、stu2,已添加students组) 添加成员到组gpasswd -a stu1 students``gpasswd -a stu2 studentscat /etc/group | grep students查看students组看到已经加上去了students:x:1002:stu1,stu2
从组中删除成员gpasswd -d stu2 students

文件权限

查看 ls -l

ls -l /etc/ssh-l参数展示详细。
返回的部分如下

drwxr-xr-x. 2 root root 28 Sep 19 09:33 ssh_config.d -rw-------. 1 root root 4269 Jul 13 2021 sshd_config

格式(以第一行为例):

  • 第一个字符:文件夹d (directory)(终端里字体颜色为🔵)/-普通文件(终端里字体颜色为⚪️)/l (link)链接(类似windows里的快捷方式)。

  • 第一个字符后面的9个字符:权限rwxr-xr-x 。每三个字符为一组,三组分别为创建者权限、所在组权限、其它人权限。

    • r :read读权限

    • w: write写权限

    • x: execute执行权限

    • -: 无权限

  • 权限后面的数字: 2 ,文件的硬连接个数,如果是文件夹则表示子目录个数。(拓展) ls -i找到文件inodenum后再查找find / -inum <inodenum>

  • 文件拥有者

  • 文件拥有者所在组

  • 文件大小字节: ls -lh -h参数(human)显示易读字节

修改文件所有者(文件主) chown

格式 chown <user> <file> 或 chown :<group> <file>
chown stu1 /home/zhangsan/abc.txt

修改权限 chmod

只有文件主和root用户可以修改。

  1. 文字表示法 chmod [ugoa][+-=][rwx], 参数1 u用户 g用户组 o其它人 a所有用户,参数2 +增加权限 -删除权限 =赋予权限,



    chmod o+w ./abc.


    chmod u+wx ./abc.sh ,增加文件写权限和执行权限,在安全软件时权限不够经常用这类命令


    chmod u+x,o+r ,所有者添加执行权限,其它用户添加读权限

  2. 数字表示法 假设一个文件的权限9位字符rwxrwxr-- ,每组rwx ,对应三组u、g、o。


    现在定义,每组权限rwx对应二进制的3位000 ,0表示无权限,1表示有权限,那么rwx对应111r--对应100


    再转成十进制rwx对应421 ,习惯之后0代表无权限, 6代表rw, 7代表rwx


    chmod 644 abc.txt即为chmod u+rw,g+w,o+w


    实际工作中有人喜欢chmod 777 abc.sh来让文件一定能运行,但有风险,部分系统配置文件权限并不是约高越好,错误的权限会导致无法正常工作。

作业和参考步骤

  1. 创建用户stu1 stu2 tea1 ,赋予密码

  2. 创建用户组students teachers

  3. 把stu1 stu2用户加入students组,tea1用户加入teachers组

  4. 以root身份,在根目录下创建/share文件夹,其下创建两个子文件夹/share/handout /share/software

  5. 以root身份,在上面目录下创建两个文件,文本文件/share/handout/a.txt 、软件安装脚本文件/share/software/b.sh

  6. 将a.txt和b.sh的文件主都变更为tea1用户。

  7. 权限: a.txt的权限为允许tea1读写,teachers组读写,其它人无权限。 b.sh的权限为允许所有人(即文件主和用户组和其它人)读、执行,允许teachers组写。

  8. 查看结果 tree /share查看目录树,截图

  9. 查看结果 ls -l /share/handout/a.txt查看文件权限,截图。 ll /share/software/b.sh查看文件权限,截图。

  10. 将三张结果截图

作业二:如果上面做不出来,先做 教材p38页上的,比较简单。

参考

ls -l详解 wget下载文件

Last modified: 25 十一月 2024