作为一个多用户、多服务的服务器操作系统,Linux提供了严格的权限管理机制,主要从用户身份、文件权限两方面对资源的访问进行限制。本文将分别介绍Linux系统中用户和组账号的管理、文件权限和归属的管理、文件和目录的权限管理、文件和目录的归属管理。
用户账号
- 超级用户(root管理员,权限最高,ID为0)
- 普通用户(以CentOS7为例,UID在1-999(保留),创建账号从1000开始)
- 程序用户(伪用户,不能登录操作系统,只能正常运行服务,比如ftp和apache)
组账号
- 基本组(私有组)
- 附加组(公有组)
UID和GID
- UID(User IDentity,用户标识号)
- GID(Group IDentify,组标识号)
超级用户:root用户是Linux操作系统中默认的超级用户账号,对本主机拥有至高无上的权限,类似于Windows操作系统中的Administrator用户。只有当进行系统管理、维护任务时,才建议使用root用户登录系统,日常事务处理建议只使用普通用户账号。 root 拥有对系统的最高的管理权限ID=0。
普通用户:普通用户账号需要由root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限
系统用户UID:1-999(centos7版本)1-499(centos6版本)
UID:即每个用户的身份标示,类似于每个人的身份证号码。
程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不介许登录到系统,而仅用于维持系统或某个程序的正常运行,如 bin、daemon、ftp、mail等
伪用户一般不会用来登录系统的,它主要是用于维持某个服务的正常运行如:ftp,apache
UID:即每个用户的身份标示,类似于每个人的身份证号码。
管理员组:root,0
普通组:GID
组账号:
简说:
用户和组的关系
用户是员工,组是职位,员工可以兼职多个岗位
总有一个最重要的身份,主要组和附加组
主要组:必须要一个,组有且唯一。
附加组:可有可无,可以有多个
默认行为当你创建一个新用户时会自动创建一个和之同名的主组
保存用户名称、宿主目录、登录Shell等基本信息
保持用户的密码、账号有效期等信息
chage命令:用来修改帐号和密码的有效期限,针对目前系统已经存在的用户
chage [选项] 用户名
例: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 “+45days” -u//如果不知道时间可以用date查看
useradd 选项 用户名
举例:
1、创建新用户,设置密码
2、给用户指定宿主目录,设置基本组为wheel,附加组为root
3、给王五设置账号过期时间,并且不能登录账户(nologin)
4、赵六不建立宿主目录,在home里面找不到(useradd -M)
5、指定UID给用户李辰(useradd -u)
passwd命令扩充
#调用管道符,给zhangsan用户设置密码"123",为了方便系统管理,passwd命令提供了
–stdin选项,用于批量给用户设置初始密码。例如: echo “123456” | passwd --stdin zhuxuan
举例:
1、批量给用户设置密码(echo “123456” | passwd --stdin zhuxuan)
2、清除密码(passwd -d)
3、查看用户状态(passwd -S)
4、锁定用户(passwd -l)
5、解锁用户(passwd -u)
常用命令参数:
以下选项与useradd命令中含义相同
userdel [-r] 用户名
示例代码中为用户添加了2个环境变量(JAVAHOME和CLASSPATH),并修改了已有环境变量PATH的值.(PATH的查找是从前开始查找,找到就返回)
CLASSPATH环境变量的值是在JAVA运行时查找加载类的默认classpath.
例子中定义了路径,语言,命令别名(使用rm删除命令时总是加上-i参数需要用户确认,使用ls命令列出文件列表时加上颜色显示)。
每次修改.bashrc后,使用source/.bashrc(或者。/.bashrc)就可以立刻加载修改后的设置,使之生效。
一般会在bashprofile文件中显式调用bashrc。登陆linux启动bash时首先会去读取~/.bash profi le文件,这样~/bashrc也就得到执行了,你的个性化设置也就生效了。
关于环境变量的读取顺序:
用户登录->>加载~/bash profile --> bash profile中配置了首先是使~/.bashrc生效
用途:用户登出时执行的命令
#~ /.bash_logout
#在当前用户登出时,打印出Logout 和当前时间
echo “Logout, ‘date’”
例子:
如果需要每个用户登出时都清除输入的命令历史记录,可以在/etc/skel/.bash_logout文件中添加下面这行rm -f $HOME/.bash_history 。这样,当用户每次注销时,
.bash_history文件都会被删除.
echo “history -c” >> ~/.bash_logout
echo “history -c” >> ~/.bash_profile
与用户账号文件相类似
groupadd命令
gpasswd命令
常用选项
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
示例:
1、添加用户到组(gpasswd -a)
2、从组中删除用户(gpasswd -d)
3、批量添加组成员,-M添加用户时会把原有的用户全部删除(gpasswd -M)
groupdel命令
常用选项:
实例:
1、显示3天前的登录信息(lastlog -b)
2、显示5天以来的登录信息(lastlog -t)
3、显示用户最近的登录信息(lastlog -u)
4、显示帮助信息(lastlog -h)
访问权限
归属(所有权)
(1)文件中的rwx
r:可读
w:可写[可写不代表可以删除,删除一个文件的前提是对文件所在的目录有写的权限]
x:可执行
(2)文件夹中的rwx
r:可读(可用ls查看目录内容)
w:可写[可在目录内创建+删除+重命名文件或目录]
x:可执行[可以进入目录]
(3)查看文件时候前缀
-rw-r--r--. 1 root root 1808 3月 22 08:39 initial-setup-ks.cfg
- 表示类型为文件
第一组rwx: 表示所有者 可读 可写 可执行
第二组rw-: 表示同组用户 可读 可写 但不能执行
第三组r--: 表示其他用户 只可读
可用数字表示:
r = 4
w = 2
x = 1
因此rwx = 4+2+1 = 7
chmod 权限变更格式 文件或目录路径
chomod [ugoa] [+ - =] [rwx] 文件或目录
u:所有者(属主) g:所有组(属组) o:其他人 a:所有人
+:增加 -:去除 =:设置权限
r:读 w:写 x:运行权限
1. u=rwx,g=rx,o=x
2. o+w 其它用户增加w权限
3. a-x 所有人减去执行权限
chomd nnn 文件或目录
nnn:表示3位8进制数
r = 4 w = 2 x = 1 rwx = 7 rx = 5
chmod u=rwx,g=rx,o=x 可以写成 chmod 751
chown命令
常用选项
umask作用
umask设置:umask 022
umask查看:umask
示例:
1、将umask设为022,查看权限(实际权限755)
2、将umask设为000,查看权限(实际权限777)