使用者帐号
Linux 系统上面的使用者如果需要登陆主机以取得 shell 的环境来工作时,他需要如何进行呢? 你输入帐号密码后,系统帮你处理了什么呢?
- 先找寻 /etc/passwd 里面是否有你输入的帐号?如果没有则跳出,如果有的话则将该帐号对应的 UID 与 GID (在 /etc/group 中) 读出来,另外,该帐号的主文件夹与 shell 设置也一并读出;
- 再来则是核对密码表啦!这时 Linux 会进入/etc/shadow 里面找出对应的帐号与 UID,然后核对一下你刚刚输入的密码与里头的密码是否相符?
- 如果一切都 OK 的话,就进入 Shell 控管的阶段啰
由上面的流程我们也知道,跟使用者帐号有关的有两个非常重要的文件,一个是管理使用者UID/GID 重要参数的/etc/passwd ,一个则是专门管理密码相关数据的 /etc/shadow 啰!详细的说明可以参考 man 5 passwd 及 man 5 shadow.
/etc/passwd 文件结构
这个文件的构造是这样的:每一行都代表一个帐号,有几行就代表有几个帐号在你的系统中! 不过需要特别留意的是,里头很多帐号本来就是系统正常运行所必须要的,我们可以简称他为系统帐号, 例如 bin, daemon, adm, nobody 等等,这些帐号请不要随意的杀掉他呢!
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
.......
user1:x:1002:1002::/home/user1:/bin/bash
zhan:x:1003:1003::/home/zhan:/bin/bash
我们先来看一下每个 Linux 系统都会有的第一行,就是 root 这个系统管理员那一行好了, 你可以明显的看出来,每一行使用“:”分隔开,共有七个咚咚
- 帐号名称: 就是帐号啦!用来提供给对数字不太敏感的人类使用来登陆系统的!需要用来对应 UID 喔。例如 root 的 UID 对应就是 0 (第三字段);
- 密码: 早期 Unix 系统的密码就是放在这字段上!但是因为这个文件的特性是所有的程序都能够读取,这样一来很容易造成密码数据被窃取, 因此后来就将这个字段的密码数据给他改放到 /etc/shadow 中了。所以这里你会看到一个“ x ”
- UID: 这个就是使用者识别码啰!通常 Linux 对于 UID 有几个限制需要说给您了解一下:
| id 范围 | 该 ID 使用者特性 |
| 0(系统管理员) | 当 UID 是 0 时,代表这个帐号是“系统管理员”! 所以当你要让其他的帐号名称也具有 root 的权限时| 1~999(系统帐号) | 保留给系统使用的 ID,其实除了 0 之外,其他的 UID 权限与特性并没有不一样。
默认 1000 以下的| 1000~60000(可登陆帐号) | 给一般使用者用的。 - GID: 这个与 /etc/group 有关!其实 /etc/group 的观念与 /etc/passwd 差不多,只是他是用来规范群组名称与 GID 的对应而已!
- 使用者信息说明栏: 这个字段基本上并没有什么重要用途,只是用来解释这个帐号的意义而已!
- 主文件夹: 这是使用者的主文件夹, root 的主文件夹在 /root ,所以当root 登陆之后,就会立刻跑到 /root 目录里头啦!呵呵! 如果你有个帐号的使用空间特别的大,你想要将该帐号的主文件夹移动到其他的硬盘去该怎么作? 没有错!可以在这个字段进行修改呦**!默认的使用者主文件夹在/home/yourIDname**
- Shell: 当使用者登陆系统后就会取得一个 Shell 来与
系统的核心沟通以进行使用者的操作任务。那为何默认shell 会使用 bash 呢?就是在这个字段指定的啰! 这里比较需要注意的是**,有一个 shell 可以用来替代成让帐号无法取得
shell 环境的登陆动作!那就是 /sbin/nologin** 这个东西!这也可以用来制作纯 pop 邮件帐号者的数据呢!
默认shell的指定有哪些可以查看系统中/etc/shells文件
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
[root@localhost ~]#
/etc/shadow 文件结构
字段与字段之间使用$分割 $6表示的是第六个加密算法 sha512
dd:$6$WuEigR.ygMHAijsD$LSyABpTnfBsE6QMNPvaN8iXb0evLZxLZbPzyYyoNQ9c2LYPyRHgtR1GxFHHUC6EwesxTLWLd0cCmQOMhZxHCG0::0:99999:7:::
第二个$与第3个之间的是salt
3-4 是加密后的密码川
4-5
5-6 xx天内不能改
6-7 xx天前必须改
7-8
最后警告
用户认证信息
我们知道很多程序的运行都与权限有关,而权限与UID/GID 有关!因此各程序当然需要读取/etc/passwd 来了解不同帐号的权限。 因此 /etc/passwd 的权限需设置为 -rw-r–r-- 这样的情况, 虽然早期的密码也有加密过,但却放置到 /etc/passwd 的第二个字段上!这样一来很容易被有心人士所窃取的, 加密过的密码也能够通过暴力破解法去 trial and error (试误) 找出来!
因为这样的关系,所以后来发展出将密码移动到 /etc/shadow 这个文件分隔开来的技术, 而且还加入很多的密码限制参数在 /etc/shadow 里头呢!/etc/shadow 文件有点像这样:
[root@localhost ~]# cat /etc/shadow
root:$6$PFwvgEDl$q/7OKjywR4XEOT8VN.2s/OrfdvhmauyLkJHY1GYvkguClUilvwFrKdMniBlJzl8bxViudknWPptv/81Nz3NfM/:16442:0:99999:7:::
bin:*:16141:0:99999:7:::
daemon:*:16141:0:99999:7:::
adm:*:16141:0:99999:7:::
zhan:$6$h.VjWIh5$eVxa0tAcjrbtnF/et2GQn1dcvelurNX0/UBRlFRmuxq87aZPcuZmbl8zSsk9XC8YgQF23PaO1FdSGC.dCTILg.:18260:0:99999:7:::
/etc/shadows ##记录用户认证信息
westos:!!:17895:0:99999: 7: : :
[1] [2] [3] [4] [5] [6][7][8] [9]
此文件一共有九列:
【1】westos
用户名称, 由于密码也需要与帐号对应啊~
因此,这个文件的第一栏就是帐号,必须要与 /etc/passwd 相同才行!
【2】!!
用户密码:
用户的加密字符串,默认用的加密方式为sha512对称加密,
如果加密字符前出现““!””那么用户被冻结
【3】
17895
用户密码最后一次被更改的时间:
此时间计算是从1970-1-1开始计算的累积天数
[root@study ~]# echo $(($(date --date="2015/05/04" +%s)/86400+1))
16559
上述指令中,2015/05/04 为你想要计算的日期,86400 为每一天的秒数, %s 为1970/01/01 以来的累积总秒数。 由于 bash 仅支持整数,因此最终需要加上 1 补齐1970/01/01 当天。
【4】
0
用户密码最短有效期:
如此位有设定数字,那么在此数字范围内的天数内是不能修改用户密码的
【5】
99999
用户密码最长有效期:
用户必须在此有效期内更新密码,如果超时会被冻结
【6】
7
密码警告期限:
在过期前制定天数内会发送警告信息给用户
【7】
用户非活跃天数:
此位默认为空,如果设定数值,那么在密码最长有效期过后仍然可以使用的天数
【8】
用户到期日:
默认为空,表示账号一定会被冻结的时间点
【9】
用户自定义列,目前没有启用
一般用户的密码忘记了:这个最容易解决,请系统管理员帮忙, 他会重新设置好你的密码而不需要知道你的旧密码!利用 root 的身份使用 passwd 指令来处理即可。
root 密码忘记了:这就麻烦了!因为你无法使用 root 的身份登陆了嘛! 但我们知道 root的密码在 /etc/shadow 当中,因此你可以使用各种可行的方法开机进入 Linux 再去修改。
例如重新开机进入单人维护模式后,系统会主动的给予 root 权限的 bash接口, 此时再以 passwd 修改密码即可;或以 Live CD 开机后挂载根目录去修改/etc/shadow,将里面的 root 的密码字段清空, 再重新开机后 root 将不用密码即可登陆!登陆后再赶快以 passwd 指令去设置 root 密码即可。
passwd -S westos ##查看westos用户密码信息
用户名称
用户密码passwd
--stdin 重定向标准输入 所以可以使用管道
给组设置密码 一般情况下组是没有密码
想要某个用户临时的切换到某个组中有用
给这个组添加密码
用户创建文件的属主是自己 ,属组是自己的基本组
临时切换新组newgrp ------基本组更改了
这个是用户在这两个组里面
想想用户不在这个组里面
加密码就是为了避免别人随意切换到自己的组来
密码输入正确就可以加入这个组了
[root@study ~]# passwd [--stdin] [帐号名称] <==所有人均可使用来改自己的密码
[root@study ~]# passwd [-l] [-u] [--stdin] [-S] \
> [-n 日数] [-x 日数] [-w 日数] [-i 日期] 帐号 <==root 功能
选项与参数:
--stdin :可以通过来自前一个管线的数据,作为密码输入,对 shell script 有帮助!
-l :是 Lock 的意思,会将 /etc/shadow 第二栏最前面加上 ! 使密码失效;
-u :与 -l 相对,是 Unlock 的意思!
-S :列出密码相关参数,亦即 shadow 文件内的大部分信息。
-n :后面接天数,shadow 的第 4 字段,多久不可修改密码天数
-x :后面接天数,shadow 的第 5 字段,多久内必须要更动密码
-w :后面接天数,shadow 的第 6 字段,密码过期前的警告天数
-i :后面接“日期”,shadow 的第 7 字段,密码失效日期
passwd -d 用户名 清空用户的密码
新的 distributions 是使用较严格的 PAM 模块来管理密码,这个管理的机制写在 /etc/pam.d/passwd 当中。而该文件与密码有关的测试模块就是使用:pam_cracklib.so,这个模块会检验密码相关的信息, 并且取代 /etc/login.defs 内的 PASS_MIN_LEN 的设置啦!
passwd westos ##更改westos密码
passwd -l westos ##在用户密码前加入”! !”
passwd 还加入了很多创意选项喔!“ --stdin ”! 举例来说,你想要帮 zhan 变更密码成为 abc543CC
使用 standard input 创建用户的密码
[root@study ~]# echo "abc543CC" | passwd --stdin zhan
Changing password for user zhan.
passwd: all authentication tokens updated successfully.
这个动作会直接更新使用者的密码而不用再次的手动输入!好处是方便处理,缺点是这个密码会保留在指令中, 未来若系统被攻破,人家可以在 /root/.bash_history 找到这个密码呢!所以这个动作通常仅用在 shell script 的大量创建使用者帐号当中!
密码在/etc/shadow这个文件当中 只有超级用户可以操作
!!表示被封锁 该账户不能登陆passwd -u westos ##取消感叹号
usermod -L westos ##在用户密码前加入“!”
usermod -U westos ##在密码不为空时使用,/etc/shadow 密码栏的 ! 拿掉,解冻啦!|
passwd -d westos #清空westos密码
注意:
普通用户改密码是
1.必须知道当前用户原始密码
2.密码不能和账号名称相似
3.密码不能是有序的数字或有序纯字母
4.密码如果是纯数字或字母要>8除了使用 passwd -S 之外,有没有更详细的密码参数显示功能呢?有的!那就是 chage 了!
[root@study ~]# chage [-ldEImMW] 帐号名
选项与参数:
-l :列出该帐号的详细密码参数;
-d :后面接日期,修改 shadow 第三字段(最近一次更改密码的日期),格式 YYYY-MM-DD
-E :后面接日期,修改 shadow 第八字段(帐号失效日),格式 YYYY-MM-DD
-I :后面接天数,修改 shadow 第七字段(密码失效日期)
-m :后面接天数,修改 shadow 第四字段(密码最短保留天数)
-M :后面接天数,修改 shadow 第五字段(密码多久需要进行变更)
-W :后面接天数,修改 shadow 第六字段(密码过期前警告日期)
#用户密码最后一次被更改的时间#
passwd -e westos ##会改变用户最后一次更改密码时间为0
##用户在登陆时会被强制更改密码!!
chage -d 0 westos ##两个命令功能类似,多用于创建了一个 新的用户,要求再第一次登陆系统时必须更换默认密码,例如学校在初次上课时就使用与学号相同的帐号/密码给学生, 让她们登陆时自行设置她们的密码,如此一来就能够避免其他同学随意使用别人的帐号,也能够保证学生知道如何更改自己的密码!
#用户密码最短有效期#
passwd -n 1 westos #westos用户在1天之内不能修改密码
chage -m 1 westos
#用户密码最长有效期#
passwd -x 30 westos #设定westos在30天内必须修改密码
chage -M 40 westos
#密码警告期限
passwd -w 2 westos #密码过期前两天有警告输出
chage -W 2 westos
#用户非活跃天数
passwd -i 1 westos #密码过期后仍可登陆系统的天数
chage -I 1 westos
用户到期日:
chage -E 2019-6-6 用户名
###用户在这一天会被冻结 注意:此时间是从1970-1-1开始计算的累计天数|
/etc/group 文件结构
这个文件就是在记录 GID 与群组名称的对应了
包括的内容:组的名字:组的密码:组的id:组的成员
[root@localhost ~]# head /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
这个文件每一行代表一个群组
- 群组名称: 就是群组名称啦!基本上需要与第三字段的 GID 对应。
- 群组密码: 通常不需要设置,这个设置通常是给“群组管理员”使用的,目前很少有这个机会设置群组管理员啦! 同样的,密码已经移动到 /etc/gshadow 去,因此这个字段只会存在一个“x”而已;
- GID: 就是群组的 ID 啊。我们 /etc/passwd 第四个字段使用的 GID 对应的群组名,就是由这里对应出来的!
- 此群组支持的帐号名称: 我们知道一个帐号可以加入多个群组,那某个帐号想要加入此群组时,将该帐号填入这个字段即可。 举例来说,如果我想要让 kiosk 与 alex 也加入root 这个群组,那么在第一行的最后面加上“kiosk,alex”,注意不要有空格, 使成为“root❌0:dmtsai,alex ”就可以啰~
UID / GID 与密码之间的关系
root 的 UID 是 0 ,而 GID 也是 0 ,去找
/etc/group 可以知道 GID 为 0 时的群组名称就是 root 哩。 至于密码的寻找中,会找到/etc/shadow 与/etc/passwd 内同帐号名称的那一行,就是密码相关数据啰。
三.用户授权
先回忆su 的用法:
-c不是真正切换过去
- 若要完整的切换到新使用者的环境,必须要使用“ su - username ”或“ su -l username ”,才会连同 PATH/USER/MAIL 等变量都转成新使用者的环境;
- 如果仅想要执行一次 root 的指令,可以利用“ su - -c “指令串” ”的方式来处理;
- 使用 root 切换成为任何使用者时,并不需要输入新使用者的密码;
虽然使用 su 很方便啦,不过缺点是,当我的主机是多人共管的环境时,如果大家都要使用 su 来切换成为 root 的身份,那么不就每个人都得要知道 root 的密码,这样密码太多人知道可能会流出去, 很不妥当呢!怎办?通过 sudo 来处理即可!
科普:
更改别的用户的
权限管理
执行cat命令 回车就会运行一个进程
whomi查看运行这个进程的是谁
根据执行进程的人判断其属于这个文件的所属主还是所属组
文件默认应该没有x,目录默认应该有
sudo
相对于 su 需要了解新切换的使用者密码 (常常是需要 root 的密码), sudo 的执行则仅需要自己的密码即可! 甚至可以设置不需要密码即可执行 sudo 呢!由于 sudo 可以让你以其他用户的身份执行指令 (通常是使用 root 的身份来执行指令),因此并非所有人都能够执行sudo , 而是仅有规范到 /etc/sudoers 内的用户才能够执行 sudo 这个指令喔!
sudo 的执行是这样的流程:
- 当使用者执行 sudo 时,系统于 /etc/sudoers 文件中搜寻该使用者是否有执行 sudo 的权限;
- 若使用者具有可执行 sudo 的权限后,便让使用者“输入使用者自己的密码”来确认;
- 若密码输入成功,便开始进行 sudo 后续接的指令(但 root 执行 sudo 时,不需要输入密码);
- 若欲切换的身份与执行者身份相同,那也不需要输入密码。
visudo
为什么要使用 visudo 呢?这是因为 /etc/sudoers 是有设置语法的,如果设置错误那会造成无法使用 sudo 指令的不良后果。因此才会使用 visudo 去修改, 并在结束离开修改画面时,系统会去检验 /etc/sudoers 的语法就是了。
使用者帐号 登陆者的来源主机名称=(可切换的身份) 可下达的指令
root ALL=(ALL) ALL <==这是默认值
上面这一行的四个元件意义是:
- “使用者帐号”:系统的哪个帐号可以使用 sudo 这个指令的意思;
- “登陆者的来源主机名称”:当这个帐号由哪部主机连线到本 Linux 主机,意思是这个帐号可能是由哪一部网络主机连线过来的, 这个设置值可以指定用户端计算机(信任的来源的意思)。默认值 root 可来自任何一部网络主机
- “(可切换的身份)”:这个帐号可以切换成什么身份来下达后续的指令,默认 root 可以
切换成任何人; - “可下达的指令”:可用该身份下达什么指令?这个指令请务必使用绝对路径撰写。 默认root 可以切换任何身份且进行任何指令之意。
I. 单一使用者可进行 root 所有指令,与 sudoers 文件语法:
假如我们要让 zhan这个帐号可以使用 root 的任何指令
[root@localhost ~]# visudo
....(前面省略)....
root ALL=(ALL) ALL <==找到这一行,大约在 98 行左右
zhan ALL=(ALL) ALL <==这一行是你要新增的!
测试:
[zhan@localhost ~]$ sudo tail -n 1 /etc/shadow <==通过 sudo
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others. <==这里仅是一些说明与警示项目
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for vbird1: <==注意啊!这里输入的是“ zhan自己的密码 ”
pro3:$6$DMilzaKr$OeHeTDQPHzDOz/u5Cyhq1Q1dy...:16636:0:99999:7:::
# 看!zhan 竟然可以查询 shadow !
II. 利用 wheel 群组以及免密码的功能处理 visudo
[root@localhost ~]# visudo <==同样的,请使用 root 先设置
....(前面省略)....
%wheel ALL=(ALL) ALL <==大约在 106 行左右,请将这行的 # 拿掉!
# 在最左边加上 % ,代表后面接的是一个“群组”之意!改完请储存后离开
[root@localhost ~]# usermod -a -G wheel pro1 #将 pro1 加入 wheel 的支持
上面的设置值会造成“任何加入 wheel 这个群组的使用者,就能够使用 sudo 切换任何身份来
操作任何指令”的意思。 你当然可以将 wheel 换成你自己想要的群组名。接下来,请分别切换
身份成为 pro1 及 pro2 试看看 sudo 的运行。
测试:
[pro1@study ~]$ sudo tail -n 1 /etc/shadow #注意身份是 pro1
....(前面省略)....
[sudo] password for pro1: <==输入 pro1 的密码喔!
pro3:$6$DMilzaKr$OeHeTDQPHzDOz/u5Cyhq1Q1dy...:16636:0:99999:7:::
[pro2@study ~]$ sudo tail -n 1 /etc/shadow #注意身份是pro2
[sudo] password for pro2: <==输入 pro2 的密码喔!
pro2 is not in the sudoers file. This incident will be reported.
# 仔细看错误讯息他是说这个 pro2 不在 /etc/sudoers 的设置中!
简单吧!不过,既然我们都信任这些 sudo 的用户了,能否提供“不需要密码即可使用 sudo”呢? 就通过如下的方式:
[root@localhost ~]# visudo #同样的,请使用 root 先设置
....(前面省略)....
%wheel ALL=(ALL) NOPASSWD: ALL #大约在 109 行左右,请将 # 拿掉!
# 在最左边加上 % ,代表后面接的是一个“群组”之意!改完请储存后离开
III. 有限制的指令操作:
打开一个超级用户,一个普通用户
在超级用户下设置,vim /etc/sudoers没有语法的检测
用visudo编辑文件 (1) 首先打开超级用户,
再打开一个窗口把超级用户 su - westos变成普通用户(如果没有westos这个用户,用useradd),查看hostname ,然后useradd lee不可以执行,
(2)到超级用户下visudo :100行编辑 名字 hostname=(root) 不可以执行的命令
:wq退退出 (不可以执行的命令是permission denied前面的语句)
当改完visudo时不能退出时,按e回到文件查找错误
(3)在普通用户下调用 sudo useradd lee 会提醒输入密码
以“ sudo 指令 ”执行 root 的指令串,由于 sudo 需要事先设置妥当,且 sudo 需要输入使用者自己的密码, 因此多人共管同一部主机时, sudo 要比 su 来的好喔!至少 root 密码不会流出去!
如果忘记,则在超级用户下passwd westos更改密码,在普通用户下输入密码就成功了 然后id lee 就可以查看这个用户
如果不想要密码,在超级用户下设置的时候在不可以执行的命令前加NOPASSWD:空格 不可以执行的命令
注意:如果多条命令的话,命令之间使用逗号隔开,对于不可以执行的命令,命令前面加上感叹号即可。注意命令一定时绝对路径哦
正式版:
1.权力下放文件为/etc/sudoers
此文件可以用vim直接编辑,但是不提供语法检测
也可以用使用visudo编辑此文件,visudo命令是提供语法检测的
2.下放方式
*visudo
100行左右
用户 主机名称=(得到的用户身份) 命令
例如:tom localhost=(root) /usr/sbin/useradd
##tom用户可以在localhost主机以root用户身份执行useradd命令
tom localhostt=(root) NOPASSWD: /usr/sbin/useradd
##tom用户可以在localhost主机以root用户身份免密执行useradd命令
3.测试
su -tom
sudo useradd hello
ii. sudo 的时间间隔问题:
如果我使用同一个帐号在短时间内重复操作 sudo 来运行指令的话, 在第二次执行 sudo 时,并不需要输入自己的密码!sudo 还是会正确的运行喔!为什么呢? 第一次执行 sudo 需要输入密码,是担心由于使用者暂时离开座位,但有人跑来你的座位使用你的帐号操作系统之故。 所以需要你输入一次密码重新确认一次身份。
四.######文件权限的读取
| rw-rw-r-- | 1 | kiosk | kiosk | 0 | Jul 21 09:18 | file
[1] [2] [3] [4] [5] [6] [7]
文件权限的查看
ls -l file 查看文件信息
ls -ld dir 查看目录本身信息
ll file 相当于ls –l file
ll -d dir 相当于ls -ld dir
ls –LR dir 递归显示子目录
[1]
文件的类型
- ##空文件,或者文本
d ##目录
l ## 软链接,相当于快捷方式
s ##socket套接字。 既然被称为数据接口文件,,这种类型的文件通常被用在网络上的数据承接了。
我们可以启动一个程序来监听用户端的要求, 而用户端就可以通过这个socket来进行数据的沟通了。
第一个属性为 [ s ], 最常在/run或/tmp这些个目录中看到这种文件类型了。
b ##block块设备,设备文件里面的可供储存的周边设备,通常都集中在/dev。
区块(block)设备文件:硬盘与软盘等就是啦! 你可以随机的在硬盘的不同区块读写,这种设备就是区块设备啰!你可以自行查一下/dev/sda看看, 会发现第一个属性为[ b ]喔!
c ##显示字符设备 ,例如键盘、鼠标等
文件的权限
rw- | rw- | r--
1 2 3
1.[u]文件拥有者对文件能做什么操作
2.[g]文件所有组对文件能做什么操作
3.[o]其他人对文件能做什么操作
u 主人 g主组 o 其他
[2]
第二栏表示有多少文件名链接到此节点(i-node):
每个文件都会将他的权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件名来记录, 因此每个文件名就会链接到一个i-node啰!这个属性记录的,就是有多少不同的文件名链接到相同的一个i-node号码去就是了。
软链接 为了节省数据区域 一个结点指向另一个结点
结点区 mate data属性,就是ls -l 也是inode tables数据区
硬链接 为了节省结点区域 在数据区进行备份
权限读取第三个表示被系统记录的次数,3个相同的文件就是3
如果想要让系统默认的语系变成英文的话,那么你可以修改系统配置文件“/etc/locale.conf”,
五.1)如何改变文件所有人和所有组
chown|chgrp
chown username file|dir ##更改文件或者目录的所有人
chown user.group file|dir ##更改文件或者目录的所有人所有组
chown -R user.group dir ##递归更改目录本身及里面所有内容的所有人所有组
**chown只有超级用户才能用**
chgrp group file|dir #更改文件或者目录的所有组
chgrp -R group dir #更改目录本身及里面所有内容的所有组
chown改变拥有人
chgrp改变拥有组 -R递归
chgrp其实都可以舍弃 因为chown就可以更改了
新打开一个窗口 cd /mnt/ 改变环境 然后执行chown命令
2)如何改变文件的权限
1.对权限的理解
r
对文件:是否可以查看文件中的内容 --->cat file
对目录:是否可以查看目录中有什么子文件或者子目录 --->ls dir
w
对文件:是否可以改变文件里面记录的字符
对目录:是否可以对目录中子目录或子文件的元数据进行更改
x
对文件:是否可以通过文件名称调用文件内记录的程序,该文件具有可以被系统执行的权限
对目录:是否可以进入目录
- 权限未启用
假如kiosk对此目录仅具有r的权限,因此kiosk可以查询此目录下的文件名列表。因为kiosk不具有x的权限,亦即kiosk没有这个抽屉的钥匙啦! 因此kiosk并不能切换到此目录内!(相当重要的概念!) |
注意:目录的w权限不要轻易给,比如一个文件对其他人来说权限为0,但是这个文件在他的主文件夹下,他在此目录下具有rwx的完整权限,因此其他用户虽然不可以查看更改文件内容,但是可以删除这个文件。
-3)更改方式
chmod 三种方式 1.字母2.数字3.reference
1.chmod a+r /mnt/file2 就是给全部的都加r
每个最多是三个rwx
2.数字就是二进制u=4,g=2,o=1
3.chomd --reference=/mnt/file1 /mnt/westos 就是把westos改成file1的
第一种:
- chmod <u|g|o><+|-|+><r|w|x> file|dir
- chmod u+x /mnt/file1
- chmod g-r /mnt/file2
- chmod ug-r /mnt/file3
- chmod u-r,g+x /mnt/file4
-
7=rwx
6=rw-
5=r-x
4=r--
3=-wx
2=-w-
1=--x
0=---
| chmod | u g o a | +(加入) -(除去) =(设置) | r w x | 文件或目录 |
第三种:用chmod --reference
- 在实际的系统运行中最常发生的一个问题就是,常常我们以vim编辑一个shell的文字批处理文件后,他的权限通常是 -rw-rw-r-- 也就是664, 如果要将该文件变成可可执行文件,并且不要让其他人修改此一文件的话, 那么就需要-rwxr-xr-x这样的权限,此时就得要下达:“ chmod 755 test.sh ”的指令啰!
- *.html, .php:**网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件啰! .html 的文件可使用网页浏览器来直接打开,至于 .php 的文件, 则可以通过 client 端的浏览器来server 端浏览,以得到运算后的网页结果呢!
umask
install拷贝
拷贝
拷贝过来的权限默认是755
所以需要-m指定权限
-o 属主
-d创建目录