博客 / Linux/ linux用户、用户组及权限设置

linux用户、用户组及权限设置

linux用户、用户组及权限设置

查看当前用户

要查看当前登录用户的身份,可以使用以下命令:

whoami  # 查看当前登录用户的用户名
who am i  # 显示打开当前伪终端的用户的详细信息

who 命令的其它常用参数:

  • -a:打印所有可打印的信息。
  • -d:打印死掉的进程。
  • -m:同 am i,显示当前终端关联的用户信息。
  • -q:打印当前登录用户数及用户名。
  • -u:打印当前登录用户的登录信息。
  • -r:打印当前的运行等级。

创建新用户

在 Linux 系统中,创建新用户主要有两个命令:useraddadduser

adduser newname  # 交互式创建用户 newname

useradd 和 adduser 的区别

两者都能创建用户,但工作方式不同:

  • useradd:是一个基础命令,仅创建用户账户。创建后通常需要使用 passwd newname 命令来设置密码,用户才能登录。
  • adduser:是一个更友好的交互式脚本(常见于 Debian/Ubuntu 及其衍生系统)。它会引导你完成创建用户、创建家目录、设置密码等一系列操作。

注意:使用 useradd 创建的用户,在默认情况下账户是被锁定的,需要设置密码后才能使用。

以下是 adduser 命令的常用参数:

用法:adduser [选项] 登录名
      adduser -D
      adduser -D [选项]

选项:
  -b, --base-dir BASE_DIR   新账户主目录的基目录
  -c, --comment COMMENT     新账户的 GECOS 字段(备注信息)
  -d, --home-dir HOME_DIR   指定新账户的主目录
  -D, --defaults            显示或更改默认的 useradd 配置
  -e, --expiredate EXPIRE_DATE  设置账户的过期日期
  -f, --inactive INACTIVE   密码过期后账户被禁用的天数
  -g, --gid GROUP           指定新账户的主组名称或 ID
  -G, --groups GROUPS       指定新账户的附加组列表
  -m, --create-home         创建用户的主目录
  -s, --shell SHELL         指定新账户的登录 shell
  -u, --uid UID             指定新账户的用户 ID

删除用户

删除用户推荐使用 userdel 命令。在 CentOS/RHEL 等系统中,通常只有 userdel;而 Debian/Ubuntu 系统可能同时有 deluser 命令。

userdel [选项] 用户名

常用选项:

  • -r:删除用户的同时,一并删除其家目录和邮件池。
  • -f:强制删除,即使该用户当前已登录。

例如,要彻底删除用户 newname 及其家目录:

userdel -r newname

在 Debian/Ubuntu 上,等效的命令是:

deluser --remove-home newname

修改用户密码

passwd newname

修改用户账户属性

使用 usermod 命令可以修改用户的属性,如所属组、家目录、登录名等。

# 修改用户的主组
usermod -g siatstudent newname

# 将用户添加到多个附加组(注意:这会覆盖用户原有的附加组)
usermod -G friends,happy,funny newname

注意:使用 usermod -G 时,如果不加 -a 选项,它会用新的组列表替换用户原有的附加组。如果想追加新组而不移除原有组,请使用 -aG 选项。

# 追加用户到新的附加组,保留原有的组关系
usermod -aG happy newname

usermod 的常用选项:

  • -c:修改用户的备注信息。
  • -d:修改用户的家目录。
  • -g:修改用户的主组。
  • -G:修改用户的附加组列表。
  • -a:与 -G 一同使用,表示追加组而非替换。
  • -s:修改用户的登录 shell。
  • -L:锁定用户账户。
  • -U:解锁用户账户。

查看用户所属群组

groups newname  # 查看用户 newname 所属的所有组

用户组管理

创建组

groupadd newgroup  # 创建一个名为 newgroup 的新组

修改组

groupmod -n newname oldname  # 将组名从 oldname 改为 newname

删除组

groupdel groupname  # 删除指定的组

查看文件与用户组信息

ls -l  # 第三列为文件所有者,第四列为文件所属组
groups  # 查看当前登录用户所在的组
groups username  # 查看指定用户所在的组
cat /etc/group   # 查看系统中所有的组信息

文件权限管理

chmod 命令:修改文件访问权限

Linux/Unix 的文件权限分为三级:文件所有者(Owner)、所属组(Group)和其他用户(Others)。

用法:chmod [选项] 模式 文件...

常用选项:

  • -R:递归处理,修改目录及其下所有文件的权限。
  • -v:显示详细的执行过程。
  • -c:仅在权限发生改变时报告。

权限模式可以用字母或八进制数字表示。

字母表示法

  • 身份u(所有者),g(所属组),o(其他用户),a(所有用户)。
  • 操作+(增加权限),-(移除权限),=(设置权限)。
  • 权限r(读),w(写),x(执行)。

示例:

# 给所有者增加读和执行权限
chmod u+rx file.txt
# 给所属组增加读权限
chmod g+r file.txt
# 移除其他用户的读权限
chmod o-r file.txt
# 给所有用户增加执行权限
chmod +x file.txt
# 设置精确权限:所有者读写执行,所属组只读,其他用户无权限
chmod u=rwx,g=r,o=- file.txt
# 递归设置目录权限
chmod -R 700 /home/newname

八进制数字表示法

权限用三位八进制数字表示,分别对应所有者、所属组和其他用户。每位数字是 r(4)、w(2)、x(1) 权限值的和。

  • 7 (4+2+1):读写执行(rwx)
  • 6 (4+2):读写(rw-)
  • 5 (4+1):读执行(r-x)
  • 4:只读(r--)
  • 0:无权限(---)

示例:chmod 755 file.txt 表示所有者有 rwx 权限,所属组和其他用户有 r-x 权限。

理解文件权限输出

执行 ls -l file.txt 可能输出:-rw-r--r--

  • 第一个字符 - 表示这是一个普通文件(d 表示目录,l 表示链接)。
  • 接下来的三组 rw-r--r-- 分别表示:
    • 所有者权限:可读(r)、可写(w)、不可执行(-)。拥有写权限通常也意味着可以删除该文件。
    • 所属组权限:只读(r)。
    • 其他用户权限:只读(r)。

chown 命令:改变文件所有者和所属组

chown 命令用于更改文件或目录的所有者(Owner)和所属组(Group)。

# 改变文件的所有者
chown newowner file.txt

# 同时改变文件的所有者和所属组
chown newowner:newgroup file.txt

# 递归改变目录及其下所有文件的所有者
chown -R root /path/to/directory

常用选项:

  • -R:递归处理。
  • -v:显示详细信息。
  • -c:仅在发生改变时报告。

注意:通常只有 root 用户或有相应权限的用户才能更改文件的所有者。

发表评论

您的邮箱不会公开。必填项已用 * 标注。