我自己在刚开始学习时有一个困扰,就是我新建一个user和新建一个group,为什么在/etc/group文件中两个名字都会出现在组中,另外我都可以通过su username su groupname 形式切换,后来我发现其实无论你用useradd 还是groupadd 创建用户或者组,其实都可认为时创建了一个username ,如果你把其他用户放到username下面,这个时username其实也是groupname了。
因为useradd 的定义是:不加参数创建用户时创建一个与用户同名的用户组
但是如果使用命令 useradd -g root zhang5 这种直接给到root用户组的方案,则在group中不会看到有zhang5这个组,同时我发现zhangp5这个用户的权限是正常的,但是并没有立即显示在/group 中的root后面,手动命令行增加就会立即有了
后来查阅了资料和实验对比应是-g只修改了/passwd文件,并未修改/group,所以/group中未显示,同时,gpasswd命令报not a number
/etc/group 、/etc/passwd 、/etc/shadow /etc/gshadow的关系
1、与用户(user)和用户组(group)相关的配置文件;
1)与用户(user)相关的配置文件;
/etc/passwd 注:用户(user)的配置文件;
/etc/shadow 注:用户(user)影子口令文件;
2)与用户组(group)相关的配置文件;
/etc/group 注:用户组(group)配置文件;
/etc/gshadow 注:用户组(group)的影子文件;
/etc/passwd 注:用户(user)的配置文件;
其中由7段组成,每段间以:分隔,每段含义如下
用户名 用户密码 用户ID 组ID 备注 家目录 启动shell
root x 0 0 root /root /bin/bash
用户密码与上面的组密码类似,都是为了与早期版本兼容而均显示为x,实际的用户密码加密后将加密值存储在etc/shadow文件中,即接下来要介绍的一个文件
用户ID必须为非负数,同时0固定为root用户,1~499为系统保留用户,一般500以上为普通用户
备注为一行不含空格的字符串,用于简要表明该用户的信息
启动shell为从该用户登录系统后所使用的shell程序,常用的shell有sh csh ksh tcsh bash等等,默认情况下为/bin/sh,该段也可以为一个程序如python等,这样从该用户登录系统后只能运行该程序,结束后退出
/etc/shadow 注:用户(user)影子口令文件;
由8个:分割成9个字段,每个字段定义如下
用户名 加密值 最近密码修改时间 密码最短使用天数 密码最长使用天数 n天前提示密码即将过期 密码非活动天数 密码额定日期 保留字段
root $id$salt$encrypted 17051 0 99999 7
对部分字段的说明:
加密值:上表中$id$salt$encrypted并不是实际显示在文件中的值,而是由两个$符号隔开的三个字段
/etc/group 注:用户组(group)配置文件;
该行由四段组成,每一段间以:区分,每段含义如下:
组名称 组密码 组ID 组成员
root x 0
其中组密码均显示为x,在unix的早期这里是直接显示明文密码的,后来出于安全考虑使用加密算法进行加密,并将加密后的值单独使用一个文件进行保存
组成员如果显示空缺则该组只有一个用户且用户名与组名相同,如果该组有多个用户,则该字段显示所有的用户名,中间以,隔开
这句话验证了我开头说的话
useradd
useradd -n -G root,fly zhang12 建立一个属于root和fly用户组的账号,同时不要创建zhang12这个用户组
参 数:
-c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录> 指定用户登入时的启始目录。
-D 变更预设值.
-e<有效期限> 指定帐号的有效期限。
-f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。
-g<群组> 指定用户所属的群组(只能一个)。
-G<群组> 指定用户所属的附加群组(可以多个)。
-m 自动建立用户的登入目录。
-M 不要自动建立用户的登入目录。
-n 取消建立以用户名称为名的群组.
-r 建立系统帐号。
-s 指定用户登入后所使用的shell。
-u 指定用户ID
userdel
这里要注意,有时候我们删不掉,会报错,一般是因为这个用户刚登陆过,关闭sshd进程,然后重新进入系统,就删除了
userdel -r name 可以同时删除/home/name 目录
-f 删除用户登入目录以及目录中所有文件
usermod
usermod -a -G groupname username 这样是append(附件)形式到新的组中,仍然会在原来的组中
groupadd
类似于 useradd
groupdel
类似于 userdel
groupmod
类似于 usermod
groupmod -n newname oldname
gpasswd
类似于 passwd
gpasswd -d 用户名 用户组名从用户组删除用户
passwd
该命令一般只能由root用户来执行,主要注意的是在实际应用中,有些密码需要定期更换,可以使用下面的参数
-l 锁用户
-u 解锁用户
-n 天数 密码不可改天数
-x 天数 密码过期天数
-w 天数 警告天数
文件权限
其实很简单,第一是文件类型,d表示文件类型是文件夹,-就是普通文件,2-4 表示拥有者权限,5-7表示拥有者所在组的权限,8-10表示其他用户的权限,第一个root就是拥有者,第二个root表示的是拥有者所在组的信息
chmod
chmod + x / +w / +r filename
或者直接 chmod 777 / 775 filename这种数值的方法也可以
chown
修改拥有者