用户和用户组
1 Linux用户
Linux是一个多用户操作系统,不同的用户拥有不同的权限,可以查看和操作不同的文件。 Ubuntu有三种用户:
1 初次创建的用户;2 root 用户;3 普通用户;
初次创建的用户权限比普通用户多,但是没有root用户多。
linux用户记录在/etc/passwd这个文件中;linux用户密码记录在/etc/shadow这个文件中;每个用户都有一个ID,叫做UID。
// 查看用户记录
ding@ding-ubuntu:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
......
gdm:x:121:125:Gnome Display Manager:/var/lib/gdm3:/bin/false
ding:x:1000:1000:ding,,,:/home/ding:/bin/bash
2 Linux用户组
为了方便管理,将用户进行分组。这样就可以设置非本组人员不能访问某些文件。每个用户可以属于多个不同的组。
用户和用户组说明:
用户:家里有你、弟弟、妹妹个人,每个人都有自己的房间,你们三个人都是用户,你们都不能随便的乱翻别人的房间;
用户组:你们三个都是一个家庭的,也就是属于同一个用户组,你们三个可以共用厨房,书房等空间;
因此:
用户和用户组的存在就是为了控制文件的访问权限的,每个用户组都有一个ID,叫做GID,用户组信息存储在 / etc / group 文件中。如下所示:
ding@ding-ubuntu:/etc$ cat group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
sudo:x:27:ding // ding 为 sudo 这个用户组的成员
......
// ding为用户组名,x为密码信息,1000为用户组ID,最后的:后为用户组成员
ding:x:1000:
sambashare:x:126:ding
可以看到,用户可以属于多个用户组。
3 创建用户组
1 图形化界面安装
安装工具:sudo apt-get install gnome-system-tools
2 命令行创建用户和用户组
添加用户
添加用户:adduser 用户名
用户查询:finger 用户名
修改用户密码:passwd 用户名
删除用户:deluser 用户名
添加用户和查询用户测试:
// 创建用户
ding@ding-ubuntu:~$ sudo adduser ding_u2
[sudo] ding 的密码:
正在添加用户"ding_u2"...
正在添加新组"ding_u2" (1001)...
正在添加新用户"ding_u2" (1001) 到组"ding_u2"...
创建主目录"/home/ding_u2"...
正在从"/etc/skel"复制文件...
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
正在改变 ding_u2 的用户信息
请输入新值,或直接敲回车键以使用默认值
全名 []:
房间号码 []:
工作电话 []:
家庭电话 []:
其它 []:
这些信息是否正确? [Y/n] y
// 查询用户信息
ding@ding-ubuntu:~$ finger ding_u2
Login: ding_u2 Name:
Directory: /home/ding_u2 Shell: /bin/bash
Never logged in.
No mail.
No Plan.
添加用户组
添加用户组:addgroup 用户组名
显示组内用户名:groups 用户组名
删除用户组:delgroup 用户组名
添加用户组和删除用户组测试:
// 添加用户组
ding@ding-ubuntu:/home$ sudo addgroup ding_g2
正在添加组"ding_g2" (GID 1001)...
完成。
// 查看 ding 用户组内用户
ding@ding-ubuntu:/home$ groups ding // 查看 ding 这个用户组
ding : ding adm cdrom sudo dip plugdev lpadmin sambashare
// 查看刚创建的用户组的用户
ding@ding-ubuntu:/home$ sudo groups ding_g2
groups: "ding_g2": no such user // 没有用户,因为刚创建完还没添加
// 删除用户组
ding@ding-ubuntu:/home$ sudo delgroup ding_g2
正在删除组 'ding_g2'...
完成。
权限管理
1 文件权限是指不同的用户或用户组对某个文件拥有的权限,文件的权限分为三种:
r:读;w:写;x:可执行;
-rw-r--r-- 就是文件权限,第一位表示文件类型,剩下的每三位表示一组权限。分别对应拥有者权限、拥有者所在组权限、其他用户权限。
可以使用二进制表示文件权限:r = 4;w = 2;x = 1;
test.c 文件的权限说明:
ding@ding-ubuntu:~$ ls -l test.c
-rw-r--r-- 1 ding ding 121 2月 8 21:34 test.c
权限说明:
所属用户拥有读写权限无可执行权限;
组内其他用户拥有读权限 无写权限 无可执行权限;
其他用户仅有可读权限;
用户和用户组说明:
第一个 ding 表示所属用户;
第二个 ding 表示所属用户组;
再看一个系统文件的权限说明:
ding@ding-ubuntu:/dev$ ls -l vcsu
crw-rw---- 1 root tty 7, 64 2月 8 21:26 vcsu
权限说明:
所属用户为 root 用户,拥有 读写权限 无可执行权限;
所属用户组为 tty,即 tty 这个组内的所有成员都有 读写权限 无可执行权限;
其他用户为 ---,对 vcsu 文件无任何权限;
2 Linux 文件权限修改
修改文件权限命令:chmod
修改文件所属用户:chown
修改文件权限测试:
ding@ding-ubuntu:~$ ls -l test.c // 查看 test.c 文件的权限
-rw-r--r-- 1 ding ding 113 2月 8 23:43 test.c
// 所属用户为ding,用户组为ding
ding@ding-ubuntu:~$ cat test.c // 源文件
/* 测试文件 */
#include <stdio.h>
int main(int argc, char argv[])
{
printf("hello world\n");
return 0;
}
ding@ding-ubuntu:~$ gcc test.c -o test // 使用 gcc 编译 test.c
ding@ding-ubuntu:~$ ls -l test* // 查看 test可执行文件和 test.c 的权限
-rwxr-xr-x 1 ding ding 8296 2月 8 23:49 test // test文件可执行
-rw-r--r-- 1 ding ding 113 2月 8 23:43 test.c
ding@ding-ubuntu:~$ ./test // test 执行结果
hello world
// 修改权限:可读可写,不可执行
ding@ding-ubuntu:~$ chmod 664 test
ding@ding-ubuntu:~$ ls -l test*
-rw-rw-r-- 1 ding ding 8296 2月 8 23:49 test // 权限改变
-rw-r--r-- 1 ding ding 113 2月 8 23:43 test.c
ding@ding-ubuntu:~$ ./test
bash: ./test: 权限不够 // 当前 test 文件因权限不够无法执行
修改文件所属用户,命令格式如下所示:
sudo chown 修改用户:修改组 文件
修改文件用户和组的测试:
ding@ding-ubuntu:~$ ls -l test // test属于ding用户,所属组为ding
-rwxrwxr-- 1 ding ding 8296 2月 8 23:49 test
// 用户修改为ding,所属组不变
ding@ding-ubuntu:~$ sudo chown root:ding test
[sudo] ding 的密码:
ding@ding-ubuntu:~$ ls -l test
-rwxrwxr-- 1 root ding 8296 2月 8 23:49 test // 用户成功变为root
ding@ding-ubuntu:~$ sudo chown ding:root test
// 用户变为ding,所属组变为root
ding@ding-ubuntu:~$ ls -l test
-rwxrwxr-- 1 ding root 8296 2月 8 23:49 test // 权限结果