「Linux 系统编程」创建修改用户和用户组
0 查看当前用户
使用 whoami
可以查看当前用户。
1 创建用户和用户组
1.1 创建用户
使用 useradd
命令创建新的用户:
1 |
|
设置用户密码:
1 |
|
在下面的示例中,创建了一个名为 alice 的用户,并自动创建对应的用户目录,指定了默认登录 shell。
1.2 创建用户组
使用 groupadd
命令创建用户组:
1 |
|
2 修改文件所属用户和用户组
2.1 修改文件 / 目录所属用户
使用 chown
命令修改文件的所有者:
1 |
|
在下面的示例中,修改文件 file.txt 的所有者为 alice:
2.2 修改文件 / 目录所属用户组
使用 chgrp
命令修改文件的所属组:
1 |
|
在下面的示例中,预先创建了一个用户组 touhou,修改文件 file.txt 的所属组为 touhou:
2.3 同时修改用户和用户组
可以在 chown
命令中同时指定用户和组:
1 |
|
常用的选项参数:
-R
: 递归处理所有子文件和子目录-v
: 显示操作过程-c
: 仅显示发生变化的文件
3 删除用户和用户组
3.1 删除用户
使用 userdel
命令删除用户:
1 |
|
-r
:删除用户的同时,自动删除其主目录(/home/用户名)及邮件目录-f
:强制删除用户,即使该用户当前已登录(谨慎使用)
在删除一个用户之前,需要先看一下该用户是否有正在运行的进程。可使用 ps -u username
查看,必要时先终止进程。
使用 pkill
命令终止用户所有进程后,执行 sudo userdel alice
删除用户同时删除其主目录。
执行 userdel
命令时出现 userdel: alice mail spool (/var/mail/alice) not found
提示,这是一个警告信息(而非错误),表示系统在尝试删除用户 alice 的邮件存储文件(/var/mail/alice)时,发现该文件不存在。
3.2 删除用户组
1 |
|
- 不能删除用户的主组(用户创建时默认生成的同名组),需先删除该用户或修改用户的主组(usermod -g 新主组 用户名);
- 不能删除有用户从属的组(即该组是某些用户的附加组),需先将所有用户从该组中移除(gpasswd -d 用户名 组名);
- 不可删除系统预定义的关键组(如 root、sudo 等),否则可能导致系统故障。
4 文件权限的修改
chmod
是 Linux 系统中用于修改文件或目录权限的命令,通过它可以控制用户(所有者、所属组、其他用户)对文件的 读(r)、写(w)、执行(x) 权限。
4.1 权限的基本表示
文件权限分为三类用户:
u
:文件所有者(user)g
:所属组用户(group)o
:其他用户(others)a
:所有用户(all,相当于u+g+o
)
权限类型:
r
:读权限(4)w
:写权限(2)x
:执行权限(1,文件可执行;目录可进入)-
:无权限(0)
4.2 符号法修改权限
语法:
1 |
|
操作符:+
(添加权限)、-
(移除权限)、=
(设置权限)
一些示例如下:
1 |
|
在下面的示例中,将 file.txt 文件的文件所有者的写权限移除了:
4.3 数字法修改权限
用三位数字表示权限(每一位对应 u
、g
、o
),数字由权限值相加得到(r=4
、w=2
、x=1
)。可以将 rwx
分别看作是二进制的第 、、 的位置。
常见权限组合:
7
:rwx
(4+2+1)6
:rw-
(4+2)5
:r-x
(4+1)4
:r--
0
:---
示例:
1 |
|
在下面的示例中,将 file.txt 的权限修改为 660,相当于修改为 rw-rw----
。
常用选项:
-R
:递归修改目录及其子文件 / 子目录的权限1
2# 递归设置目录及内容的权限
chmod -R 755 testDir/-v
:显示权限修改的详细过程1
chmod -v u+x run.sh
注意:只有文件所有者或 root 用户可以修改权限