目录
一、用户账号和组账号
1.1.用户账号和组账号概述
1.1.1.Linux基于用户身份对资源访问进行控制
(1)用户帐号
①超级用户 ②普通用户 ③程序用户
(2)组帐号
①基本组(私有组) ②附加组(公共组)
(3)UID和GID
①UID (User IDentity,用户标识号)
②GID (Group IDentify,组标识号)
1.2.用户的分类
分为①超级用户 ②普通用户 ③程序用户
(1)超级用户:root 用户是Linux 操作系统中默认的超级用户账号,对本主机拥有至高无上的权限,类似于Windows操作系统中的Administrator用户。只有当进行系统管理、维护任务时,才建议使用root用户登录系统,日常事务处理建议只使用普通用户账号。
root拥有对系统的最高的管理权限ID=0。
(2)普通用户:普通用户账号需要由root 用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限系统用户UID:1-999 (centos7版本) 1-499 (centos6版本)。UID:即每个用户的身份标示,类似于每个人的身份证号码。
(3)程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、 mail等伪用户一般不会用来登录系统的,它主要是用于维持某个服务的正常运行.如: ftp, apache。
1.3.组账号
①管理员组: root, 0
②普通组:GID
系统组: 1-499 (CentOS6) ,1-999 ( CENTOS7 )
普通组: 500+ (CentOS6) ,1000+ ( CENTOS7 )
表示该账户需要密码才能登录,为空时,账户无须密码即可登录
③组账号:
基本组:基于某种特定联系(如都需要访问FTP服务)将多个用户集合在一-起,即构成一个用户组,表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组)。
附加组:若该用户同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)。
1.4.用户账号文件/etc/passwd
(1)保存用户名称、宿主目录、登录Shell等基本信息
①文件位置: /etc/passwd
②每一行对应一个用户的帐号记录
(2)实例:
[root@localhost ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
1.5.用户账号文件/etc/shadow
(1)保存用户的密码、账号有效期等信息
①文件位置:/etc/shadow
②每一行对应一个用户的密码记录
(2)实例
①[root@localhost ~]# head -2 /etc/shadow
root:$1$55HB4pbx$acHqk4IZiHTZ9cw0ZJe8f0:14374:0:99999:7:::
bin:*:14374:0:99999:7.::
②[root@localhost ~]# tail -1 /etc/shadow
teacher:$1$BT7teaYX$s2sr6uFUwKhtU.8/8VpzB1:14374:0:99999:7:::
(3)含义
和/etc/passwd 文件一样, 文件中每行代表一个用户,同样使用":"作为分隔符,不同之处在于,每行用户信息被划分为9个字段。
第一个字段为:账户名
第二个字段为:存放真正加密的密码
第三个字段为:密码最后一次修改的时间 (chage -d)
第四个字段为:密码最小修改间隔时间 (chage -m)
第五个字段为:密码的有效期 (chage -M)
第六个字段为:密码需要变更前的警告天数 (chage -W)
第七个字段为:密码过期后的宽限天数 (chage -I)
第八个字段为:账号失效时间 (chage -E)
第九个字段为:保留,未使用
二、用户账号管理
2.1.添加用户账号useradd
2.1.1.useradd命令
useradd [选项]... 用户名
(2)常用选项:
-u: 指定用户的UID号,要求该UID号码未被其他用户使用。
-d: 指定用户的宿主目录位置(当与-M一起使用时,不生效)。
-e: 指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。
-g: 指定用户的基本组名(或使用GID号)。
-G: 指定用户的附加组名(或使用GID号)。
-M: 不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录。
-s: 指定用户的登录Shell。
(3)实例:
useradd zhangsan
id zhangsan
tail -1 /etc/passwd
tail -1 /etc/ shadow
2.1.2. chage 命令
chage:用来修改账号和密码的有效期限,针对目前系统已经存在的用户。
chage 【选项】 用户名
(2)常用选项:
-m:密码可更改的最小天数,为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数,chage -M 60 root
-w:用户密码到期前,提前收到警告信息的天数。
-E:账号到期的日期,过了这天,此账号将不可用。
-d:上一次更改的日期。
-I(大写的i): 过期 INACTIVE 天数后,设定密码为失效状态。
-l:显示帐户年龄信息,列出当前的设置。
2.2.设置/更改用户口令passwd
(1)passwd命令
passwd [选项]... 用户名
(2)常用选项
-d:清空指定用户的密码,仅使用用户名即可登录系统。
-l:锁定用户账户。
-S(大写):查看用户账户的状态。
-u:解锁用户账户。
(3)实例
passwd -l yy
passwd -S yy
passwd -u yy
passwd -d yy
扩充:
#调用管道符,给zhangsan用户设置密码“123”,为了方便系统管理,passwd命令提供了--stdin选项,用于批量给用户设置初始密码。
echo "123" | passwd --stdin zhangsan
2.3.修改用户账号的属性usermod
(1)usermod命令
usermod [选项]... 用户名
(2)常用选项
-l:更改用户账号的登录名称(Login Name)。
-L:锁定用户账户。
-U:解锁用户账户。
(3)以下选项与useradd命令中的含义相同
-u: 修改用户的UID号。
-d: 修改用户的宿主目录位置。
-e: 修改用户的账户失效时间,可使用YYYY-MM-DD的日期格式。
-g: 候改用户的基本组名(或使用GID号)。
-G: 修改用户的附加组名(或使用GID号)。
-s: 指定用户的登录Shell。
2.4.删除用户账号userdel
(1)userdel命令
userdel [-r] 用户名
添加-r选项时,表示连用户的宿主目录一并删除。
(2)实例
id yy
userdel -r yy
ls -ld /home/yy
三、组账号管理
3.1.添加组账号groupadd
(1)groupadd命令
groupadd [-g GID] 组账号名
(2)实例
groupadd -g 1100 yuyue (添加组账号market)
tail -1 /etc/group
3.2.添加删除组成员gpasswd
(1)gpasswd命令
设置组账号密码(极少用)、添加/删除组成员
gpasswd [选项]... 组账号名
(2)常用选项
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
(3)实例
user mike
gpasswd -a mike root ###确认mike用户已加入root组
groups mike
gpasswd -d webmaster root ###确认webmaster用户已退出root组
正在将用户“webmaster”从“root”组中删除
gpasswd -M root,daemon,webmaster,mike,adm ###一次性添加多个用户到adm组中
grep "^adm" /etc/group
adm:x:4:root,daemon,webmaster,mike
3.3.删除组账号groupdel
(1)groupdel命令
groupdel 组账号名
(2)实例
groupdel market
grep "market" /etc/group
四、用户账号文件与组账号文件
4.1.用户账号的初始配置文件
(1)文件来源
新建用户账号时,从/etc/skel目录中复制而来
(2)主要的用户初始配置文件
①~/.bash_profile
②~/.bashrc
③~/.bash_logout
(3)含义
①. bash_profile:
示例代码中为用户添加了2个环境变量(JAVA_HOME和CLASSPATH),并修改了已有环境变量PATH的值,(PATH的查找是从前开始查找,找到就返回)CLASSPATH环境变量的值是在JAVA运行时查找加载类的默认classpath。
② .bashrc:
例子中定义了路径,语言,命令别名(使用rm刑除命令时总是加上-i参数需要用户确认,使用ls命令列出文件
列表时加上颜色显示)。每次修改.bastrc后,使用source ~/.bashrc(或者. ~/.bashrc)就可以立刻加载修改后的设置,使之生效。一般会在.bash_profile文件中显式调用.bashrc。登陆linux启动bash时首先会去读取~/.bash profile文件,这样~/.bashrc也就得到执行了,你的个性化设置也就生效了。
关于环境变量的读取顺序:
用户登录->>加载~/.bash profile --> bash profile中配置了首先是使~/.bashrc生效。
③.bash_logout:用途:用户登出时执行的命令
# ~/.bash_ logout
#在当前用户登出时,打印出Logout和当前的时间echo "Logout,‘ date ‘"
例子:
如果需要每个用户登出时都清除输入的命令历史记录,可以在/etc/skel/.bash_logout文件中添加下面这行rm-rf $HOME/.bash_history。这样,当用户每次注销时,.bash_history 文件都会被删除。
history -c //清楚历史记录
history -r /root/history.txt //把命令读进来作为当前bash的历史记录
hsitory -w /root/history.txt //把当前bash的历史记录写入history.txt
echo " history -c " >> -/.bash_logout
echo " history -c " >> -/.bash_profile
4.2.组账号文件
(1)与用户账号文件相类似
/etc/group:保存组账号基本信息
/etc/gshadow:保存组账号的密码信息
grep "^root" /etc/group ###检索root组包括哪些用户
grep "root" /etc/group ###检索那些组包括root用户
(2)含义
与组账号相关的配置文件也有两个,分别是/etc/group和/etc/gshadow。
前者用于保存组账号名称、GID号、组成员等基本信息,后者用于保存组账号的加密密码字串等信息(但是很少使用到)。
某一个组账号包含哪些用户成员,将会在group文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之问使用“,”(逗号)分隔。
五、查询账号相关信息的命令
5.1.查询账号信息groups
(1)groups命令
查询用户所属的组
groups [用户名]
5.2.查询账号信息id
(1)id命令
查询用户身份标识
id [用户名]
5.3.查询账号信息finger
(1)finger命令
查询用户账号的详细信息
finger [用户名]
5.4.查询账号信息w、who、users
(1)w、who、users命令
查询已登录到主机的用户信息
(2)含义
w、who、users ###查询已登录到主机的用户信息
通常使用tty来简称各种类型的终端设备,Centos7系统,tty1表示图形界面,tty2-tty6表示文字界面,可以用Ctrl+Alt+F1-F6切换。按Ctr1+A1t+F2登陆,执行w命令,查看使用的终端就是tty2。
User: 登录用户名。
TTY:登录后系统分配的终端号。
From:远程主机名,即从哪登录的。
login@: 何时登录。
IDLE:用户空闲时间。这是个计时器,一旦用户执行任何操作,改计时器就会被重置。
JCPU:和终端连接的所有进程占用时间。包括当前正在运行的后台作业占用时间。
PCPU:当前进程所占用时间。
WHAT:当前正在运行进程的命令行。
pts说明是用远程工具连接的,比如1xshell,后面的数字代表登录的时间顺序,越小证明登录的越早。
六、设置目录与文件权限chmod
(1)chmod命令
(2)常用选项
-R:递归修改制定目录下所有子项的权限
(3)文件或目录的权限和归属
1.访问权限
①读取r:允许查看文件内容、显示目录列表
②写入W:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
③可执行x:允许运行程序、切换目录
2.归属(所有权)
①属主:拥有该文件或目录的用户帐号
②属组:拥有该文件或目录的组帐号
(4)查看目录和文件的属性
如“drwxr-xr-x"和“-rw-r--r--"。
权限字段由四部分组成,各自的含义如下所述。
第1个字符:表示该文件的类型,可以是d(目录)、b(块设备文件)、c(字符设备文件)、“_”(普通文件)、字母“l”(链接文件)等。
第2~4个字符:表示该文件的属主用户(User) 对该文件的访问权限。
第5~7个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限。
第8~10个字符:表示其他任何用户(other) 对该文件的访问权限。
第11个字符:这里的“."与SELinux有关,目前不必关注
上述格式中,字符组合“[uga..][+-=][rwx]"或数字组合"nnn”的形式表示要设置的权限模式。其中,“nnn"为需要设置的具体权限值,如“755”“644"等; 而“[uga...][+-=][rwx]"的形式中,三个组成部分的含义及用法如下所述。
"ugoa”表示该权限设置所针对的用户类别。“u”代表文件属主,“g"代表文件属组内的用户,“o”代表其他任何用户,"a"代表所有用户(u、 g、。的总和)。
“+-="表示设置权限的操作动作。“+"代表增加相应权限,“_"代表减少相应权限,“=” 代表仅设置对应的权限。
"rwx"是权限的字符组合形式,也可以拆分使用,如“r"“rx"等。
七、设置目录与文件归属chown
(1)chownn命令
chown 属主 文件或目录
chown :属主 文件或目录
chown 属主:属组 文件或目录
(2)常用选项
-R:递归修改指定目录下所有文件、子目录的归属
(3)权限掩码umask
1.umask作用
①控制新建的文件或者目录的权限
②默认权限去除umask的权限为新建的文件或者目录的权限
2.umask设置:umask 022
3.umask查看:umask
4.实例
①将umask设为000,新建目录或者文件,查看权限
②将umask设为022,新建目录或者文件,再查看权限
八、总结
(1)用户账号管理(useradd、passwd、usermod、userdel)
(2)组账号管理(groupadd、gpasswd、groupdel)
(3)用户账号文件与组账号文件
(4)查询账号相关信息的命令(groups、id、finger、w)
(5)设置目录与文件权限(chmod)
(6)设置目录与文件归属(chown)