Linux的用户和用户组


在鸟哥私房菜的里,几乎开始就是详细介绍了Linux的用户和用户组。不过刚刚开始玩的时候,大家应该还是更喜欢777吧。。。。无奈,做人总是要进化的嘛。我这里重新整理了用户和用户组相关的一些资料,不常用的命令参数都不介绍了。

1.用户

1-1.用户类型

A. 管理员 root:具有所有权限的用户,UID的值为0。

B. 普通用户:我们正常创建的用户,UID为500~60000。

C. 系统用户:保障系统运行的用户,一般不提供密码登录系统,UID为1~499。

1-2.用户相关文件

与用户相关的文件主要有/etc/passwd和/etc/shadow。

A. /etc/passwd

存放用户的基本属性,从该文件可以查看Linux的所有用户。格式为:

【用户名:密码:用户ID:用户主组ID:用户详细信息(如姓名,年龄,电话等):用户根目录:用户编程环境】

每个用户有1个主组(私有组),1个或者多个附加组。

B. /etc/shadow

存放用户密码的一些策略,格式为:

【用户名:密码:最近更改密码的日期:密码不可更该的天数:密码需要重新更改的天数:密码更改前的警告期限:密码过期的宽限时间:帐号失效日期:保留】

1-3.用户命令

1.新增用户:useradd -d 根目录 -g 主组 -G 附加组列表(逗号隔开) 用户名

2.重置密码:passwd 用户名

3.修改用户:usermod -d 根目录 -g 主组 -G 附加组列表(逗号隔开) 用户名---------该命令的-G会把用户从原来的附加组移出来,可以使用-a参数指明是新增模式。

4.删除用户:userdel -r 连根目录一起删除 用户名

5.查看所有用户:cat /etc/passwd

6.查看单个用户详细:id 用户名

7.查看当前所有的登录用户:who

2.用户组

2-1.用户组类型

用户组是用户的容器,用户能从用户组继承权限。

A. 普通用户组:可以加入多个用户。

B. 系统用户组:一般加入一些系统用户。

C. 私有用户组:创建用户的时候,如果没有指明用户组,都会为该用户创建一个同名的用户组。私有用户组其实也是普通用户组的一种。

2-2.用户组相关文件

与用户相关的文件主要有/etc/group和/etc/gshadow。

A. /etc/group

存放组的基本信息。格式为:

【组名:组密码:组ID:用户列表】

B. /etc/gshadow

可以参考用户的/etc/shadow

2-3.用户组命令

1.新增组:groupadd -g UID号 组名---------如果不指定UID号则自动生成。

2.修改组:groupmod -n 组名 新组名----------可以用来改组名。

3.删除组:groupdel 组名-------------如果组内还有用户,则无法删除。

4.查看所有组+查看某个组内的用户:cat /etc/group。

5.查看用户的组信息:id 用户名

输出:

uid=501(weinianjie) gid=501(weinianjie) groups=501(weinianjie),0(root)

gid是主组,groups是附加组。

6.将用户添加入组里:gpasswd -a 用户名 组名

7.将用户从组里移除:gpasswd -d 用户组 组名

3.默认文件和文件夹权限

用户创建了一个文件或者文件夹,默认是什么权限呢?

这个跟环境掩码有关系,全局环境掩码是配置在/etc/profile里面。用户可以在自己根目录下创建.bashrc文件写入umask xxx来设置私有掩码。当然,也可以使用umask命令在当前终端设置掩码,不过下次登录后又会被重置了。这个跟PATH是一个道理的。

直接umask即可查看当前环境的掩码,umask xxxx可以临时更改当前环境的掩码。

说了那么多,到底该怎么理解umask呢?

我们的文件或者文件夹拥有rwxrwxrwx权限,也就是777。掩码有4位,第一位是所谓的guid,一般为0或者直接不写第1位,而使用3位的掩码。

777-掩码=新建目录的权限;

666-掩码=新建文件的权限。

比如掩码是022(或者0022),则新建目录的权限是755,也就是rwxr-xr-x;新建的文件权限是644,也就是rw-r--r--。Linux为了安全起见,不允许新建的文件带有x属性,所以新建文件的最大权限是666,这也是为什么对于文件需要使用666来减。如果相减后有-1的情况,则当成0来处理。

相关内容