2-2 用户权限、文件权限
用户账户相关文件
/etc/passwd 账户文件
查看用户账户 sudo cat /etc/passwd
返回的信息部分如下:
格式用户名:密码占位符:用户编号(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
返回的信息部分如下:
格式 用户名:加密后的密码:上次修改密码日期:密码策略(4个数字):账号失效日期:保留位
字段详解:
用户名:zhangsan
已加密的密码:(拓展)通过一系列逻辑和sha512算法生成,可见密码
111111
加密后生成了一长串东西。当用户输入密码时会走处理逻辑和哈希算法,如果结果与文件中的一致则密码通过,即使被盗取也无法知道原来的密码。 但是root可以重新设置其它用户的密码,所以在规范操作中建议使用sudo
而不是su root
,这里因为是本地学习环境的虚拟机,没有重要资料,可以先su root
更方便。上次修改密码日期减1970年1月1日的天数:
密码修改最少要经过的天数:
密码有效期天数: 99999表示永不过期
密码失效前警示天数
账户失效后禁止登录天数
系统保留字段
其它用户权限相关 /etc/group 用户组,/etc/gshadow 用户组密码,/etc/sudoers sudo命令相关设置
查看用户组文件 cat /etc/group
格式组名:密码位:组编号:组内成员
返回
cat /etc/gshadow
返回
格式组名:加密后的组密码:组管理员:组中用户(多个用户用","隔开)
字段详解:
组名
加密后的组密码,
!
为无密码组中用户,多个用户
,
分隔
cat sudoers
返回,略。
用户管理
添加
useradd zhangsan
设置密码
sudo passwd zhangsan
系统提示键入New Password
和Retype Password
,键入后回车
。 注意在linux系统中键入密码并没有像Windows中一样提示位数*
,如果不确定输入的对不对,按退格
删除或再执行一次设置密码命令。
删除用户
sudo userdel zhangsan
切换命令
su root
或su - root
, 后者会转换工作区和上下文环境变量,切换的更为彻底。 切换为root用户后,一些需要权限的命令将不需要在前面加sudo。
用户组管理
添加 groupadd
groupadd students
。添加后tail -3 /etc/group
查看文件某位发现students组已添加。
删除
groupdel students
。 tail -3 /etc/group
查看文件末尾发现students组已删除。
添加删除成员
(假设已添加账户stu1、stu2,已添加students组) 添加成员到组gpasswd -a stu1 students``gpasswd -a stu2 students
。 cat /etc/group | grep students
查看students组看到已经加上去了students:x:1002:stu1,stu2
。
从组中删除成员gpasswd -d stu2 students
。
文件权限
查看 ls -l
ls -l /etc/ssh
, -l
参数展示详细。
返回的部分如下
格式(以第一行为例):
第一个字符:文件夹
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用户可以修改。
文字表示法
chmod [ugoa][+-=][rwx]
, 参数1 u用户 g用户组 o其它人 a所有用户,参数2 +增加权限 -删除权限 =赋予权限,例
chmod o+w ./abc.
chmod u+wx ./abc.sh
,增加文件写权限和执行权限,在安全软件时权限不够经常用这类命令chmod u+x,o+r
,所有者添加执行权限,其它用户添加读权限数字表示法 假设一个文件的权限9位字符
rwxrwxr--
,每组rwx
,对应三组u、g、o。现在定义,每组权限
rwx
对应二进制的3位000
,0表示无权限,1表示有权限,那么rwx
对应111
,r--
对应100
,再转成十进制
r
、w
、x
对应4
、2
、1
,习惯之后0
代表无权限,6
代表rw
,7
代表rwx
。chmod 644 abc.txt
即为chmod u+rw,g+w,o+w
。实际工作中有人喜欢
chmod 777 abc.sh
来让文件一定能运行,但有风险,部分系统配置文件权限并不是约高越好,错误的权限会导致无法正常工作。
作业和参考步骤
创建用户
stu1
stu2
tea1
,赋予密码创建用户组
students
teachers
把stu1 stu2用户加入students组,tea1用户加入teachers组
以root身份,在根目录下创建
/share
文件夹,其下创建两个子文件夹/share/handout
/share/software
。以root身份,在上面目录下创建两个文件,文本文件
/share/handout/a.txt
、软件安装脚本文件/share/software/b.sh
。将a.txt和b.sh的文件主都变更为tea1用户。
权限:
a.txt
的权限为允许tea1读写,teachers组读写,其它人无权限。b.sh
的权限为允许所有人(即文件主和用户组和其它人)读、执行,允许teachers组写。查看结果
tree /share
查看目录树,截图查看结果
ls -l /share/handout/a.txt
查看文件权限,截图。ll /share/software/b.sh
查看文件权限,截图。将三张结果截图
作业二:如果上面做不出来,先做 教材p38页上的,比较简单。