Linux:用户相关指令
说明
Linux是多用户的,就像服务器是多人管理一样。
超管:root用户,具有所有权限。日常工作普通用户即可胜任,除非遇到系统管理的工作,才需要root来完成。
0、查看用户/用户组
学习自:linux查看用户和组_mb6049d9b56b2a1的技术博客_51CTO博客
1)查看当前用户
两种方式:
①whoami;
②每行命令开头:
2)查看全部用户:cat /etc/passwd 或 compgen -u
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync
以root x 0 0 root /root /bin/bash为例:
用户名 密码 用户ID 组ID 用户描述 home目录 默认shell
3)查看指定用户:
①id 用户名
②getent passwd 用户名
id root uid=0(root) gid=0(root) 组=0(root)
用户ID 组ID 所属其他组
4)查看系统中的所有组:cat /etc/group
cat /etc/group root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6:
组名 组密码 组ID 组成员
5)查看指定用户所属的所有组:
①id -Gn 用户名
②getent group 组名
③groups 用户名
1、添加用户:useradd
用法:useradd [选项] 用户名
说明:
该命令需要用到root权限
选项
选项 |
全拼 |
说明 |
-b |
--base-dir BASE_DIR |
主目录的基目录 |
-c |
--comment COMMENT |
GECOS 字段 |
-d |
--home-dir HOME_DIR |
新账户的home目录 |
-D | --default | 显示或更改默认的 useradd 配置 |
-e |
--expiredate EXPIRE_DATE |
过期日期 |
-f |
--inactive INACTIVE |
密码不活动期 |
-g |
--gid GROUP |
设置用户所在组;不写该项将会默认创建一个新组 |
-G |
--group GROUPS |
附加组列表 |
-h | --help | 帮助 |
-k |
--skel SKEL-DIR |
使用此目录作为骨架目录 |
-K |
--key KEY-VALUE |
不使用 /etc/login.defs 中的默认值 |
-l | --no-log-init | 不要将此用户添加到最近登录和登录失败数据库 |
-m | --create-home | 为用户设置 home dir,相当于在home中为该用户创建dir |
-M | --no-create-home | 不创建用户的主目录 |
-N | --no-user-group | 不创建同名的组 |
-o | --non-unique | 允许使用重复的 UID 创建用户 |
-p | --password PASSWORD | 密码 |
-r | --system | 创建一个系统账户 |
-R |
--root CHROOT_DIR |
CHROOT_DIR |
-s |
--shell SHELL |
新账户的登录 shell |
-u |
--uid UID |
指定UID |
-U | --user-group | 创建与用户同名的组 |
-Z |
--selinux-user SEUSER |
为 SELinux 用户映射使用指定 SEUSER |
例子
在创建容器时,要生成一个GID为1002的组docker,并为该组创建UID为1002的用户dcos
useradd -u 1002 -g docker dcos
说明
- 如果在用useradd创建用户时没写密码(通过选项-p设置),那么就要在root下通过指令passwd 用户,来为他指定一个密码,不然之后该用户会出现无法登陆和切换用户的问题
2、删除用户:userdel 用户名
3、以root权限来做:sudo
允许系统让普通用户执行一些需要ROOT权限才能执行命令的工具,提高安全性。
用户组:每个用户都有一个初始组(gid),可以有零个或多个附加组;附加组的作用是为了方便权限控制。即对这个组进行权限设置,就相当于同时对该组所有用户进行了权限设置。
4、用户切换:su
su 用户名:切换为用户
su -:切换为root
exit:退出su切换的用户(如果是登录用户,相当于注销重新登录)
更详细的用法:Linux:su指令 - ShineLe - 博客园
5、用户组
1)添加:groupadd
写法:groupadd [-grKo] 组名
参数:
参数 |
说明 |
-g | 指定GID |
-r | 创建系统工作组,系统工作组的GID<500 |
-K | 覆盖配置文件 /etc/login.defs |
-o | 允许添加组号不唯一的工作组 |
例子
建立一个新组并设置组ID:
groupadd -g 344 jsdigname
此时在/etc/passwd中会产生一个GID为344的条目。
改名:groupmod -n 新名 被改名的组
删除:groupdel 组名
6、用户属性修改:usermod
学习自:Linux命令(21)之usermod_小黑要上天的博客-CSDN博客
指令:usermod 选项 用户名
功能
修改/etc/passwd或/etc/shawdow文件下的用户属性,包括但不限于shell类型、用户id、用户gid、home目录、用户锁定解锁。
选项
参数 | 说明 |
-u | 修改UID |
-d | 修改用户主目录 |
-g | 修改用户主群组 |
-G | 修改用户附加群组 |
-s | 修改用户登录shell |
-L | 锁定用户 |
-U | 解锁用户 |
-m | 移动主目录的内容到新的位置 |
-c | 修改用户名全称 |
-l | 修改用户名 |
7、修改目录、文件的所属用户/组:chown
用法
-
chown [-R] 所有者 文件或目录
-
chown [-R] 所有者:组名 文件或目录
选项
- -R 递归变更,持续变更目录下的所有文件
说明
- 用户必须在/etc/passwd中存在
例子
容器创建时,需要修改/applog的所属用户:用户组为dcos:docker:
chown dcos:docker /applog
8、修改文件目录的权限-读写执行:chmod
chmod:修改权限
用法:
- chmod [-R] 数字权限 文件或目录
-
chmod [-ugoa] [+-=][rwx] 文件或目录
选项
- -R 递归变更同次目录下的所有文件
- xyz 权限代表的数字,每个角色都有一个数字,rwx=7,---=0
- u:user/owner
- g:group
- o:other
- a:all
例子
①将.bashrc的所有权限都设定为启用
chmod 777 .bashrc
②将.bashrc的user权限设置为rwx,group和other权限设置为rx,即文件权限为rwxr-xr-x
chmod u=rwx,go=rx .bashrc
③将.bashrc的权限设置为-rwxr-xr--
chmod u=rwx,g=rx,o=r .bashrc
④如果只是去除权限而不修改其它权限
chmod a-x .bashrc
9、切换用户组:newgrp
学习自:【Shell 命令集合 系统管理 】Linux 切换用户组 newgrp命令 使用指南_泡沫o0的博客-CSDN博客
功能
使用户暂时地切换到另一个用户组,以便在该用户组下执行命令或访问特定的文件。
当用户执行newgrp命令时,系统会要求用户输入目标用户组的密码。如果输入正确,用户将被切换到目标用户组,并且会话的有效组ID(egid)会被修改为目标用户组的组ID。此时用户将具有目标用户组的权限和访问权限。
指令:newgrp 目标用户组
错误情况
- 如果用户输入的目标用户组不存在,则会显示错误信息。
- 如果用户输入的目标用户组不是用户当前所属的用户组,则会提示用户输入目标用户组的密码。如果密码输入错误,则会显示错误信息。
- 如果用户没有权限切换到目标用户组,则会显示错误信息。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性