1,Linux的账户和群组
(1)/etc/passwd
/etc/passwd 文件中存储了系统中用户的信息。用cat命令查看它。
这只是前几行。前面大多是系统账户,不能随便删除。第一行是系统管理员root
每一行代表一个账户。每一行中的冒号是分隔符,隔开相邻的信息。从中可见一行有7个字段。
每一行的第一个字段就是用户名,例如root。
第二个字段x本应是密码。密码保存在 /etc/shadow中。对于从应用商店获得的ubuntu,不切换为root似乎就不能看这个文件。因此这个对这个文件的观察先放一放。
第三个字段是用户的ID,也就是uid。uid=0就是root。
第四个字段是群组group的ID,也就是gid。
第五个字段是账户说明。
第六个字段是用户的主文件夹。
第七个字段还看不明白。。。。。。
(2)/etc/group
/etc/group 文件中存储了系统中群组的信息。用cat命令查看它:
(用户名太过中二就遮住了)
与passwd文件一样,也是每一行是一个群组,每一行内用冒号隔开相关信息。第一个字段是群组名,第二个是密码,与passwd文件一样,它也伴随有一个/etc/gshadow文件,第三个是群组的ID也就是gid,最后一行是群组内的用户。群组内用户名用英文逗号隔开且不用空格。
(3)有效群组与初始群组:
/etc/group 中有些群组后面没有用户,这是因为在/etc/passwd中有一些用户已经声明属于这个群组。对这些用户而言,/etc/passwd中的群组称为初始群组。
一个用户可能属于多个群组,在新建文件时,文件所属的群组由有效群组确定。
使用 groups 命令可以确定当前目录所处的群组,第一个就是有效群组,新建文件时默认它属于有效群组。
newgrp groupname 这个命令用于将有效群组切换为groupname,前提条件是当前用户真的属于这个群组。
2,在root账户下添加账户和群组
先切换到root账户,这样才能添加账户。
切换到root用户的方法为:一般应用商店来的ubuntu的root没有密码,因此可以自己通过sudo passwd命令重新设置一个。
(1)在root账户下添加和删除账户:
添加账户、修改密码、删除账户信息的命令是:
useradd user1 #完全采用默认参数创建一个新账户。
passwd user1 #添加密码,或者修改密码。
userdel user1 #删除一个账户,但留下文件夹。如果还要删除文件夹,则用 user -r user1 (删除命令慎用!)
(2)在root账户下修改账户:
usermod [修饰] user1 #修改user1的信息,这里的修饰同样也能用于useradd,也即在创建用户时就使用
usermod和useradd的常用修饰有:
usermod -g group1 user1 #将group1设置为user1的初始群组
-g将group1设置为user1的初始群组,也就是/etc/passwd文件里第4个字段对应的那个群组,但是这不会成为user1的有效群组,/etc/group这个文件也不会改动。group1应该是已经存在的用户组。
usermod -aG group1 user1 #将user1加入group1群组内,同时保留user1原来的分组情况
-G将user1加入group1群组内,/etc/group这个文件会被改动。注意如果使用这个命令之后再使用一次 usermod -G group2 user1 则意味着将先前的/etc/group中的user1全部删除再把它添进group1,它不会保留以前的更改。如果要添加的话,用 -aG。
usermod -l user233 user1 #修改user1的账户名称,将其改为user233,但是账户文件夹的名字不会变。
usermod -u 500 user1 #修改user1账户的uid,将其改为500
(3)在root账户下添加或删除群组:
groupadd group1 #新建群组group1
groupdel group1 #删除群组group1
groupmod -n group2 group1 #将群组group1重命名为group2
groupmod -g 501 group1 #将群组group1的gid修改为501
3,在普通账户下的一些账户操作
id #观察自己或其他人(id user1)的账户信息,包括uid(账户编号),gid(初始群组的编号),groups(所处群组)
groups #观察自己的所处的群组,第一个是有效群组,有效群组是新建一个文件时默认所处的群组
newgrp group1 #将当前账户的有效群组切换为group1
4,账户间的切换
(1)su命令:
su - user1 #切换为user1账户,并且同时切换环境变量等东西,用pwd命令可发现此时当前工作目录已经变成了user1
su user1 #切换为user1账户,但并未切换环境变量等东西,用pwd命令可发现此时当前工作目录并没有变成user1
su - user1 -c "命令" #切换为user1账户,执行“命令”然后退出。
上面的命令一旦被输入,就需要被切换到的账户user1的密码。user1也可以是根目录root。
(2)sudo命令:
sudo命令允许/etc/sudoers中的账户使用一次root的权限。但是首先得修改这个文件。
修改/etc/sudoers这一文件有自己专用的命令:
visudo #root用户修改/etc/sudoers文件的命令。
进入之后,找到下面这一行
root ALL=(ALL:ALL) ALL
然后把 用户名 ALL=(ALL:ALL) ALL添在这一行下面,就能初步地获取root用户全部权限的资格了。
sudo语句的使用方法为:
sudo cat /etc/shadow第一次使用sudo命令时需要输入自己的密码而不是root的,之后5分钟内不需要重新输入密码。