Linux服务器上建⽴⽤户并分配权限
查看⽤户
1 whoami  #要查看当前登录⽤户的⽤户名
2 who am i  #表⽰打开当前伪终端的⽤户的⽤户名
3 who mom likes
who 命令其它常⽤参数
1参数说明
2 -a  打印能打印的全部
3 -d  打印死掉的进程
4 -m  同am i,mom likes
5 -q  打印当前登录⽤户数及⽤户名
6 -u  打印当前登录⽤户登录信息
7 -r  打印运⾏等级
1. 创建⽤户
adduser这个命令,我们很容易理解其作⽤,因为完全可以顾名思义:add是英语“添加”的意思,user是英语“⽤户”的意思,因此adduser就是⽤于添加⽤户。
1 adduser newname // 新建⽤户newname
useradd 只创建⽤户,创建完了⽤ passwd lilei 去设置新⽤户的密码。
adduser 会创建⽤户,创建⽬录,创建密码(提⽰你设置),做这⼀系列的操作。
其实 useradd、userdel 这类操作更像是⼀种命令,执⾏完了就返回。⽽ adduser 更像是⼀种程序,需要你输⼊、确定等⼀系列操作
删除⽤户
deluser是delete和user的缩写,delete是英语“删除”的意思,user是“⽤户”的意思。
1 userdel newname
单单⽤deluser命令,不加参数的话,只会删除⽤户,但是不会删除在/home⽬录中的⽤户家⽬录。如果你想要连此⽤户的家⽬录也⼀并删除,可以加上 –remove-home 这个参数,如下:
deluser –remove-home newname
这样,不仅删除了newname这个⽤户,连/home/newname这个⽬录也会删除。
注意:adduser和deluser命令只是Debian⼀族(包括Ubuntu)才有的命令。其他的LInux发⾏版,⼀般来说,添加⽤户和删除⽤户是⽤useradd和userdel命令。
⽽且,⽤useradd添加⽤户之后,在默认的情况下,该账号是暂时被封锁的,也就是说,该账号是⽆法登录,须要⽤passwd命令来给新创建的⽤户设置密码之后才可以使⽤。创建组
addgroup是add和group的缩写,add是英语“添加”的意思,group是英语“组”的意思。所以addgroup命令⽤于添加⼀个新的组。
1 sudo addgroup siatstudent
1 groupadd testgroup
* 修改组*
1 groupmod -n test2group testgroup
删除组
delgroup是delete和group的缩写,delete是英语“删除”的意思,group是英语“组”的意思。所以delgroup命令⽤于删除⼀个已存在的组。
1 delgroup happy
2就删除了happy这个组。
1 groupdel test2group
注意:addgroup和delgroup命令只是Debian⼀族(包括Ubuntu)才有的命令。其他的LInux发⾏版,⼀般来说,添加⽤户和删除⽤户是⽤groupadd和groupdel命令。
查看组
1 cd /home
2 ls -l
3 #第三列表⽰⽂件或⽬录的所有者,第四列表⽰⽂件或⽬录的所在组
1 groups  #查看当前登陆⽤户所在的组
2 groups testnewuser #查看testnewuser 所在的组
3 cat /etc/group  #查看所有组
passwd命令:修改密码
passwd命令是password这个英语单词的缩写,表⽰“密码”
1 passwd newname
usermod命令:修改⽤户账户
usermod是user和modify的缩写,user是英语“⽤户”的意思,modify是“修改”的意思。usermod命令⽤于修改⽤户的账户。
1 -l:对⽤户重命名,但是/home⽬录中的⽤户家⽬录名不会改变,需要⼿动修改。
2 -g:修改⽤户所在组
1  usermod -g siatstudent newname
当然我们也可以⼀次将⼀个⽤户添加到多个组,就⽤ -G 参数(⼤写的G)。⽤法如下:
1 usermod -G friends,happy,funny newname
以上命令把newname添加到friends,happy和funny三个组。记得组名之间要⽤逗号分隔,⽽且没有空格。
注意:使⽤usermod时要⼩⼼,因为配合-g或-G参数时,它会把⽤户从原先的组⾥剔除,加⼊到新的组。如果你不想离开原先的组,⼜想加⼊新的组,可以在-G参数的
基础上加上-a参数,a是英语append的缩写,表⽰“追加”。例如:
1 usermod -aG happy newname
以上命令就把newname追加到组happy⾥了,这样newname就属于两个组:siatstudent和happy
1 groups newname #查看newname所属组
2. 设置⽂件的权限
1 udo chmod 600 ××× (只有所有者有读和写的权限)
2 sudo chmod 644 ××× (所有者有读和写的权限,组⽤户只有读的权限)
3 sudo chmod 700 ××× (只有所有者有读和写以及执⾏的权限)
4 sudo chmod 666 ××× (每个⼈都有读和写的权限)
5 sudo chmod 777 ××× (每个⼈都有读和写以及执⾏的权限)
chmod命令详细⽤法
chmod命令:修改⽂件的访问权限
chmod是change和mode的缩写,change是英语“改变”的意思,mode是“模式”的意思。chmod命令⽤于修改⽂件的各种访问权限。
指令名称 : chmod
使⽤权限 : 所有使⽤者
使⽤⽅式 : chmod [-cfvR] [–help] [–version] mode file…
说明 : Linux/Unix 的档案调⽤权限分为三级 : 档案拥有者、组、其他。利⽤ chmod 可以藉以控制档案如何被他⼈所调⽤。
参数 :
mode : 权限设定字串,格式如下 : [ugoa…][[+-=][rwxX]…][,…],其中
u 表⽰该档案的拥有者,g 表⽰与该档案的拥有者属于同⼀个体(group)者,o表⽰其他以外的⼈,a 表⽰这三者皆是。
+ 表⽰增加权限、- 表⽰取消权限、= 表⽰唯⼀设定权限。
r 表⽰可读取,w 表⽰可写⼊,x 表⽰可执⾏。
1    d:是英语directory的缩写,表⽰“⽬录”。就是说这是⼀个⽬录。
2    l:是英语link的缩写,表⽰“链接”。就是说这是⼀个链接。
3    r:是英语read的缩写,表⽰“读”。就是说可以读这个⽂件。
4    w:是英语write的缩写,表⽰“写”。就是说可以写这个⽂件,也就是可以修改。
5    x:是英语execute的缩写,表⽰“执⾏,运⾏”。就是说可以运⾏这个⽂件
访问权限是按照⽤户来划分的
如上图,除开第⼀个表⽰⽂件或⽬录属性的符号(此处是d,表⽰⽬录。如果是l,则是链接。如果是短横-,那么是普通⽂件。),其他的9个符号被划分为三组,从左到右分别
1第⼀组rwx表⽰⽂件的所有者对于此⽂件的访问权限。
2第⼆组rwx表⽰⽂件所属的组的其他⽤户对于此⽂件的访问权限。
3第三组rwx表⽰除前两组之外的其他⽤户对于此⽂件的访问权限。
举例分析
1 ls -
2 -rw-r--r--
我们从左到右来分析这些符号都表⽰什么:
1    -:第⼀个短横表⽰这是⼀个普通⽂件。如果此处是d,那么表⽰⽬录;如果是l,那么表⽰链接,等等。
2    rw-:表明了⽂件的所有者(此处是newname)对⽂件有读,写的权限,但是没有运⾏的权限。也很好理解,因为这是⼀个普通⽂件,默认没有可执⾏的属性。记住:如果有w权限(写的权限),那么表明也有删除此⽂件的权限。
3    r--:表明⽂件所在的组(此处是newname)的其他⽤户(除了newname之外)只可以读此⽂件,但不能写也不能执⾏。“可远观⽽不可亵玩焉”。
4    r--:表⽰其他⽤户(除去newname这个组的⽤户)只可以读此⽂件,但不能写也不能执⾏。
综上所述, 这个⽂件是⼀个普通⽂件,不是⼀个⽬录,也不是链接⽂件,它的所有者newname可以读写它,但不能执⾏;其他的⽤户只能读。
记住:root是超级管家,它有所有权限,”只有它想不到的,没有它做不到的”。
它可以读、写、运⾏任意⽂件。
⽤数字来分配权限:chmod的绝对⽤法
事实上,Linux系统对每种权限(r,w和x)分配了对应的数字:
linux创建新用户和密码1权限数字
2 r    4
3 w    2
4 x    1
所以,如果我们要合并这些权限,就需要做简单的加法了:将对应的数字相加。
假如我们要分配读,写权限,那么我们就要⽤4+2,就等于6。数字6表⽰具有读和写权限。
以下是可能的组合形式:
1权限 数字计算
2 ---    0 0 + 0 + 0
3 r--    4
4 + 0 + 0
4 -w-    2 0 + 2 + 0
5 --x    1 0 + 0 + 1
6 rw-    6 4 + 2 + 0
7 -wx    3 0 + 2 + 1
8 r-x    5 4 + 0 + 1
9 rwx    7 4 + 2 + 1
所以,对于访问权限的三组(所有者的权限,组⽤户的权限,其他⽤户的权限),我们只要分别做加法就可以了,然后把三个和连起来。
1 chmod
例如:640分别表⽰:
1⽂件的所有者有读和写的权限。
2⽂件所在组的其他⽤户具有读的权限。
3除此之外的其他⽤户没有任何权限。
因此,我们可以给的最宽泛的权限就是 777:所有者,组⽤户,其他⽤户都有读,写和运⾏的权限。这样,所有⼈就都可以对此⽂件“为所欲为”了。相反,如果权限是000,那么没有⼈能对此⽂件做什么。当然,除了root,root可以做任何事。
⽤字母来分配权限:chmod的相对⽤法
我们需要知道不同的字母代表什么:
1 u:user的缩写,是英语“⽤户”的意思。表⽰所有者。
2 g:group的缩写,是英语“组”的意思。表⽰组⽤户。
3 o:other的缩写,是英语“其他”的意思。表⽰其他⽤户。
4 a:all的缩写,是英语“所有”的意思。表⽰所有⽤户。
当然了,和这些字母配合的还有⼏个符号:
1 +:加号,表⽰添加权限。
2 -:减号,表⽰去除权限。
3 =:等号,表⽰分配权限。
接下来,我们举例说明如何使⽤:
1 #⽂件的所有者增加读和运⾏的权限。
2 chmod u+
3
4 #⽂件的组其他⽤户增加读的权限。
5 chmod g+
6
7 #⽂件的其他⽤户移除读的权限。
8 chmod
9
10 #⽂件的组其他⽤户增加读的权限,其他⽤户移除读的权限。
11 chmod g+r
12
13 #⽂件的组其他⽤户和其他⽤户均移除读的权限。
14 chmod
15
16 #⽂件的所有⽤户增加运⾏的权限。
17 chmod +
18
19 #⽂件的所有者分配读,写和执⾏的权限;组其他⽤户分配读的权限,不能写或执⾏;其他⽤户没有任何权限。
20 chmod u=rwx,g=r,o=-
-R参数:递归地修改访问权限
chmod配合-R参数可以递归地修改⽂件访问权限。
假如我要只允许newname这个⽤户能读,写,运⾏/home/newname这个⽬录的所有⽂件(当然,root不算,root可以做任何事),该怎么做呢?
1 chmod -R 700 /home/newname
chown命令
chown是change和owner的缩写,change是英语“改变”的意思,owner是英语“所有者”的意思。
因此chown命令⽤于改变⽂件的所有者。
chown命令:改变⽂件的所有者
后接新的所有者的⽤户名,再接⽂件名。例如:
1 chown
chown命令也可以改变⽂件的组,⽤法如下:
1 chown newname:
这句命令就把这个⽂件的所有者改为newname,组改为friends了。⽤法也很简单,就是在所有者和组之间⽤冒号隔开。
-R参数:递归设置⼦⽬录和⼦⽂件
R是recursive的缩写,表⽰“递归”。所以如果chown命令配上-R参数,就会使得被修改的⽬录的所有⼦⽬录和⼦⽂件都改变所有者(或者连组也改变,如果⽤上述冒号的⽅法来同时修改所有者和组)。
想要把⽤户newname的家⽬录的所有⼦⽬录和⽂件都占为⼰有。我可以这么做:
1 chown -R bids:bids /home/newname
这样不但使/home/newname这个⽬录的所有者和组都变成bids,⽽且其⼦⽬录和⼦⽂件也都是如此。
chmod命令:修改访问权限
在Linux系统⾥,每个⽂件和⽬录都有⼀列权限属性。这⼀列访问权限指明了谁有读的权利,谁有修改的权利,谁有运⾏的权利。
chgrp命令:改变⽂件的组
chgrp是change和group的缩写,change是英语“改变”的意思,group是英语“组”的意思。
chgrp命令⽤于改变⽂件的组。
后接新的组名,再接⽂件名。例如:
1 chgrp
-----------------------
举例说明:Linux系统新挂载了⼀个硬盘,命名为publicspace。
设置⼀个公共盘publicshare,所有⽤户都可以访问该⽂件夹来分享⽂件
1 chmod 777 publicshare -R
若在该⽂件夹新建⽂件夹newname,只能让⽤户newname有权限对⽂件夹newname
1#更改⽂件的所有者和组
2 sudo chown newname:newname newname
1#更改⽂件的读写权限
2 sudo chmod go-rw newname
————————————————————————————
3. /etc/skel ⽬录
/etc/skel⽬录⼀般是存放⽤户启动⽂件的⽬录,这个⽬录是由root权限控制,当我们添加⽤户时,这个
⽬录下的⽂件⾃动复制到新添加的⽤户的家⽬录下;/etc/skel ⽬录下的⽂件都是隐藏⽂件,也就是类似.file格式的;我们可通过修改、添加、删除/etc/skel⽬录下的⽂件,来为⽤户提供⼀个统⼀、标准的、默认的⽤户环境;
/etc/skel ⽬录下的⽂件,⼀般是我们⽤useradd 和adduser 命令添加⽤户(user)时,系统⾃动复制到新添加⽤户(user)的家⽬录下;如果我们通过修改 /etc/passwd 来添加⽤户时,我们可以⾃⼰创建⽤户的家⽬录,然后把/etc/skel 下的⽂件复制到⽤户的家⽬录下,然后要⽤chown 来改变新⽤户家⽬录的属主;————————————————————————————
4. 新建⽤户的独⽴性
修改⽬录权限,使得Linux 每个账户只能查看⾃⼰的根⽬录,⽆法查看其它账户的⽬录。
⾸先要进⼊Linux系统下所有⽤户所在的⽂件夹
1 cd /home/
然后
1  chmod go-rw XXX.XXX
表⽰删除 XXX.XXX中组和其他⼈的读和写的权限。
例如
1 chmod go-rw lili
这就是说设置lili这个⽬录只有lili可以查看,Linux下的其它账户⽆法查看。