引言:在Linux操作系统中任何一个文件都属于某一个特定的用户,而任何用户都至少属于有同一个组。而这些都有其对应的权限以及对应的等级,在一定程度上保证了系统的安全。
一:用户账号和组账号概述
Linux基于用户身份对资源访问进行控制
1.1用户帐号
超级用户:root用户拥有对系统的最高权
普通用户:普通用户账号需要由 root 用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限
程序用户:伪用户 (ftp,apache)不能登录操作系统
1.2组帐号
基本组(私有组):把每个用户放进去组队每个用户都会有自己的私有组
附加组(公共组):一个用户同时包含在其他组中,则这些组称为该用户的附加组
UID和GID
UID(User lDentity,用户标识号)
GID(Group lDentify,组标识号
二:用户账号文件
2.1用户账号文件/etc/passwd
保存用户名称,宿主目录,登录Shell等基本信息
文件位置:/etc/passwd
每一行对应一个用户的账号记录
2.2用户账号文件/etc/shadow
保存用户的密码,账号有效期等信息
文件位置:/etc/shadow
每一行对应一个用户的密码记录
第一列:账户名
第二列:存放真正加密的密码,采用SHA512散列算法,更加安全﹐加密原来用MD5或DES,! !和*表示没有密码不能登陆,新创建用户也是!!,如果密码前面显示双感叹号表示该账户被锁定了
第三列:上一次修改密码的时间,从1970年1月1日开始算的,因为1970年是linux的诞生日,date-d "1970-01-01 18983 days"可以查看哪一天改过
第四列:多久之后才可以修改密码,如果是o,则密码可以随时修改最小修改间隔时间,
也就是说该字段规定了从第三个字段(最后一次修改密码的日期)起,多长时间之内不能修改密码,如果是0则随时修改密码,如果是10则代表密码修改后10天之内不能再次修改密码,此字段是为了针对某些人频繁更改账号密码而设计的
第五列:密码有效期,默认99999 (273年),表示永久生效
第六列:密码到期前的第几天发出告警信息,默认是7天,每次登录系统都会向该账户发出"修改密码"的警告信息
第七列:密码过期的宽限天数,过期后的几天还是可以登陆的,如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用
第八列:账号失效时间,使用自1970年1月1日以来的总天数作为账户的失效时间
第九列:保留,未使用
三:用户账号管理的命令
3.1chage——用来修改帐号和密码的有效期限,针对目前系统已经存在的用户
chage[选项]用户名
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。chage -M 60 root
-W:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-I:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。(大写i)
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。(小写L)
3.2useradd——添加用户账号
-u:指定用户的UID号,要求该UID号码未被其他用户使用。
-d:指定用户的宿主目录位置(当与-M一起使用时,不生效)。
-e:指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。
-g:指定用户的基本组名(或使用GID号)。
-G:指定用户的附加组名(或使用GID号)。
-M:不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录。
-s:指定用户的登录shell。
3.3passwd——设置/更改用户口令
-d:清空指定用户的密码,仅使用用户名即可登录系统。
-l:锁定用户账户。
-S:查看用户账户的状态(是否被锁定)。
-u:解锁用户账户。
3.4usermod——修改用户账号的属性
-l:更改用户账号的登录名称(Login Name ) 。
-L:锁定用户账户。
-U:解锁用户账户
-u:修改用户的UID 号。
-d:修改用户的宿主目录位置。
-e:修改用户的账户失效时间,可使用YYYY-MM-DD的日期格式。
-g:修改用户的基本组名(或使用GID号)。
-G:修改用户的附加组名(或使用GID号)。
-s:指定用户的登录shell。
3.5userdel——删除用户账号
-r:连用户的宿主目录一并删除
当没有加上参数-r时 需要完全删除才能重新创建
四:用户账号的初始配置文件
文件来源:新建用户账号时,从/etc/skel目录中复制而来
主要的用户初始配置文件
~/.bash_profile:
~/.bash profile:示例代码中为用户添加了2个环境变量(JAVA_HONE和cLASSPATH) ,并修改了已有环境变量PATH的值.(PATH的查找是从前开始查找,找到就返回)
~/.baskrc:
例子中定义了路径,语言,命令别名(使用rm删除命令时总是加上-i参数需要用户确认,使用ls命令列出文件列表时加上颜色显示)。每次修改.bashrc后,使用source ~ / .bashrc(或者.- / .bashrc)就可以立刻加载修改后的设置,使之生效。
~/.bash_logout:
用途:用户登出时执行的命令~ / .bash_logout
五:组账号管理的命令
5.1groupadd——添加组账号
groupadd 【-g GID】组账号名
示例:
groupadd -g 1200 market
tail -1 /etc/group
5.2groupdel——删除组账号
groupdel 组账号名
示例:
groupdel market
grep “market” /etc/group
5.3gpasswd——添加删除组成员
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登录组,只有组中的成员才可以用newgrp加入组
六:查询账号相关信息的命令
6.1groups——查询用户所属的组
groups [用户名]
6.2id——查询用户身份标识
id [用户名]
6.3查询账号信息
6.3.1finger——查询用户账号的详细信息
finger [用户名]
6.3.2w,who,users命令
查询已登录到主机的用户信息
通常使用tty来简称各种类型的终端设备,Centos7系统,ttyl1表示图形界面,tty2-tty6表示文字界面,可以用ctrl+Alt+F1-F6切换。
按Ctr1+A1t+F2登陆,执行w命令,查看使用的终端就是tty2
User:登录用户名
TTY:登录后系统分配的终端号
From:远程主机名,即从哪登录的
login@:何时登录
IDLE:用户空闲时间。这是个计时器,一旦用户执行任何操作,改计时器就会被重置。
JCPU:和终端连接的所有进程占用时间。包括当前正在运行的后台作业占用时间
PCPU:当前进程所占用时间
wHAT:当前正在运行进程的命令行
pts说明是用远程工具连接的,比如1xshell,后面的数字代表登录的时间顺序,越小证明登录的越早
七:管理目录和文件的属性
7.1文件/目录的权限和归属
访问权限:
读取r:允许查看文件内容、显示目录列表
写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行x:允许运行程序、切换目录
归属(所有权):
属主:拥有该文件或目录的用户帐号
属组:拥有该文件或目录的组帐号
7.2查看文件/目录的权限和归属
[root@localhost~]#ls -l install.log
-rw - r -- r -- 1 root root 34298 04-02 00:23
install.log文件类型,权限 属主 属组
查看目录和文件的属性root用户、 root组
如"drwxr-xr-x"和"-rw-r--r--”。权限字段由四部分组成,各自的含义如下所述。
第1个字符:表示该文件的类型,可以是d(目录)、b(块设备文件)、c(字符设备文件)、“-”(普通文件)、字母"l”(链接文件)等。
第2~4个字符:表示该文件的属主用户(User)对该文件的访问权限。
第5~7个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限。
第8~10 个字符:表示其他任何用户(other)对该文件的访问权限。
第11个字符:这里的”".”与SELinux有关,目前不必关注
7.3chmod——设置文件和目录的权限
chmod [ugoa] [+-=] [rwx] 文件或目录...
[ugoa]:u=属主,g=属组,o=其他用户,a=所有用户
[+-=]:+=增加,-=去除,==设置权限
[rwx]:r=读,w=写,x=运行权限
常用选项:-R 递归修改指定目录下所有子项的权限
上述格式中,字符组合"[ugoa...][+-=] [rwx]"或数字组合"nnn"的形式表示要设置的权限模式。其中,"nnn"为需要设置的具体权限值,如"755""644”"等;而“[ugoa..] [+-=] [rwx]"的形式中,三个组成部分的含义及用法如下所述。
"ugoa"表示该权限设置所针对的用户类别。"u"代表文件属主,"g"代表文件属组内的用户,"o"代表其他任何用户,“a"代表所有用户(u、g、o 的总和)。
"+-="表示设置权限的操作动作。"+"代表增加相应权限,"-"代表减少相应权限,"="代表仅设置对应的权限。
"rwx”是权限的字符组合形式,也可以拆分使用,如"工"""rx"等。
7.4chown——设置文件和目录的归属
chown命令
chown 属主 文件或目录
chown :属组 文件或目录
chown 属主:属组 文件或目录
常用选项:-R 递归修改制定目录下所有文件,子目录的归属
7.5umask——权限掩码
umaskumask作用
控制新建的文件或者目录的权限
默认权限去除umask的权限为新建的文件或者目录的权限
umask设置: umask 022
umask查看: umask
示例:
将umask设为000,新建目录或者文件,查看权限
将umask设为022,新建目录或者文件,再查看权限
八:总结
在生产环境中我们需要知道每一个文件所对应的属组以及属主,以及应该为那个用户赋予什么权限这时我们需要充分了解并掌握用户账号管理的命令:useradd passwd usermod userdel;组账号管理的命令:groupadd gpasswd groupdel以及对应用户账号文件与组账号文件。同时我们需要查询账号相关信息的命令:groups id finger w以及设置目录与文件权限:chmod和设置目录与文件归属:chown。