usermod
sudo usermod -aG admins jay # 将用户jay加入 admins组groups jay # 查看 jay所属的组sudo usermod -aG admins,sudo jay # 加入多个组 # 移动主目录,需要以root身份登录sudo usermod -d /home/myhome --move-home jay# 我们甚至可以不必先创建目录,该命令会自动创建# 可以注销root,再以jay目录登录测试pwd ~echo $HOME# 修改用户名usermod -l jayl jay # 锁定用户usermod -L jayl # 解锁用户usermod -U jayl # 设置过期日期usermod jayl -e 2022-4-17 # 查询下用户情况 ,用 chage命令chage -l jayl
sudo
代替root工作,有些命令只有root能做。用户可以切到 root
# 切到root运行,当然有些系统是没启动root的su -
有了sudo,可以禁用或锁定 root,因为基本用不到,尤其是 ssh,一般要禁止root登录。
有些实例比如云中的实例可能未装 sudo,所以要确认一下
which sudo
如果没有装sudo,可以查一下是否有 sudo组或 wheel组。
查看 /etc/sudoers文件
# 以root登录查看cat /etc/sudoers# 在这个文件的后面可以看到 %sudo 之类的# 前面的 % 表示组,说明该发行版加入 sudo组就具体 sudo 权限# 有些发行版不是 sudo组,而是 wheel组,在文件显示 %wheel,那就只要将用户加入wheel组即可 # 查看当前用户是否属于这个文件标示的组groups jay# 或 不加用户名groups # 如果不属于,就加进该组,比如发行版是 wheel组usermod -aG wheel jay # 可以检查下当前用户用 sudo可以做什么sudo -l# 通常会显示权限是 (ALL:ALL)ALL# 后面会解释 # 有时候执行一个命令忘了输sudo,显示没权限,我们需重新加 sudo重新执行# 只需用 两个感叹号就行sudo !! # 回到sudoers文件,能看到# %sudo ALL=(ALL:ALL)ALL我们可以新建一个组比如 sudo2 并复制这行%sudo2 ALL=(ALL:ALL)ALL就可以实现只要用户加入 sudo2也有sudo权限但这么多ALL是什么意思呢?第一个ALL 表示主机,一般保留第二个ALL 表示用户,可以使用具体的用户,99%情况下是模拟root第三个ALL 表示组第四个ALL 表示任何命令不建议直接编辑sudoers文件,万一出错很麻烦,通过命令较好,可以事先捕捉到错误# 使用visudo来编辑sudoers文件添加一行,允许用户 tux可以使用sudo,实际上系统里可以尚未存在这个tux用户tux ALL=(ALL:ALL)ALL保存文件,如果没有报错,说明语法是对的。 # 添加用户 tuxsudo adduser tux # 切换到tuxsudo su - tux # 检查sudo权限sudo -l确认确实已有sudo权限 # 我们可以让用户使用sudo执行特定的命令# 具体的命令路径可以用 which 命令查询which rm查到路径 sudo visudo修改成tux ALL=(ALL:ALL) /usr/bin/apt,/usr/bin/rm保存
我们也可以设置运行sudo 不用输密码,这样方便但会损失一些安全。
# 在命令前面添加 NOPASSWD: 即可sudo visudo修改成tux ALL=(ALL:ALL) NOPASSWD: /etc/bin/apt,/usr/bin/rm
最后,用 sudo visudo修改如果有错误的,会有提示,但没告诉选项。可以选择:
e 表示退回重新修改
x 表示退出不修改
q 表示保存修改并退出,绝对不要选这个,否则将会将错误的配置保存,会出现不可预知的错误。
htop
以前用 top,现在用htop,比top更直观好用。
安装
sudo apt install htop# 其他发行版中可以用dnfsudo dnf install htop
可以使用鼠标对各列进行排序,也可以定制相关显示。
上下箭头选择进程,比如htop进程,按F9 杀死进程,选择一个发送的选项,然后回车kill掉
shift+P 对CPU列进行排序
shift+M 对内存列进行排序
f2 可以设置上部部分显示
进程很多,查找有点困难,可以通过两种方式:
按用户查找,按 u ,通过用户筛选进程
按名字查找,按f3 ,输入名称查找。
PS 命令
仅输入 ps ,只有简单的几行,表示当前会话终端运行的进程。
PID 表示进程ID,Linux保证进程ID是唯一的
TTY 表示运行的会话终端
TIME 表示CPU时间
ps 有不同格式,一般情况下使用 unix风格 和 BSD风格。
ps -aux unix格式
ps aux bsd风格
ps –quick-pid 2925 gnu风格
ps x# 查看当前用户运行的所有进程,不限于当前会话# 能看到STAT列,有相关状态# s 小写s 表示是根进程# S 大写S 表示是睡眠状态,可能在等待输入等状态,不中断的睡眠状态# R 大写R 表示正在实际运行,未在睡眠等待# T 大写T 表示终止进程,类似按了CTRL+Z中断到后台# 下面看看ps另一种方法ps -He ## 大写H以层次结构显示进程,能方便看出父子关系# 小写e 表示显示所有,不限于当前终端 ps -axjf## 能更清楚看到层次结构# 能看到一些新列# ppid 是指父PID# pgid 父组ID# sid 表示会话ID,通常与启动链一样# tpgid 终端组ID# uid 用户ID,启动该进t程的用户 ps aux## 可能是最流行的参数# 可以看到友好的用户名称,CPU、内存利用率,启动时间等
