目录
用户与用户组权限
在linux中root拥有最高的权限,所有文件或文件夹的权限设定对root都是无效的,所以在正式的生产环境和服务器中,尽量使用普通账号+人工权限设定方式,避免出现安全漏洞后被人以root权限利用系统,导致完全的彻底的安全问题,对于权限来说,无论是操作系统还是应用系统,首先需要具备零信任的意识,永远使用最小的权限操作,权限不够再多授予即可
一、用户与用户组
功能项 | 命令实例 | 作用 |
---|---|---|
用户组 | cat /etc/group | 查看当前系统存在的用户组 |
groupadd testing | 添加一个新的用户组testing | |
cat /etc/group | 查看组是否被新增成功 | |
groupmod -n test testing | 将testing重命名成test | |
groupdel test | 删除组test | |
groups root | 查看用户root所在的所有组 | |
useradd | useradd qiang | 新增一个用户qiang(默认时将新增一个对应的名为qiang的组) |
cat /etc/passwd | 查看当前系统的用户信息 | |
useradd -g test denny | 新增一个用户denny并将其加入test组 | |
useradd -g test -G dev mary | 新增用户mary,其主组为test,并附加到组dev中 | |
usermod | usermod -g dev qiang | 将用户qiang换到dev组 |
usermod -G 502 qiang | 将用户qiang附加到gid为502的这个组 | |
usermod -d /home/temp/mary | 将mary的主目录从/home/mary改为/home/temp/ | |
userdel | userdel qiang | 删除用户qiang |
userdel -f qiang | 强制删除用户qiang(即使该用户已经登录) | |
userdel -r qiang | 删除用户qiang并删除其主目录 | |
自己创建的组的组号都是从1000开始的,1000以内的组号都是留给系统自己用的
根据该图创建用户和组
组:
用户:
我们看看他们的uid和gid
二、文件与文件夹权限
任意一个文件或文件夹,用 ls -l
的命令可以显示其基本信息和权限信息
drwxr-xr-x. 2 root root 6 9月 15 16:40 myfolder -rw-r--r--. 1 root root 5 9月 15 16:42 test.txt
-
第一栏的10个字符,共分为4个部分
-
第一个字母: - 代表普通文件, d 代表目录
-
第2、3、4:代表当前文件或文件夹所属用户的(owner)权限,用 u 表示
-
第5、6、7:代表当前文件或文件夹所属用户组(group)的权限,用 g 表示
-
第8、9、10:代表其他用户组和其他用户(other)的权限,用 o 表示
-
-
权限的表示方法:
-
r 读:也可以使用数字 4 来表示
-
w 写:也可以使用数字 2 来表示
-
x 执行:也可以使用数字 1 来表示
-
任何一个数都可以使用2的多少次方互加来表示,就像任何一个数字都可以使用10的多少次方来表示
-
用2的多少次方来表示的话,是不会有重复的
-
user有rwx的权限,即数字为7;rw权限,即数字为6;rx权限,数字为5;wx权限,数字为3
-
功能项 | 命令实例 | 作用 |
---|---|---|
chmod | chmod[权限] [文件或目录] | |
ls -l hello.txt | ||
左边10位中的第一位代表文件类型 | d 代表目录 - 代表普通文件 l代表链接文件 | |
左边10位中的后9位代表权限 | 前3位代表文件所有者的权限(用u表示) 中间3位代表文件所在组的权限(用g表示) 后3位代表其他组的权限(用o表示) | |
权限rwx的意义 | 权限 r 或数字 4 表示可读 权限 w 或数字 2 表示可写 权限 x 或数字 1 表示可执行 | |
chmod u+x hello.txt | 为hello.txt文件所有者添加可执行权限 | |
chmod u-w hello.txt | 为hello.txt文件所有者去除可执行权限 | |
chmod g-r hello.txt | 为hello.txt文件所在组去除可读权限 | |
chmod o+w hello.txt | 为hello.txt文件的所在组的其它组添加可写权限 | |
chmod a+w hello.txt | 为所有三种角色添加可写权限 | |
chmod a+wx hello.txt | 为所有三种角色添加可写可执行权限 | |
chmod a-rwx hello.txt | 去除hello.txt的所有权限(此时仅root可编辑) | |
chmod 777 hello.txt | 将hello.txt的权限设为rwxrwxrwx | |
chmod 643 hello.txt | 将hello.txt的权限设为rw-r---wx | |
chmod 777 /opt/test/ | 将目录/opt/test的权限更改为777 | |
chmod -R 755 /opt/test | 将目录/opt/test及其下所有文件和子目录的权限更改为755 | |
chown | chown mary hello.txt | 将hello.txt的文件所有者改为mary |
chown mary /opt/test | 将目录/opt/test的所有者改为mary | |
chown -R mary /opt/test | 将目录/opt/test及其所有子目录和文件的所有者改为mary | |
chgrp | chgrp test hello.txt | 将hello.txt所在的组改为test |
chgrp mary /opt/test | 将目录/opt/test所在的组改为mary | |
chgrp -R mary /opt/test | 将目录/opt/test及其所有子目录和文件所在的组改为mary | |
passwd | passwd mary | 修改mary的密码 /etc/shadow保存了所有用户的密码,默认只有root可以操作 |
那么此时,mary对1.txt有rw的权限,dev组中的成员对1.txt有r的权限,其他用户和组队1.txt有r的权限
我们可以使用 命令 su 来切换登录账户
然后使用vi或cat等命令来测试
以上是通过更改文件所属用户和组来做到权限的更改那么对于权限的直接更改是如何做到的呢
我们可以适用 chmod 命令来操作
-
减掉用户的 w 权限
-
减掉组的 r 权限
当然,对于权限的使用我们可直接使用数字,这样可以直接对该文件的用户,组,其他用户和组三部分的权限一遍设置,更方便
-
设置用户为rwx权限,组为rw权限,其它用户和组为r权限