写这篇博客是一方面为了提升自己对于Linux的认知水平,二是为了为了与广大Linux爱好者分享下自己对于Linux的一些基本理解。一切皆是本人自己的见解,不喜或者哪里不对欢迎来“踩”。
首先我们来了解一个基本概念:
多用户多任务操作系统是什么:
相信只要稍微了解Linux的发展史都知道Linux是一个多用户多任务的操作系统,没错,就是“在同一时间允许多个用户同时使用计算机并且每个用户在同一时间可以运行多个程序的操作系统”
现在来思考一下:同一时间多个用户在使用同一个计算机,难道不会发生混乱吗?(相信每个人都知道不会),那么计算机是怎么做到的呢?就是通过通过权限管理的啊(在这里有必要提下,因为Linux的一个哲学思想就是“一切皆文件”),只要给每个文件赋予每个用户分配相应的权限,就可以做到维护安全与“保护隐私”。那么这么多用户由谁来扮演这个角色呢,那就是root超级用户啊,这家伙是万能的呢,因此强烈介意不要以root用户登录使用计算机啊!!!除了root用户外,Linux系统会自动创建一些系统用户,剩下的就是root(当然就是你啦)来创建的普通用户。
那么怎么知道哪些是root用户,系统用户以及普通用户呢?就是通过UID啊。
root :UID为0(在Linux中往往数字越小就越“牛”哦)
系统用户:UID为1-999(这里仅说明Centos7)
普通用户:UID为1000-65535(这个65535就相当于windowns下的guest用户)
上面提到每个用户对于每个文件都有各自的权限(可以相同可以不同)。那么权限有哪些?
其实每个文件都分三组:文件属主(u),文件属组(g)(因为多用户多任务,所以一个文件当然可以属于多个用户了),其他用户(o)。
第一组:
r:对于文件而言就是文件属主可以读取此文件里的实际内容,对于目录(其实也是文件)而言,文件属主具有读取目录结构列表的权限,但是不能ls -l,也不能cd进去。
w:对于文件文言就是文件属主可以修改文件里的内容,但是不能删除此文件,对于目录而言文件属主可以更改该目录结构列表的权限,例如创建删除重命名目录文件。
x:对于文件而言,文件属主可以将其运行成进程,对于目录而言,文件属主可以cd进入此目录,也可以ls -l查看目录里文件目录的详细信息。
第二组第三组与第一组一样都有r,w,x,意义是一样的,只是将属主换成属组合其他用户。
那么判断一个用户对于一个文件拥有的操作流程是什么样呢?
1.先此用户是否是文件的属主,如果是就拥有属主的权限,如果不是就进行第二步。
2.再判断此用户是否属于文件的属组,如果属于就拥有文件属组的权限,如果不属于就进行第三步。
3.如果都不是就拥有其他用户的权限。
下面来介绍一些相关的命令:
一。修改文件权限 ,从属关系:
想要知道修改文件的权限那肯定先要知道怎么去看一个文件的权限啊。那就是ls -l(由于是写用户与权限的,所以这里不介绍那么仔细)。
chmod命令:改变(目录)文件权限。
用法:chmod [选项] 赋权 FILENAME
它有两种方式:
1.赋权表示法:直接操作一类用户的所有权限位rwx。
u= g= o= 或者a=
2.授权表示法:直接操作一类用户的一个权限位r,w,x。
u+ u-
g+ g-
o+ o-
a+ a-
小提示:
1. 因为r对应4,w对应2,x对应1,所以上面的赋权可以用rwx字母也可以用字。
例如 chmod u=rw,g=r,o=r FILENAME,也可以chmod u=6,g=4,o=4 FILENAME.也可以直接
chmod 644 FILENAME。
2.用户只能修改属主为自己的那些文件。
选项:
-R:递归修改,就是将目录下的所有文件目录的权限都修改。
chown命令:改变(目录)文件的属主和属组(这个是可选的):
用法:chown [选项] owner[:group] FILENAME
例如cp /etc/fstab /tmp,将/etc下的fstab文件复制到/tmp下,系统中有一个用户centos,一个组slackware,将此文件属主属组改成centos,slackware
chmod centos:slackware /tmp/fstab
如果想要同时改变文件属主属组 owner与group之间用:连接就是owner:group
-R:递归修改。
chgrp命令:改变(目录)文件属组:
用法:chgrp [选项] group FILENAME
同样是上面一个例子,将/tmp/fstab的属组改成root:chgrp root /tmp/fstab
二:添加用户,组
groupadd:添加组
用法:groupadd [选项] GROUPNAME
常用选项:
-g:指定GID
-r:创建一个系统组,可以自己指定GID也可以由系统自动分配,但是自己指定的话必须在1-999之间。
groupdel:删除组
groupmod:修改组
用法:groupmod [选项] GROUPNAME
常用选项:
-g:修改GID
-n NEW_GROUPNAME:修改组名
用法:groupdel GROUPNAME
useradd:添加用户
用法:useradd [选项] USERNAME
常用选项:
-c:注释信息
-s:设定USERNAME的默认shell
-d:设定家目录路径,目录路径不能事先存在,否则会被警告,而且不会得到/etc/skel下 的文件。(默认家目录下的文件都是从/etc/skel下复制来的)
-u:设定用户UID
-g:设定用户GID
-m:强制创建家目录
-M:不创建家目录
-r:创建一个系统用户(UID可以自己指定也可以由系统自动分配,但是自己指定的话必须在1-999之间)
-G:用户所属的附加组,可以是多个,中间用逗号分开,没有空格
usermod:修改账号信息
用法:usermod [选项] USERNMAE
选项与useradd差不多
-d:修改家目录,一般与-m一起用,以保证原家目录下的文件能复制到此目录
-s:修改shell
-c:注释信息
-u:修改UID
-g:修改GID
-G:修改附加组,修改的时候会覆盖原附加组,如果想追加加上-a
-L:用来锁定密码
-U: 解锁密码
userdel:删除用户和组
一般带上-r选项:表示将家目录,邮箱都删除
passwd:修改登录密码
用法:passwd [选项]USERNAME
常用选项:
-l:锁定密码
-u:解锁密码
-e:清楚密码
-f:账号过期期限
--stdin:从标准输入修改密码 echo “密码” | passwd --stdin 账号名
注意: 只有管理员有这个权限
id:查看用户相关的ID信息
用法:id [选项] USERNME
常用选项:
-u:只显示UID( USWENAME)
-g:只显示GID(GROUPNAME)
-G:只显示附加组
-n:只显示名字非ID
gpasswd:添加组密码
用法:gpasswd [选项] GROUPNAME
常用选项:
-a USERNAME:将USERNAME添加到GROUPNAME
-d USERNAME:将USERNAME添加到GROUPNAME
newgrp:登录到一个新的的组
用法:newgrp GROUPNAME
su:切换用户
用法:su [选项] [-] USERNMAE
常用选项:
-c:以指定的USERNMAE运行命令将结果取回来
-:加了就是登录式shell,会读取/etc/propile /etc/profile.d/*.sh ~/.bash_profile ~/.bashrc /etc/bashrc文件,不加就是非登录式shell,只会读取~/.bashrc /etc/bashrc /etc/profile.d/*.sh文件
现在来说说关于账户的相关文件:
/etc/passwd:账户信息文件: 用户名:密码:UID:GID:注释信息:家目录:shell
/etc/shadow:用户密码文件: 用户名:真正的密码:最近一次修改的时间:多久能修改密码的时间:多久应该修改密码的时间:账号过期警告时间:账号冻结时间:预留
/etc/group:组信息文件
/etc/gshadow:组密码文件
终于扯完啦,第一次写,不好不对的地方多多见谅!欢迎提意见,我会慢慢改进的^_^