diff --git "a/\351\231\266\345\256\227\350\261\252/\347\254\224\350\256\260/20240615-\347\224\250\346\210\267\344\270\216\346\226\207\344\273\266\346\235\203\351\231\220.md" "b/\351\231\266\345\256\227\350\261\252/\347\254\224\350\256\260/20240615-\347\224\250\346\210\267\344\270\216\346\226\207\344\273\266\346\235\203\351\231\220.md" new file mode 100644 index 0000000000000000000000000000000000000000..c4c5f2e04b6c72698fc237edb388695f5f3f0e06 --- /dev/null +++ "b/\351\231\266\345\256\227\350\261\252/\347\254\224\350\256\260/20240615-\347\224\250\346\210\267\344\270\216\346\226\207\344\273\266\346\235\203\351\231\220.md" @@ -0,0 +1,190 @@ +# 用户权限和文件权限 + +### 主要命令 + +```bash +usermod 用户的修改 +groupmod 用户组的修改 +chmod 文件权限的修改 +chown 文件所有者的修改 +chgrp 文件所属组的修改 +``` + +## 用户权限 + +### 用户的增加、删除、修改 + +#### 增加用户 + +```bash +useradd username +adduser username +useradd -m -d /home/YYY -s /bin/bash XXX # 创建一个名为XXX的用户,并指定其主目录为/home/YYY,shell为/bin/bash +``` + +#### 删除用户 + +```bash +userdel username +``` + +#### 修改用户 + +##### 用户的修改可以通过usermod命令来完成。例如,修改用户existinguser的主目录为/home/newdir,可以使用以下命令 + +```bash +usermod -d /home/newdir existinguser +``` + +#### 用户的查询 + +```bash +id username +``` + +## 用户组 + +##### 用户组是一组用户的集合,用于简化权限管理和文件共享。每个用户都可以属于一个或多个用户组,而每个用户组都有一个唯一的组ID(GID)。用户组的主要作用是将一组具有相同权限的用户组织在一起,方便管理 + +#### 用户组的增加:用户组的删除可以通过groupadd命令来完成 + +```bash +groupadd groupname +``` + +#### 用户组的删除:用户组的删除可以通过groupdel命令来完成 + +```bash +groupdel groupname + +``` + +#### 用户组的修改:用户组的修改可以通过groupmod命令来完成 + +```bash +groupmod -g 1234 existinggroup +#将existinggroup的GID修改为1234 +``` + +#### 用户组的查询:用户组的查询可以通过groups命令来完成 + +```bash +groups username +``` + +## 文件权限 + +##### 文件权限是指文件或目录的访问权限,决定了谁可以访问、修改、删除文件或目录 + +其中,文件类型通常用一个字符表示 + +- -表示普通文件。 +- d表示目录。 +- l表示符号链接文件。 + +### 10个字符的权限表示法 + +#### Linux文件权限通常由10个字符表示,分为四部分 + +- 第一个字符表示文件类型。 +- 接下来的三个字符表示文件所有者的权限(读、写、执行)。 +- 紧接着的三个字符表示文件所有者所在组的权限(读、写、执行)。 +- 最后三个字符表示其他用户的权限(读、写、执行)。 + +### 基本权限 + +#### 基本权限包括读(r)、写(w)和执行(x)。对于文件,读权限允许用户查看文件内容,写权限允许用户修改文件内容,执行权限允许用户执行文件。对于目录,读权限允许用户查看目录内容,写权限允许用户在目录中创建、删除或重命名文件,执行权限允许用户进入目录 + +### 特殊权限 + +- SetUID(s):允许执行文件的用户临时获得文件所有者的权限。 +- SetGID(s):允许执行文件的用户临时获得文件所属组的权限。 +- Sticky位(t):对于目录,只有文件所有者、文件所有者所在组或超级用户才能删除其中的文件。 + +### 隐藏权限 + +##### Linux中没有专门的“隐藏权限”概念,但文件名以.开头的文件通常被视为隐藏文件,不会在默认的ls命令输出中显示 + +### 数字表示法修改Linux文件权限 + +##### 在Linux系统中,您可以使用chmod命令结合数字表示法来修改文件或目录的权限。数字表示法是基于八进制数系统,每个数字代表一种权限组合。具体来说,数字表示法中的每一位数字代表了 + +- 所有者(user, u)、 +- 所属组(group, g) +- 其他用户(others, o)的权限, +- 分别对应着读(r, 4)、写(w, 2)和执行(x, 1)权限。 + +### 数字表示法的基本原则 + +- 数字0表示没有任何权限。 +- 数字1表示仅执行权限。 +- 数字2表示仅写权限。 +- 数字3表示写和执行权限。 +- 数字4表示仅读权限。 +- 数字5表示读和执行权限。 +- 数字6表示读和写权限。 +- 数字7表示读、写和执行权限 + +### chmod + +#### chmod命令的基本语法 + +- r:读权限 +- w:写权限 +- x:执行权限 + +----------- + +- u:所有者 +- g:所属组 +- o:其他用户 +- a:所有用户 +- +:增加权限 +- -:取消权限 +- =:覆盖权限 + +```bash +chmod u+x filename # 为文件所有者添加执行权限 +chmod g-w filename # 取消文件所属组的写权限 +chmod o=rw filename # 允许其他用户读写文件 +chmod a+r filename # 允许所有用户读文件 + +chmod u+rwx,g+rx,o+r filename +# 所有者:rwx 读写执行 +# 所属组:rx 读执行 +# 其他用户:r 读 + +``` + +### 使用八进制表示法修改文件权限 + +#### 读(r):4 + +#### 写(w):2 + +#### 执行(x):1 + +|数字| 权限| 二进制| +|-|-|-| +|0| ---| 000| +|1| --x| 001| +|2| -w-| 010| +|3| -wx| 011| +|4| r--| 100| +|5| r-x| 101| +|6| rw-| 110| +|7| rwx| 111| + +```bash +chmod 754 filename +# 所有者:rwx 读写执行 +# 所属组:rx 读执行 +# 其他用户:r 读 +``` + +### chgrp 改变所属组 + +```bash +chgrp groupname filename +# 修改文件filename的所属组为groupname +``` diff --git "a/\351\231\266\345\256\227\350\261\252/\347\273\203\344\271\240/\347\224\250\346\210\267\344\270\216\346\226\207\344\273\266\346\235\203\351\231\220\347\232\204\347\256\241\347\220\206.md" "b/\351\231\266\345\256\227\350\261\252/\347\273\203\344\271\240/\347\224\250\346\210\267\344\270\216\346\226\207\344\273\266\346\235\203\351\231\220\347\232\204\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..2fe4b1ee5335d276bb73715b5fdcb7e4169d2c08 --- /dev/null +++ "b/\351\231\266\345\256\227\350\261\252/\347\273\203\344\271\240/\347\224\250\346\210\267\344\270\216\346\226\207\344\273\266\346\235\203\351\231\220\347\232\204\347\256\241\347\220\206.md" @@ -0,0 +1,245 @@ +# 用户与文件权限的管理 + +课后作业: + +- ​ 什么是linux 硬连接和软连接(快捷方式) + +1. 用户管理 + 1. 分类 + - 超级用户 root ,最高权限,不受一般权限的限制,编号0 ,提示符是 # + - 内置用户 :由系统自动创建 ,编号1-999 + - 普通用户 :我们用root权限手动创建用户,受权限控制 ,编号从1000依次递增 + - 创建普通用户test会自动创建他的编号u ,他原生组g(和用户名同名test),附加组 G (test),初始化的时候一定是u 1000(test), 1000(test),1000(test) + - 普通不能创建普通用户,只有root + - 提示符是 $ + - u user 用户 uid + - group 组 gid + - Group + 2. 用户 + 1. 添加 + - useradd -m -d /home/YYY -s /bin/bash XXX + - adduser + 2. 删除 + - userdel XXX + - juserdel -r xxx 删除用户和相关的目录 + 3. 修改 + - usermod -G 组号|组名 XXX : usermod -G stu u15 覆盖原来的附加组(扩展组) + - usermod -aG 组号|组名 XXX : usermod -aG stu u15 保留原有附加组前提下,追加新的附加组 + - usermod -s /bin/aaa u15 + 4. 密码 + - passwd 用户名 root修改指定用户的密码 + - passwd 修改当前登录用户的密码,即自己的密码 + 5. 查询 + - id 用户名 指定用户 + - /etc/passwd + 6. 切换 + - su 仅仅切换了身份,不切换目录和shell等环境 + - su - 完全切换,连环境变量和目录一起切换 + 3. 用户组:编号也是从1000开始 + 1. 添加 + - groupadd student 添加一个组,编号自动的 + - groupadd -g 8888 student2 添加一个组,编号自动的 + 2. 删除 groupdel 组号|名 + 3. 修改 groupmod + 4. 查询 + - /etc/group +2. 文件管理 + - 文件属性:10个字符,连接数或子目录数,文件拥有者,文件所属的用户组,文件大小,修改时间,文件|目录名 + - 10个字符: + - 第1位 文件类型 + - d 目录 + - -普通文件 + - l 连接文件 + - b c s p 等其它文件 + - 后9位分别代表了:三种角色的权限,每3位一组 + - 2-4 拥有者权限 + - 5-7 用户组的权限 + - 8-10 其它人的权限 + - 基本权限 + - 读 r (read) : 打开并显示文件内容,查看目录基本信息 + - 写 w (write) : 文件,可以写入,修改,删除内容,目录:创建,修改,删除文件|目录 + - 执行 x (execute) :文件如果是二进制或脚本文件就可以执行,目录表示可以进入 + - 特殊权限 + - SUID + - GUID + - 隐藏权限 + - lsattr 列出隐藏权限 + - chattr 修改隐藏权限 + - +i 增加,不得任意更动文件或目录的效果 + - -i 消除 + - + - 权限表示 + - 字符 + - 数字 + - r == 4 + - w == 2 + - x == 1 + - 身份表示 + - u 拥有者 (user) + - g 用户组(group) + - o 其它人 (other) + - a 所有人 (all) + - 修改权限 :root可以改任何文件,而拥有者可以改自己拥有文件 + - chmod 要的权限 文件|目录 + - chmod u+w,g-r,o=rw 1.txt + - chmod 755 1.txt + - 修改拥有者 + - chown 用户名 文件名 + - 修改文件所属的用户组 + - chgrp 组名|号 文件|目录 + - sudo + - 修改 /etc/sudoers 文件 + - 将 用户追加到sudo组 :sudo usermod -aG sudo u15 +3. Linux执行命令的过程 + 1. 如果这个命令是绝对路径,就直接执行 + 2. 如果不是, + 1. 查一下是不是别名,是执行对应的命令 + 2. 从环境变量中找这个命令 $PATH中的路径依次查找这个命令 + 3. 本地也没有,就报错了。 + + + +### 权限管理练习 + +1. 创建/guanli 目录,在/guanli下创建zonghe 和 jishu 两个目录(一条命令) + + ```sh + mkdir -p guanli/{zonghe,jishu} + ``` + +2. 添加组帐号zonghe、caiwu、jishu,GID号分别设置为2001、2002、2003 + + ```sh + sudo groupadd -g 2001 zonghe + sudo groupadd -g 2002 caiwu + sudo groupadd -g 2002 caiwu + ``` + +3. 创建jerry、kylin、jerry、obama用户,其中的kylin用户帐号在2020年12月30日后失效 + + ```sh + sudo adduser kylin -e 2020-12-30 + sudo adduser jerry obama + ``` + +4. 将jerry、kylin、tsengia、obama等用户添加到zonghe组内 + + ```sh + sudo usermod -aG zonghe jerry kylin tsengia obama + /*其余同上*/ + ``` + +5. 创建handy、cucci用户,其中cucci帐号的登录Shell设置为“/sbin/nologin” + + ```sh + sudo useradd handy + sudo useradd cucc -s /sbin/nologin + + ``` + +6. 将handy、cucci等用户添加到jishu组 + + ```sh + usermod -aG jishu jerry + usermod -aG jishu cucc + ``` + +7. 将上述的所有用户均要求加入到guanli组内 + + ```sh + usermod -aG guanli handy + usermod -aG guanli cucc + ``` + +8. 将zonghe组内的obama用户删除 + + ```sh + sudo gpasswd -d obama zonghe + ``` + +9. 为jerry用户设置密码为“123456”(使用普通方法)为cucci用户设置密码为“redhat” + + ```sh + sudo passwd jerry + sudo passwd cucci + ``` + +10. 将jerry用户锁定,并查看锁定状态 + + ```sh + usermod -L jerry #锁定 + usermod -U jerry #解锁 + ``` + +11. 打开两个xshell窗口,通过(who 或者 w)命令查看连接状态,并通过fuser杀掉其中一个 + + ```sh + fuser -v /dev/pts/0 + kill -9 进程号 + ``` + +12. 查看cucci用户,属于那些组,并查看其详细信息 + + ```sh + groups cucc && id cucc + cat etc/passwd |grep 'cucc' + ``` + +13. 手工创建账号student(预留) + + ```sh + useradd student + ``` + +14. 设置权限及归属:/guanli目录属组设为guanli, /guanli/zonghe目录的属组设为zonghe /guanli/jishu目录的属组设为jishu,设置3个目录都是禁止其他用户访问的权限 + + ```sh + ### 归组 + sudo chown :组名 源文件 + ### 权限 + sudo chown 770 源文件 #设置3个目录都是禁止其他用户访问 + ``` + +15. 建立公共目录/ceshi允许技术组内的所有用户读取、写入、执行文件, 禁止其他用户读、写、执行 + + ``` + sudo chown :jishu ceshi/ + sudo chown 770 ceshi/ + ``` + + + +16. 清除jerry用户密码 + + ```sh + sudo passwd -d jerry #清除密码 + sudo getent shadow jerry #查看是否清除密码 + ``` + +17. 锁定cucci用户密码并查看状态 + + ```sh + sudo passwd -l cucc + sudo passwd -S cucc + ``` + +18. 修改obama用户的UID为8888 + + ```sh + sudo usermod -u 8888 obama + ``` + +19. 通过passwd命令修改kylin用户的最长密码使用期限为60天 + + ```sh + sudo passwd --maxdays 60 kylin + ``` + +20. 通过id groups等命令查看用户handy信息 + + ```sh + id handy + groups handy + ``` + + \ No newline at end of file