目录
一.管理用户账户和组账号
1、Linux基于用户身份对资源访问进行控制
1.1、用户账号
超级用户、普通用户、程序用户
1.2、组账号
基本组(私有组)
附加组(公共组)
1.3、UID和GID
UID(User IDentity,用户标识号)
GID (Group IDentify,组标识号)
1.4超级用户
root用户是Linux操作系统中默认的超级用户账号,对本主机拥有之高无上的权限
root拥有对系统的最高的管理权限 ID=0
普通用户:普通用户账号需要有root用户或其他管理员用户创建,拥有的权限受到一定限制
系统用户UID:1-999(centos7版本) 1-499(centos6版本)
注:UID:即每个用户的身份标识,类似于每个人的身份证号码
程序用户:在安装linux操作系统及部分应用系统时,会添加一些特定的低权限用户账户,这些用户一般不允许登陆到系统,而仅用于维持系统或某个程序的正常运行
UID:
管理员组:root,,0
普通组:GID
系统组:1-499 ( centos6 ) , 1-999 (CENTOS7 )
普通组:500+ (centos6) ,1000+ (CENTOS7)
表示该账户需要密码才能登录,为空时,账户无须密码即可登录
1.5、组账号
基本组:基于某种特定联系(如都需要访问FTP服务)将多个用户集合在一起,即构成一个用户组,表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组)
附加组:若该用户同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)
组的分类:
1.6、基本组与附加组
当一些用户需要做同一间事情的时候,把他们加到同一个族中便于管理
1.基本组,一般新建用户的时候会岁用户自动创建,与用户同名
2.附加组,一般一个用户可以有0个或对各附加组
注:一个用户只有一个基本组,可以有多个附加组
1.7、用户ID表示详解
root:用户名,用户名仅是为了方便用户记忆。Linux系统是通过UID来识别用户身份,分配用户权限。
x:表示此用户设有密码,但不是真正的密码,真正的密码保存在/etc/shadow文件(虽然x并不表示真正的密码,但也不能删除,如果删除了x,那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆<只能在使用无密码登陆,远程是不可以>)
0:用户账号的UID号
0:所属基本组账号的GID号
root:描述性信息,此字段知识用来解释这个用户的意义而已
/root:宿主目录,即该用户登陆后所在的默认工作目录(通常称为用户的主(家)目录)
1.8、etc/shadow (影子文件)
/etc/shadow 文件只有root用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性
和/etc/passwd文件一样,文件中每行代表一个用户,同样使用”:”作为分隔符,不同之处在于,每行用户信息被划分为9个字段
第一列:账户名
第二列:存放真正加密的密码,采用SHA512散列算法,更加安全 原来用的时MD5 或DES
!!和*表示没有密码不能登陆,新创建用户也是!!,弱国密码前面显示双感叹号表示该账户被锁定了
第三列:上一次修改密码的时间,从1970年1月1日开始算的,因为1970年时linux的诞生日,date -d “1970-01-01 18983 days”可以查看那一天改过
第四列:多久之后才可以修改密码,如果是0,则密码可以随时修改
最小修改间隔时间,也就是说该字段规定了从第三个字段(最后一次修改密码的日期)起,多长时间之内不能再修改密码,如果是0,则可以随时修改密码。如果是10,则代表密码修改后的10天内不可再次修改。此字段是为了针对某些人频繁更改账号密码而设计的
第五列:密码有效期,默认99999,表示永久生效
第六列:密码到期前的地几点发出告警消息,默认是7天,每次登陆系统都会向该账户发出“修改密码”的警告消息
第七列:密码过期的宽限天数,过期后的几天还是可以登陆的,如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用
第八列:账号失效时间,使用自1970年1月1日依赖的总天数作为账户的失效时间
第九列:保留,未使用
二、账号管理命令的使用
1、chage命令
用来修改账号和密码的有效期限,针对目前系统已经存在的用户
chage [选项] 用户名
-m:密码可更改的最小天数,为0时代表任何时候都可以更改密码
-M:密码保持有效的最大天数。 chage -M 60 root
-w:用户密码到期前,提前收到警告信息的天数
-E:账号到期的日期,过了这天,此账号将不可用
-d:上一次更改的日期
-i:停止时间。如果一个密码已过期这些天,那么此账号将不可用
-l:列出当前的设置。由非特权用户来确定他们的密码或账号何时过期
例:
chage -E 2019-04-29 test
###其中,test为用户,用户将在2019年4月29日失效(不可登录)
chage -d 2019-06-30 test
###设置test用户最后一次修改密码的日期为2019年6月30日
chage -d 0 test
###则代表该test用户需立即修改密码
date -d”+45 days" -u
###如果不知道时间可以用date查看 -u: UTC时间
2、useradd
添加用户账号
用法:useradd 用户名
-u:指定用户的UID号,要求该UID号码未被其他用户使用
-d:指定用户的宿主目录位置(与当-M一起使用时,不生效)
-e:指定用户的账户失效时间,可使用 YYYY-MM-DD的日期格式
-g:指定用户的基本组名(或使用GID号)
-G:指定用户的附加组名(或使用GID号)
-M:不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录
举例:
useadd -u 指定用户的UID号,要求未被使用
*useadd -d** 指定用户宿主目录位置
useradd -e 指定用户的失效时间
useradd -g/-G 指定用户的基本组名/附加组名(指定属组必须存在)
useradd -M 不建立属组目录
useradd zhangsan
id zhangsan
tail -1 /etc/passwd
tail -1 /etc/ shadow
3、设置/更改用户口令——passwd
/etc/passwd :保存用户名称、宿主目录、登录shell等基本信息
/etc/shadow :保存用户的账号、密码等有效信息
每一行对应一个用户的账号记录
root用户可以指定用户名作为参数,对指定账号的密码进行管理;不指定用户名时,修改当前账
的密码。
普通用户却只能执行单独的"passwd"命令修改自己的密码。
-d 清空指定用户的密码,仅使用用户名即可登录系统
-l 锁定用户账户,锁定的用户账号将无法再登录系统
-S 查看用户账户的状态(是否被锁定)
-u 解锁用户账户
3.2、用管道符设置密码:
echo “密码” | passwd --stdin 用户名
4、修改用户账号属性——usermod
usermod 选项 用户
-u 修改用户的UID号
-d 修改用户的宿主目录位置
-e 指定用户的账户失效时间,,可使用YYYY-MM-DD的日期格式
-g 指定用户的基本组名(或使用GID号)
-G 指定用户的附加组名(或使用GID号)
-s 指定用户的登录shell (/sbin/nologin 和/sbin/false未禁止用户登录系统)
以上和useradd相同
-l(小写的L) 更改用户账号的登录名称
-L 锁定用户账户
-u(passws) 解锁用户账户
修改账户基本组(-g)和附加组(-G)
wheel 比root权限小 比用户权限大
举例:usemod -g ky19 -G kaif liufeng
修改liufeng基本组为ky19 附加组为kaif/
修改shell登陆
5、用户账号的初始配置
新建用户帐号时,从 /etc/skel 目录中复制而来,基本上都是隐藏文件比如默认bin/bash,默认家目录
.bash_profile 这个文件是为系统全局变量配置文件,可以通过重启系统或者执行source /etc/profile 命令使profile文件被读取
修改/etc/profile文件中相关配置,切换bash或者用户后都需要source /etc/profile才生效
.bashrc 这个文件实际上是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本
.bash_logout 每一个允许bash shell 的用户都会执行此文件,可通过执行bash命令打开一个新的bash shell时,使bashrc文件被读取
修改/etc/bashrc文件中相关配置,切换bash或者用户后直接生效
6、删除历史记录(保护密码)
huistory -c 清除历史记录
history -r /root/history.txt 把命令度进来当做bash历史记录
history -w /root/history.txt 把当前bash的历史记录写入history.txt
echo “history -c”>> ~/.bash_logout
echo “history -c”>> ~/.bash_profile
三、管理组账号
1、 添加组账号 groupadd
groupadd -g 1200 market
tail -1 /etc/group
2、 组账号文件命令
文件名
/etc/group 保存组帐号基本信息
/etc/gshadow 保存组帐号的密码信息
3、四个字段
字段1 组帐号的名称
字段2 占位符"x"
字段3 组账号的GID号
字段4 组账号包含的用户成员(一般不包括基本组对应的用户帐号) ,多个成员之间以逗号","分隔
4、 添加、设置、删除组成员——gpasswd
示例:gpasswd 组账号名 添加某某账号
-a 向组内添加一个用户
-d 从组内删除一个用户成员
M 定义组成员列表,以逗号分隔
删除组账号—groupdel
示例:groupdel 组账号名 删除某某账号
groupdelb market ###删除组账号market
grep "market" /etc/group
查询用户账号所属组——groups
示例:groups 组账号名 查看某某组
查询当前主机的用户登陆情况——w/who/lastlog -u
查询用户账号身份标识——id
id 用户 查看用户ID
5.查询账号信息 finger
finger 命令:
查询用户账号的详细信息
finger [用户名]
6、查询账号信息w、who、users
w、who、users命令
查询已登录到主机的用户信息
通常使用tty来简称各种类型的终端设备,centos7系统 tty1表示图形界面,
tty2-tty6表示文字界面,可以用Ctrl+Alt+F1-F6 切换
按Ctrl+Alt+F2登录 , 执行w命令 ,查看使用的终端就是 tty2
user:登录用户名
TTY:登录后系统分配的终端号
From:远程主机名,即从那里登录的
login@:何时登录
IDLE:用户空闲时间,这是个计时器,一旦用户执行任何操作,改计时器就会被重置
JCPU:和终端连接的所有进程占用时间 包括当前正在运行的后台作业占用时间
PCPU:当前进程所占用时间
WHAT:当前正在运行进程的命令行
pst说明是用于远程工具连接的,比如1xshell,后面的数字代表登录的时间顺序,越小证明登录的越早
四、用户账号文件与组账号文件
1、用户账号的初始配置文件
1.1、文件来源
新建用户账号时,从/etc/skel目录中复制而来
1.2、主要的用户初始配置文件
.bash_profile: 示例代码中为用户添加了2个环境变量(JAVA_HOME和CLASSPATH)并修改了
有环境变量PATH的值.(PATH的查找是从前开始查找,找到就返回)CLASSPATH环境变量的值是
在JAVA运行时查找加载类的默认classpath
.bashrc: 例子中定义了路径,语言,命令别名(使用rm删除命令时总是加上-i参数需要用户确
认,使用rm删除命令时总是加上-i参数需要用户确认,使用ls命令列出文件列表时加上颜色显示)
每次修改.bashrc 后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的位置,使
之生效
一般会在.bashrc_profile 文件中显示调用.bashrc 登录Linux启动bash时会先去读取~/.bash_profile
文件,这样~/.bashrc也就得到执行了,你的个性化设置也就生效了
关于环境变量的读取顺序:
用户登录->>加载~/.bash_profile–>bash_profile中配置了首先使 ~/.bashrc生效
1.3、.bash_logout
用途:用户登出时执行的命令
#~/.bash_logout
#在当前用户登出时,打印出logout 和当前的时间
echo “logout,data”
例子:
如果需要每个用户登出时都清楚输入的命令历史记录,可以在 /etc/skel/.bash_logout 文件中
添加: rm -f $HOME/.bash_history 这样当用户在每次注销时.bash_history文件都会被删除
2、 组账号文件
与用户文件相类似
/etc/group 保存组账号基本信息
/etc/gshadow 保存组账号的密码信息
与组账号相关的配置文件也有两个,分是/etc/group和/etc/gshadow 前者用于保存 组账号名称、
GID号 、组成员等基本信息 后者用于保存组账号的加密密码字窜等信息(但是很少用到)某一个
组账号包含哪些用户成员,将会在group文件内最后一个字段中体现出来(基本组对应从用户账号
默认可能不会列出),多个组成员之间使用“,”(逗号)分隔
grep "^root" /etc/group ### 检索root 组包括那些用户
grep "root" /etc/group ### 检索那些组包括root用户
五、文件/目录的权限和归属
1、访问权限
读取r:允许查看文件内容、显示目录列表
写入W:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行x:允许运行程序、切换目录
2、归属
属主:拥有该文件或目录的用户帐号
属组:拥有该文件或目录的组帐号
3、设置文件和目录权限——chmod
chomd 【ugoa -【+or-or=】【rwx】文件
关于 [ugoa]:
‘u’ 代表文件属性
‘g’ 代表文件属组内的用户
‘o’ 代表其他任何用户
‘a’ 代表所有用户
关于 [±=] :
‘+’ 代表增加相应权限
‘-’ 代表减少相应权限
‘=’ 代表仅设置对应的权限
注:八进制数字 r>4 w.>2 x>1
举例:chmod 775 文件/目录 管理员和组成员有读写执行的权利 其他用户只能读执行
常用选项: -R:递归修改指定目录下所有子项的权限
读取 r :允许查看文件的内容、显示目录列表
写入 w :允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行 x :允许运行程序、切换目录。
“rwx”是权限的字符组合形式,也可以拆分使用,如“r”、“rx”等。
4、umask应用
新建一个新的文件或者目录时,它的默认权限时什么呢,这个与umask有关:
设置目录和文件的默认权限;
指定目前用户在新建文件或目录时的权限默认值;
新建的文件或者目录的权限为默认最大权限减去umask(普通文件的最大默认权限为6,目录的最大默认权限为7)
举例:umask 002 文件/目录 管理员和组成员有读写执行的权利 其他用户只能读执行(和chomd的使用差不多,区别,一个使用正常八进制的正掩码,一个是使用反掩码。
总结
1.用户账号管理(useradd、passwd、usermod、userdel)
2.组账号管理(groupadd、gpasswd、groupdel)
3.用户账号文件与组账号文件
4.查询账号相关信息的命令(groups、id、finger、w)
5.设置目录与文件权限(chmod)
6.设置目录与文件归属(chown)