本文记录Linux系统用户、组和相关设置 。用户和用户组在/etc/group存储当前系统中的用户组信息注意:当该组内只有一个用户,并且用户名和组名相同时,在组列表中,包含用户一列可以为空2.系统【linux用户管理命令 linux的账号及权限管理】本文记录Linux系统用户、组和相关设置 。
用户和用户组
- 在 /etc/group 存储当前系统中的用户组信息
文章插图
文章插图
注意:
- 当该组内只有一个用户,并且用户名和组名相同时 , 在组列表中 , 包含用户一列可以为空
3. 组号 1~499 为系统预留的组编号,一般是预留给系统安装的软件或者服务的编号,越早安装的软件或者服务的组编号越早 。用户手动创建的用户组编号从 500 开始
4. 组密码占位符 , 无一例外,全部用 x 表示
- 在 /etc/gshadow存储当前系统中用户组的密码信息
文章插图
文章插图
注意:
1. 如果组密码处为“*” “!”或者为空时候,则该组没有密码
2. 如果组管理者为空,则表示该组内所有成员都可以管理该组
- 在 /ect/passwd 存储当前系统中所有的用户信息
文章插图
文章插图
在 linux 中,超级管理员 root 的用户编号一定为 0
- 在 /ect/shadow 存储当前系统中所有用户的密码信息
文章插图
文章插图
密码是一个单向加密过的字符串
拥有者(user),拥有组(group),其他人(other)
- 由于 Linux 是一个多人多任务的系统,因此经常会出现同一台机器同时有多个人进行操作,为了考虑每个人的隐私权以及每个人喜好的工作环境 , 所以文件的权限归属就至关重要 。
- 为了保障系统的安全性和文件的隐私性 , 一个文件针对不同权限的账户有着不同的权限
文章插图
文章插图
- 文件权限是由一个字符串所表示 , 其所代表的含义为
文章插图
文章插图
- 文档类型有如下表示方法: d 目录,例如上表档名为『.gconf』的那一行- 文档,例如上表档名为『install.log』那一行 l 连结档(link file)b 装置文件里面的可供储存的接口设备(可随机存取装置)c 装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置) 。
- 权限由 rwx 三个字幕表示,分别表示为可读、可写、可执行,如果没有该权限,则用“ – ”表示,对于目录来说,必须有 x 权限,否则无法读取目录内容
- 如果文件名前面有“ . ”,则表示这个文档或目录是隐藏的
id username
我当前的命令输出,可以查看用户 id 、组信息:
$ id vvd 用户 id=1000(vvd) 组 id=1000(vvd) 组=1000(vvd),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),132(lxd),133(sambashare),135(libvirt)
创建用户
useradd xxx//创建一个名为 xxx 的用户
该命令执行后
- 会在/etc/passwd 文件中添加 xxx 用户的信息
- 会在/etc/group 文件中添加一个名为 xxx 的用户组信息
passwd xxx//为 xxx 用户设置密码
- useradd 可以使用的参数包含:
描述
示例
-d
设置该用户的 home 目录
useradd -d /home/helloworld hello //新建 hello 用户,并且将其 home 目录设置为/home/helloworld
-u
设置其 userid
useradd -u 668 hello //新建一个 hello 用户,将他的 id 设置为 668
-g
设置其主组
useradd -g root hello //新建一个 hello 用户 , 并将其加入 root 组
-m
生成 home 目录的文件夹
useradd -m hello //新建一个 hello 用户 , 并且在默认位置申城一个 hello 文件夹(/home/hello),并且将/etc/skel 下的文件复制到该目录下
- 正常使用时建议加入 -m 参数
useradd username -m
随后需要指定 shell,不然不便于终端操作
usermod -s /bin/bash username
- 如需要额外指定 home 以外的目录作为家目录
useradd username -m -d /path/to/home
修改用户信息
- usermod 命令
usermod 参数 用户名
参数
描述
示例
-l
修改新用户名
usermod -l helloworld hello 将 hello 用户名改为 helloworld,但其 home 目录不改变
-u
修改用户的 userid
usermod -u 888 hello 将 hello 的 userid 改为 888
-d
修改用户的 home 目录
usermod -d /home/new_home hello 将 hello 用户的家目录改为/home/new_home
-g
修改用户的主用户组
usermod -g anotherg hello 将 hello 用户的组改为 anotherg
-G
将现有用户添加到辅助组(可以是多个)
usermod [-G] [[GroupName1,GroupName2]] [UserName] / usermod -a -G mygroup user1
-L
锁定用户,使其不能登录
usermod -L hello 锁定 hello
-U
解除锁定
usermod -U hello 解除锁定 hello
-a
添加 不修改之前的组
usermod -aG ssh hello 将 hello 用户加入到 ssh 组内,不改变其他组
- gpasswd 命令
gpasswd 参数 用户名 组名
gpasswd 命令用于管理 /etc/group 和 /etc/gshadow 。每个组都可以有管理员、成员和密码 。
参数
描述
示例
-M
将现有用户添加到次要组或者附加组
gpasswd -M user1 mygroup 把 user1 添加到 mygroup 中
-M
添加多个用户到次要组或附加组中
gpasswd -M user2,user3 mygroup1 把 user2 和 user3 添加到 mygroup1 中
-d
从组中删除一个用户
gpasswd -d user1 mygroup 从 mygroup 中删除 user1
删除用户
userdel 参数 用户名
参数
描述
示例
-r
删除用户的同时将其 home 目录也删掉
userdel -r hello 将 hello 用户连根删掉
创建用户组
groupadd 组名
修改用户组
groupmod -n 新组名 旧组名//修改组名 groupmod -g 新组 id旧组 id修改组 ID
查看组内成员
getent group groupname
$ getent group sudosudo:x:27:vvd
删除用户组
groupdel 组名
改变文档(目录)的所有者(所有组)
- 改变文档所有者 – chown 命令(change owner),可使用参数 -R 使得其子目录也同时修改
- 改编文档所有组 – chgrp 命令 (change group),可使用参数 -R 使得其子目录也同时修改
- 也可以使用
chown username:group 文件名
来同时修改文档或目录的拥有者和所在组
修改文档的执行权限
chmod 参数 文件名
- 可以使用如下方法直接设置文件的权限
- 可以使用如下方法直接设置文件的权限
- 直接设置代表权限的数字
chmod 777(对应权限的数字) 文件名
- 给文件添加或减去某些权限
描述
chmod u+w 文件名
给 user 用户加上 w 权限
chmod g-r 文件名
将 group 中的 r 权限去掉
chmod a+x 文件名
给 user、group、other 全部加上 x 权限
错误记录用户登录报错
- 登录时报错:
/usr/bin/xauth: file /home/user/.Xauthority does not exist
- 错误原因: 添加用户时没有授权对应的目录 , 仅仅执行了 useradd user 而没有授权对应的家目录
- 直接解决办法如下(执行如下命令,以后就登录到终端上就不会出现上面的错误信息):
chown username:username -R /home/user_dir