diff --git "a/\346\235\216\347\216\237/20240603 \347\224\250\346\210\267\347\256\241\347\220\206.md" "b/\346\235\216\347\216\237/20240603 \347\224\250\346\210\267\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..e580d2e9156187f1ff63811fedf27d03c4d6a56b --- /dev/null +++ "b/\346\235\216\347\216\237/20240603 \347\224\250\346\210\267\347\256\241\347\220\206.md" @@ -0,0 +1,52 @@ +## 创建用户 +使用 adduser 会提示引导用户创建新用户的信息 例如:创建密码,以及一些房间号、工作家庭电话及其他 +使用 useradd 直接创建用户账号 后面需要额外手动设置家目录等其他配置 + + 常用选项: + -d:指定用户的家目录 + -m:创建家目录 + -s:指定用户的登录shell + -u:指定用户的UID + -g:指定用户的主组 + -G:指定用户的附加组 + +## 更改用户密码 +```````bash +passwd 用户名 (执行命令后系统会要求输入两次新的密码) +``````` + +## 切换用户(su和su-的区别) +- su命令:当你使用su命令时,你将切换到指定的用户,但不会改变当前的工作目录,也不会加载目标用户的环境变量。这意味着,你将保持原来的环境变量配置和当前目录不变,只是以另一个用户的身份执行命令 +`使用su会发现执行一些命令的时候会提示权限不足 而su-这个-表示加载这个用户的环境变量从而可以直接执行` +- su -命令:使用su -命令时,除了切换到指定用户外,还会模拟登录环境,这意味着它会改变工作目录到目标用户的家目录,并加载该用户的环境变量配置,从而为你提供一个更完整的用户环境 + +## usermod用于修改用户账户 + 常用选项: + -d:更改用户的家目录 + -m:移动家目录,如果新目录不存在则创建 + -s:更改用户的登录shell + -u:更改用户的UID + -g:更改用户的主组 + -G:更改用户的附加组 + +## 查看用户 +可以使用[cat /less/ grep]命令查看/etc/pwsswd文件 该文件包含所有用户的基本信息 +如果想搜索特定的用户:grep 用户名 /etc/passwd +- 使用who查看当前登录的用户 +- 查看家目录 ls /home + +## 删除用户 +userdel 用户名 `注意的是如果是通过adduser创建的用户通过这个命令删除不了家目录` +- 解决一 直接rm -r /home/用户名 删除家目录 +- 解决二 通过userdel -r 用户名 删除用户的同时删除家目录 +- 解决三 如果已经删除了用户 最笨的方法就是创建用户在一同删除 +````````bash +groupadd:用于创建新组 + -g GID:指定新组的GID。如果不指定,系统会自动分配一个GID + -r:创建一个系统组,GID会小于500(这个数字可能会根据不同的系统而有所不同) + -f:如果组已经存在,不显示错误信息,并返回成功状态 +groupdel:用于删除组 +passwd:用于设置或更改用户密码 +chown:用于更改文件或目录的所有者 +chgrp:用于更改文件或目录的所属组 +``````````` \ No newline at end of file diff --git "a/\346\235\216\347\216\237/20240605 \346\235\203\351\231\220\347\256\241\347\220\206.md" "b/\346\235\216\347\216\237/20240605 \346\235\203\351\231\220\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..7d384ffd6ebab62fba3fba8516f990e43c52c1b3 --- /dev/null +++ "b/\346\235\216\347\216\237/20240605 \346\235\203\351\231\220\347\256\241\347\220\206.md" @@ -0,0 +1,29 @@ +## 禁止用户登入SSH +nologin是一个特殊的shell,用于防止用户登录到系统。当你将一个用户的登录shell设置为nologin时,该用户将无法通过终端或SSH登录到系统 +```````` +which nologin --查询是否有命令及位置 +usermod -s /sbin/nologin 用户名 --禁止用户登录 +cat /etc/passwd --查看用户的shell是否修改为nologin +```````` + +## 修改用户对某个对象的权限 +在linux系统中 使用ls -l来查看文件信息 +`drwxr-xr-x 2 root root 4096 Jun 4 20:05 lxx.txt` +在Linux系统中,文件权限是通过对每个文件或目录设置三位一组权限来控制的,每组权限分别对应文件的所有者(User)、所属组(group)和其他用户(others) + + - 第一个字符表示文件类型而不是权限 这里的d表示lxx.txt是一个目录不是文件 + - rwxr-xr-x表示文件或目录的权限 + - 2表示该文件或目录下有两个子文件或目录 + - 第一个root表示这个目录或文件的拥有者是root用户 + - 第一个root表示这个目录或文件的所属也是root组 + - 4096表示文件或目录大小为4096个字节 + - Jun 4 20:05表示这个目录或文件最后的修改时间为6月4号20:05 + - lxx.txt是文件或目录的名称 + +### 通常要修改权限时用chmod命令 +- 数字权限 4读 2写 1执行 + chmod 744 lxx.txt (这里的7表示拥有者拥有rwx全部权限 而所属者和其他用户只有只读权限) + +- 字符权限 rwx +添加 -删除 + - chmod ugo+rw lxx.txt (这里的ugo分别表示拥有者、所属组、其他用户添加读和写的权限) + - chmod a-x lxx.txt (这里的a表示所有用户去掉执行的权限) diff --git "a/\346\235\216\347\216\237/20240606 \346\235\203\351\231\220\347\273\203\344\271\240.md" "b/\346\235\216\347\216\237/20240606 \346\235\203\351\231\220\347\273\203\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..77ed893d6543e6ef91152d4d8c1d3f0fc64b9577 --- /dev/null +++ "b/\346\235\216\347\216\237/20240606 \346\235\203\351\231\220\347\273\203\344\271\240.md" @@ -0,0 +1,86 @@ +### 创建/guanli 目录,在/guanli下创建zonghe 和 jishu 两个目录(一条命令) + mkdir -p guanli/zonghe guanli/jishu + +### 添加组帐号zonghe、caiwu、jishu,GID号分别设置为2001、2002、2003 + groupadd -g 2001 zonghe --通过groupadd命令创建用户组 + groupadd -g 2002 caiwu --创建新组并指定其GID + groupadd -g 2003 jishu + cat /etc/group --查看系统上所有的组 + +### 创建jerry、kylin、tsengia、obama用户,其中的kylin用户帐号在2020年12月30日后失效 + 通过useradd命令创建用户 + usermod -e 2020-12-30 kylin --设置账户失效时间、 + 验证账户时间是否生效 chage -l kylin + +### 将jerry、kylin、tsengia、obama等用户添加到zonghe组内 + usermod -aG zonghe jerry + usermod -aG zonghe kylin + usermod -aG zonghe tsengia + usermod -aG zonghe obama + +### 创建handy、cucci用户,其中cucci帐号的登录Shell设置为“/sbin/nologin” + useradd -s /sbin/nologin cucci --禁止用户登入SSH + +### 将handy、cucci等用户添加到jishu组内 + usermod -aG jishu handy + usermod -aG jishu cucci + +### 将上述的所有用户均要求加入到guanli组内 + 通过usermod 命令的 -a 选项(表示追加)和 -G 选项(用于指定附加组) + 可以通过id (指定用户)查看 + +### 将zonghe组内的obama用户删除 + gpasswd -d obama zonghe + +### 为jerry用户设置密码为“123456”(使用普通方法)为cucci用户设置密码为“redhat” + passwd 用户名--修改密码 + +### 将jerry用户锁定,并查看锁定状态[root@localhost chen]# usermod -L jerry + usermode -L jerry --使用usermod命令的 -L 选项 + grep jerry /etc/shadow --通过查看 /etc/shadow 文件来验证用户的锁定状态 +`查看 /etc/passwd 文件中用户的密码字段前添加一个 ! 符号,从而锁定用户账户,使其无法登录 结果jerry:!$6$rounds=656000$G63K4...encryptedpassword...:19000:0:99999:7:::` + +### 打开两个xshell窗口,通过(who 或者 w)命令查看连接状态,并通过fuser杀掉其中一个 + 在第一个窗口使用who或w查看连接状态 + fuser -k /dev/pts/1 --这里的/dev/pts/1是连接时的终端设备文件 + +### 查看cucci用户,属于那些组,并查看其详细信息 + 使用 id 命令查看 cucci 用户的UID、GID以及所属的组 + 使用 finger 命令查看 cucci 用户的详细信息,包括用户名、真实姓名、家目录、登录Shell、最后登录时间等 + 查看 /etc/passwd 和 /etc/group 文件来获取用户和组的信息 + +### 手工创建账号student(预留) + useradd 用户名 + +### 设置权限及归属:/guanli目录属组设为guanli, /guanli/zonghe目录的属组设为zonghe /guanli/jishu目录的属组设为jishu,设置3个目录都是禁止其他用户访问的权限 + 确保 guanli、zonghe 和 jishu 这些组已经存在 + chown :guanli /guanli + chmod 770 /guanli + chown :zonghe /guanli/zonghe + chmod 770 /guanli + chown :jishu /guanli/jishu + chmod 770 /guanli + +### 建立公共目录/ceshi允许技术组内的所有用户读取、写入、执行文件, 禁止其他用户读、写、执行 + mkdir /ceshi --创建目录 + chmod 770 /ceshi --修改权限 + +### 清除jerry用户密码 + passwd -d jerry(也可以直接回车设置空密码) + +### 锁定cucci用户密码并查看状态 + passwd -l cucci + grep jerry /etc/shadow --查看 /etc/shadow 文件来验证用户的锁定状态 + +### 修改obama用户的UID为8888 + 指定用户的UID:useradd -u obama 8888 + 更改用户的UID:usermod -u Obama 8888 + +### 通过passwd命令修改kylin用户的最长密码使用期限为60天 + chage -M 60 kylin --chage修改密码到期信息 -M最长期限-m最短期限 + +### 通过id groups等命令查看用户handy信息 + 创建用户handy + id handy --uid=1000(handy) gid=1000(handy) groups=1000(handy) + groups handy --handy : handy显示用户组的信息 + 还可以通过[cat /groups/ less] handy /etc/passwd --/etc/passwd 包含所有用户的信息 \ No newline at end of file diff --git "a/\346\235\216\347\216\237/20240607 \351\232\220\350\227\217\346\235\203\351\231\220.md" "b/\346\235\216\347\216\237/20240607 \351\232\220\350\227\217\346\235\203\351\231\220.md" new file mode 100644 index 0000000000000000000000000000000000000000..814ea45919f27eb314caafee44e4e279eec2843c --- /dev/null +++ "b/\346\235\216\347\216\237/20240607 \351\232\220\350\227\217\346\235\203\351\231\220.md" @@ -0,0 +1,25 @@ +# Linux 隐藏权限 +`除了文件的读、写和执行权限外 还有一种隐藏权限 设置隐藏权限可以防止一些其他用户误操作或者恶意操作` + +### 使用加减类型来添加隐藏权限 +`````````` +chattr +i 文件 添加隐藏权限 +chattr -i 文件 删除隐藏权限 (即可使用rm删除文件) +`````````` + +## 专用设置命令chattr +- i:无法对文件进行修改 若对目录设置 该参数仅能修改子文件中的内容而不能新建或删除文件 +- a:仅允许补充或者追加文件内容 无法覆盖和删除内容 +```````` +touch text --创建文件 +chattr +i text --当添加了隐藏权限时不可删除文件 +chattr +a text --设置可以追加内容 +echo "大家好我是小酥鱼" >> text --使用重定向将内容输入到text文件中 +```````` + +## 专用查看命令lsattr +- a:显示所有文件和目录 现行目录"."和上行目录".." +```````` +lsattr text --查看此文件隐藏权限 +查看时:----i---------e------- text +```````` \ No newline at end of file diff --git "a/\346\235\216\347\216\237/20240612 \345\221\250\346\234\237\344\273\273\345\212\241\347\256\241\347\220\206.md" "b/\346\235\216\347\216\237/20240612 \345\221\250\346\234\237\344\273\273\345\212\241\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..9a4b74af0233368320cc9ffeb940c37515af40c5 --- /dev/null +++ "b/\346\235\216\347\216\237/20240612 \345\221\250\346\234\237\344\273\273\345\212\241\347\256\241\347\220\206.md" @@ -0,0 +1,85 @@ +### 什么是周期任务 +在Linux中,crontab是一个用于设置周期性被执行的任务的工具。通过crontab,用户可以很方便地设置定时任务,比如数据备份、系统日志清理等 +- crontab -e 与 /etc/crontab 同样是编辑计划任务,两者之间的区别是什么 +`crontab -e 更适合单个用户管理自己的计划任务,而 /etc/crontab 适合系统管理员为整个系统安排任务` + +### crontab命令选项 + crontab -e: 编辑当前用户的 crontab 文件 `如果文件不存在,将会创建一个新的文件` + crontab -l: 列出当前用户的 crontab 文件内容 + crontab -r: 删除当前用户的 crontab 文件 + crontab -i: 在删除 crontab 文件之前提示用户确认。与 -r 选项一起使用除所有计划任务 `如果是root用户下执行该选项则会删除全部计划任务` + +### crontab命令设置格式 + # Example of job definition: + # .---------------- minute (0 - 59) + # | .------------- hour (0 - 23) + # | | .---------- day of month (1 - 31) + # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... + # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat + # | | | | | + # * * * * * user-name command to be executed + 分 时 日 月 周 命令 + * * * * * + - - - - - + | | | | | + | | | | +----- 星期中星期几 (0 - 6) (星期天 为0) + | | | +---------- 月份 (1 - 12) + | | +--------------- 一个月中的第几天 (1 - 31) + | +-------------------- 小时 (0 - 23) + +------------------------- 分钟 (0 - 59) + + crontab默认调度任务 脚本运行 + /etc/cron.hourly + /etc/cron.daily + /etc/cron.weekly + /ect/cron.mouthly + +### 时间数值的特殊表示方法 + * 表示该范围内的任意时间 + , 表示间隔的多个不连续时间点 + - 表示一个连续的时间范围 + / 指定间隔的时间频率 + +# 周期任务练习 +### 每天3:00执行一次 + 0 3 * * * echo "大知闲闲小知间间" >> lxx.txt +### 每周六2:00执行 + 0 2 * * 6 +### 每周六1:05执行 + 5 1 * * 6 +### 每周六1:25执行 + 25 1 * * 6 +### 每天8:40执行 + 40 8 * * * +### 每天3:50执行 + 50 3 * * * +### 每周一到周五的3:40执行 + 40 3 * * 1-5 +### 每周一到周五的3:41开始,每10分钟执行一次 + 41/10 3 * * 1-5 +### 每天的10:31开始,每2小时执行一次 + 31 10-22/2 * * * +### 每周一到周三的9:30执行一次 + 30 9 * * 1-3 +### 每周一到周五的8:00,每周一到周五的9:00执行一次 + 0 8,9 * * 1-5 +### 每天的23:45分执行一次 + 45 23 * * * +### 每周三的23:45分执行一次 + 45 23 * * 3 +### 每周一到周五的9:25到11:35、13:00到15:00之间,每隔10分钟执行一次 + 25-35,0-59/10 9-11 * * 1-5 + 0-59/10 13-15 * * 1-5 +### 每周一到周五的8:30、8:50、9:30、10:00、10:30、11:00、11:30、13:30、14:00、14:30、5:00分别执行一次 + 30 8,9,10,11,13,14 * * 1-5 + 50 8 * * 1-5 + 0 10,11,14 * * 1-5 + 0 5 * * 1-5 +### 每天16:00、10:00执行一次 + 0 10,16 * * * +### 每天8:10、16:00、21:00分别执行一次 + 10 8 * * * + 16,21 * * * +### 每天7:47、8:00分别执行一次 + 47 7 * * * + 0 8 * * * \ No newline at end of file diff --git "a/\346\235\216\347\216\237/20240613 \347\216\257\345\242\203\345\217\230\351\207\217.md" "b/\346\235\216\347\216\237/20240613 \347\216\257\345\242\203\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..1d97a14e9ad075a5cfb91321e11939bbfce675b7 --- /dev/null +++ "b/\346\235\216\347\216\237/20240613 \347\216\257\345\242\203\345\217\230\351\207\217.md" @@ -0,0 +1,34 @@ +## 环境变量通常分为两类 +- 全局环境变量:这些变量对系统中的所有用户和进程都是可见的 +- 局部环境变量:这些变量通常只在当前的shell会话中可见,对其他用户和进程不可见 +```````````````` + PATH:决定了shell将搜索哪些目录以找到命令 + HOME:当前用户的主目录路径 + USER:当前登录的用户名 + PWD:当前工作目录 + SHELL:当前用户的shell程序路径 + EDITOR:用户的首选文本编辑器 + TERM:当前终端的类型 + LANG:系统语言和地区设置 + PS1:主提示符,是你在终端看到的命令提示符 +```````````````` +## 环境变量的设置和查看通常使用以下命令: + printenv:列出所有环境变量或某个特定的环境变量 + set:显示所有本地定义的变量,包括环境变量 + export:将局部变量导出为环境变量 + unset:删除一个环境变量 + +### 全局环境变量配置文件: + /etc/environment:系统级别的环境变量配置文件,对所有的用户和进程都有效 + /etc/profile:为所有用户设置环境变量,通常用于设置全局的默认环境变量 + /etc/profile.d/*.sh:在登录时由/etc/profile执行的脚本,可以用来设置或修改环境变量 + +### 用户级别的环境变量配置文件: + ~/.bashrc:Bash shell的用户配置文件,用于非登录shell会话 + ~/.bash_profile或~/.profile:Bash shell的用户配置文件,用于登录shell会话 + ~/.bash_login:如果存在,Bash登录shell会尝试执行此文件 + ~/.zshrc:Z shell (zsh)的用户配置文件,用于非登录shell会话 + ~/.zprofile:Z shell (zsh)的用户配置文件,用于登录shell会话 + +### 特定于会话的环境变量设置: + 直接在终端中使用export命令设置的环境变量,只对当前shell会话有效 \ No newline at end of file diff --git "a/\346\235\216\347\216\237/20240614 \350\277\233\347\250\213\347\256\241\347\220\206.md" "b/\346\235\216\347\216\237/20240614 \350\277\233\347\250\213\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..0ccb1b2ae05fd7624aeb43251915b667d1f49f4f --- /dev/null +++ "b/\346\235\216\347\216\237/20240614 \350\277\233\347\250\213\347\256\241\347\220\206.md" @@ -0,0 +1,32 @@ +# 进程管理常用命令 +`每个进程都有一个唯一的标识符,称为进程ID(Process ID),简称PID。PID是系统为每个进程分配的一个正整数,用于在操作系统中唯一地识别一个进程。当系统启动一个新进程时,它会分配一个目前尚未使用的PID给该进程` + + ps:能列出系统中运行的进程 包括进程号、命令、CPU使用量以及内存使用量等 + ps -a 列出进程所有运行中/激活进程 + ps -ef 列出需要进程 + ps -aux 显示进程信息 + + pstree:通过显示进程的树状图来展示进程间的关系 + 需要安装psmisc包:apt install psmisc + pstree -p 显示进程的PID + pstree -u 显示进程的所属用户 + + top:监视系统中不同的进程所使用的资源 实时提供进程状态信息 可以使用进程显示数据指定出资源使用量 + 按M以内存的使用率排序 + 按N以PID排序 + 按q退出界面 + + htop:交互式的文本模式的进程查看器 + 是一个工具需要安装:apt install htop -y + + kill:通过进程的pid来结束终止进程 + kill -9 进程id(这里的-9表示强迫进程立即停止) + + killall:通过进程名称来结束终止进程 + kill 进程名称 + + pgrep:用于基于名称和其他属性查找进程的进程PID + pgrep -l:列出进程的名称和PID + pgrep -u:匹配特定用户的进程 + + w:提供当前登录的用户及其正在执行的进程信息 \ No newline at end of file