diff --git "a/28 \346\236\227\351\235\222\350\214\271/20240614 \347\224\250\346\210\267 \346\235\203\351\231\220.md" "b/28 \346\236\227\351\235\222\350\214\271/20240614 \347\224\250\346\210\267 \346\235\203\351\231\220.md" new file mode 100644 index 0000000000000000000000000000000000000000..0ebe418facd49a36a1b1261ed1c3f44004be2501 --- /dev/null +++ "b/28 \346\236\227\351\235\222\350\214\271/20240614 \347\224\250\346\210\267 \346\235\203\351\231\220.md" @@ -0,0 +1,476 @@ + 笔记 + +![20240605092950](https://gitee.com/weibina/computer-fundamentals/raw/master/img/20240605092950.png) + +## 用户 + +用户管理 +以下命令均需以root用户身份执行 + +### 创建用户:useradd + +```sh +useradd [-g -d -s] 用户名 +#选项 -g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g +# 选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名删除用户 +# 选项-s用来指定用户登录时的默认shell(即命令解释器) +``` + +### 删除用户:userdel + +```sh +userdel [-r] 用户名 +#选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留 +``` + +### 使用`getent`命令,可以查看当前系统中有哪些用户 + +```shell +getent passwd +# 查看当前系统中有哪些用户 +``` + +### 用于修改密码:passwd + +```sh +passwd [options] [username] +-a, --all:更改所有用户的密码 +-d, --delete:删除用户密码(将密码置为空) +-e, --expire:强制用户在下次登录时更改密码 +-h, --help:显示帮助信息 +-l, --lock:锁定用户账户 +-S, --status:显示用户密码的状态 +-u, --unlock:解锁用户账户 +-n, --mindays MIN_DAYS:设置密码最小使用天数 +-x, --maxdays MAX_DAYS:设置密码最大使用天数 +-w, --warndays WARN_DAYS:设置密码过期前提醒天数 +``` + +### 查看信息:groups + +groups命令用于显示用户所属的用户组。下面是groups命令的语法和选项: + +```sh +groups [options] [username] +``` + +选项: + +- -g, --group:显示用户名所属的主用户组 +- -h, --help:显示帮助信息 +- -n, --name:显示用户组名称而不是GID +- -r, --repeated:显示重复的用户组 + +```sh +id [options] [username] +``` + +选项: + +- -u, --user:显示用户ID +- -n, --name:显示用户名而非数字ID +- -G, --groups:显示附加组的ID和名称 + +## 组 + +### 创建用户组:groupadd + +```sh +groupadd 用户组名 +``` + +### 删除用户组:groupdel + +```sh +groupdel 用户组名 +``` + +### 查看用户所属组 :id + +```shell +id [用户名] +#参数:用户名,被查看的用户,如果不提供则查看自身 +``` + +### 修改用户所属组:usermod + +```shell +usermod -aG 用户组 用户名 +# 将指定用户加入指定用户组 +-c, --comment COMMENT:设置用户的备注信息 +-d, --home HOME_DIR:设置用户的家目录 +-e, --expiredate EXPIRE_DATE:设置用户账户的过期日期 +-f, --inactive INACTIVE:设置用户账户在密码过期后被禁用之前的天数 +-g, --gid GROUP:将用户加入指定的用户组 +-G, --groups GROUPS:设置用户所属的附加用户组 +-l, --login NEW_LOGIN:修改用户的登录名 +-L, --lock:锁定用户账户,禁止登录 +-p, --password PASSWORD:设置用户的加密口令 +-s, --shell SHELL:设置用户的登录shell +-u, --uid UID:设置用户的用户ID +-U, --unlock:解锁用户账户 +``` + +### 管理用户组: gpasswd + +gpasswd命令用于管理用户组的密码 + +```sh +-a, --add :将指定用户添加到密码组中 +-d, --delete :将指定用户从密码组中删除 +-M, --members :设置密码组的成员列表 +-Q, --root :指定要操作的密码文件 +-A, --administrators :设置密码组的管理员列表 +-r, --restrictions :设置密码组的限制条件 +-v, --verbose:显示详细的输出信息 +-h, --help:显示帮助信息 +-V, --version:显示版本信息 +所以,这条命令的作用是将用户 `obama` 从 `zonghe` 组中移除。 +``` + + + +## 小结 + +- ```sh + - 用户、用户组相关管理命令 + - `groupadd`添加组、`groupdel`删除组 + - `useradd`添加用户、`userdel`删除用户 + - `usermod`修改用户组、`id`命令查看用户信息 + - `getent passwd`查看系统全部用户信息 + - `getent group`查看系统全部组信息 + - `gpasswd` 它允许用户设置组的密码、成员、管理员和其他限制条件 + -a, --add :将指定用户添加到密码组中 + -d, --delete :将指定用户从密码组中删除 + -M, --members :设置密码组的成员列表 + -Q, --root :指定要操作的密码文件 + -A, --administrators :设置密码组的管理员列表 + -r, --restrictions :设置密码组的限制条件 + -v, --verbose:显示详细的输出信息 + -h, --help:显示帮助信息 + -V, --version:显示版本信息 + ``` + +举例:drwxr-xr-x,表示: + +- 这是一个文件夹,首字母d表示 +- 所属用户(右上角图序号2)的权限是:有r有w有x,rwx +- 所属用户组(右上角图序号3)的权限是:有r无w有x,r-x (-表示无此权限) +- 其它用户的权限是:有r无w有x,r-x + +**rwx** +rwx含义: + +- r表示读权限 +- w表示写权限 +- x表示执行权限 + +针对文件、文件夹的不同,rwx的含义有细微差别: + +- **r**,针对文件可以查看文件内容 + + - 针对文件夹,可以查看文件夹内容,如ls命令 + +- **w**,针对文件表示可以修改此文件 + + - 针对文件夹,可以在文件夹内:创建、删除、改名等操作 + +- **x**,针对文件表示可以将文件作为程序执行 + + - 针对文件夹,表示可以更改工作目录到此文件夹,即cd进入 + + + +## 修改权限 - chmod + +chmod命令 + +我们可以使用chmod命令,修改文件、文件夹的权限信息。 + +> 注意,只有文件、文件夹的所属用户或root用户可以修改 +> + +```sh +chmod [-R] 权限 文件或文件夹 +``` + + +解释: + +- 选项:-R,对文件夹内的全部内容应用同样的操作 + +示例: + +- ```sh + - chmod u=rwx,g=rx,o=x hello.txt ,将文件权限修改为:rwxr-x--x + - 其中:u表示user所属用户权限,g表示group组权限,o表示other其它用户权限 + - chmod -R u=rwx,g=rx,o=x test,将文件夹test以及文件夹内全部内容权限设置为:rwxr-x--x + + 除此之外,还有快捷写法:`chmod 751 hello.txt + ``` + +权限的数字序 + +权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。 + +数字的细节如下:`r`记为`4`,`w`记为`2`,`x`记为`1` + +## 修改拥有者 - chown + +chown命令 + +使用chown命令,可以修改文件、文件夹的所属用户和用户组 + +> 普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行 +> + +```sh +chown [-R] [用户][:][用户组] 文件或文件夹 +``` + + +解释: + +- 选项,-R,同chmod,对文件夹内全部内容应用相同规则 + +- 选项,用户,修改所属用户 +- 选项,用户组,修改所属用户组 +- :用于分隔用户和用户组 + +示例: + +- ```sh + - chown root hello.txt,将hello.txt所属用户修改为root + - chown :root hello.txt,将hello.txt所属用户组修改为root + - chown root:ubuntu hello.txt,将hello.txt所属用户修改为root,用户组修改为ubuntu + - chown -R root test,将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则 + ``` + + + +小结 + +- ### chown命令 + + - 功能,修改文件、文件夹的所属用户、组 + + - 限制,只可root执行 + + - 语法:chown [-R] [用户][:][用户组] 文件或文件夹 + + - 选项,-R,同chmod,对文件夹内全部内容应用相同规则 + + - 选项,用户,修改所属用户 + + - 选项,用户组,修改所属用户组 + + - :用于分隔用户和用户组 + +## 修改所属组-chgrp + +``` +chgrp 组名 文件 / 目录名 +``` + +修改文件 / 目录的所属组 + + + +# 作业 + + + +### 权限管理练习 + +1. 创建/guanli 目录,在/guanli下创建zonghe 和 jishu 两个目录(一条命令) + + ```sh + mkdir -p guanli/zonghe /guanli/jishu + ``` + +2. 添加组帐号zonghe、caiwu、jishu,GID号分别设置为2001、2002、2003 + + ```sh + groupadd -g 2001 zonghe && groupadd -g 2002 caiwu + groupadd -g 2003 jishu + # -g, 为新组使用 GID + ``` + +3. 创建jerry、kylin、tsengia、obama用户,其中的kylin用户帐号在2020年12月30日后失效 + + ```sh + useradd jerry + useradd kylin -e 2020-12-30 + useradd tesngia + useradd obame + # -e,指定用户的失效日期,格式为"YYYY-MM-DD",就是/etc/shadow文件的第八个字段 + ``` + +4. 将jerry、kylin、tsengia、obama等用户添加到zonghe组内 + + ```sh + 第一种方法: + usermod -aG zonghe jerry + usermod -aG zonghe kylin + usermod -aG zonghe tsengia + usermod -aG zonghe obama + #-a 添加到新组 + #-G 指定组 + 第二种方法: + gpasswd -M jerry,kylin,tsengia,obama zonghe + -M, --members :设置密码组的成员列表 + ``` + +5. 创建handy、cucci用户,其中cucci帐号的登录Shell设置为“/sbin/nologin” + + ```sh + useradd handy + useradd -s /sbin/nologin cucci + #-s用来指定用户登录时的默认shell + ``` + +6. 将handy、cucci等用户添加到jishu组内 + + ``` + usermod -aG jishu handy cucci + ``` + +7. 将上述的所有用户均要求加入到guanli组内 + + ```sh + usermod -aG handy guanli + usermod -aG cucci guanli + usermod -aG jerry guanli + usermod -aG kylin guanli + usermod -aG tsengia guanli + usermod -aG obama guanli + ``` + +8. 将zonghe组内的obama用户删除 + + ```sh + `gpasswd -d obama zonghe` + 这条命令的含义是从组 `zonghe` 中删除用户 `obama`。 + + 具体解释: + - `gpasswd`: 是用来管理组密码的命令。 + - `-d`: 表示删除组成员。 + - `obama`: 是要从组中删除的用户。 + - `zonghe`: 是要操作的组名。 + -a, --add :将指定用户添加到密码组中 + -d, --delete :将指定用户从密码组中删除 + -M, --members :设置密码组的成员列表 + -Q, --root :指定要操作的密码文件 + -A, --administrators :设置密码组的管理员列表 + -r, --restrictions :设置密码组的限制条件 + -v, --verbose:显示详细的输出信息 + -h, --help:显示帮助信息 + -V, --version:显示版本信息 + 所以,这条命令的作用是将用户 `obama` 从 `zonghe` 组中移除。 + ``` + +9. 为jerry用户设置密码为“123456”(使用普通方法)为cucci用户设置密码为“redhat” + + ```sh + passwd jerry + passwd cucci + ``` + +10. 将jerry用户锁定,并查看锁定状态 + + ```sh + passwd -l jerry + passwd -s jerry + 常见的passwd命令选项包括: + + -l:锁定账号,防止用户登录系统。 + -u:解锁账号,允许用户登录系统。 + -d:清除密码,使用户账号变为无密码状态。 + -e:强制用户在下次登录时修改密码。 + -S:显示密码的状态信息,如密码过期信息等。 + -a:用于系统管理员管理密码策略的选项,可以设置密码过期期限等。 + ``` + +11. 打开两个xshell窗口,通过(who 或者 w)命令查看连接状态,并通过fuser杀掉其中一个 + + ```sh + fuser -k -n tcp 22 + fuser: 一个用于查看哪些进程正在使用指定文件或目录的命令。 + -k: 表示杀死找到的进程。 + -n tcp: 表示指定查找使用TCP协议的进程。 + 22: 表示端口号,这里指的是端口号为22的TCP连接。 + ``` + +12. 查看cucci用户,属于那些组,并查看其详细信息 + + ```sh + groups cucci + id cucci + ``` + +13. 手工创建账号student(预留) + + ```sh + vi /etc/passwd + student:x:1014:1014::/home/student:/bin/bash + vi /etc/shadow + student::18107:0:99999:7::: + vi /etc/group + student:x:1014: + mkdir /home/student + cd /etc/skel/ + ls -a | cp .b* /home/student/ + ``` + +14. 设置权限及归属:/guanli目录属组设为guanli, /guanli/zonghe目录的属组设为zonghe /guanli/jishu目录的属组设为jishu,设置3个目录都是禁止其他用户访问的权限 + + ```sh + chown :guanli /guanli + chown :zonghe /guanli/zonghe + chown :jishu /guanli/jishu + chmod -R o-rwx /guanli/ + # 选项:-R,对文件夹内的全部内容应用同样的操作 + ``` + +15. 建立公共目录/ceshi允许技术组内的所有用户读取、写入、执行文件, 禁止其他用户读、写、执行 + + ```sh + mkdir /ceshi + chown :jishu /ceshi + chmod g=rwx,o-rwx /ceshi/ + ``` + +16. 清除jerry用户密码 + + ```sh + passwd -d jerry + # -d, --delete :将指定用户从密码组中删除 + ``` + +17. 锁定cucci用户密码并查看状态 + + ```sh + passwd -l cucci + passwd -S cucci + # -l:锁定账号,防止用户登录系统。 + # -S:显示密码的状态信息,如密码过期信息等。 + ``` + +18. 修改obama用户的UID为8888 + + ```sh + usermod -u 8888 obama + # -u, --uid UID:设置用户的用户ID + ``` + +19. 通过passwd命令修改kylin用户的最长密码使用期限为60天 + + ``` + passwd -x 60 kylin + ``` + +20. 通过id groups等命令查看用户handy信息 + + ```sh + id handy + groups \ No newline at end of file