使用者帐号

Linux 系统上面的使用者如果需要登陆主机以取得 shell 的环境来工作时,他需要如何进行呢? 你输入帐号密码后,系统帮你处理了什么呢?

  1. 先找寻 /etc/passwd 里面是否有你输入的帐号?如果没有则跳出,如果有的话则将该帐号对应的 UID 与 GID (在 /etc/group 中) 读出来,另外,该帐号的主文件夹与 shell 设置也一并读出;
  2. 再来则是核对密码表啦!这时 Linux 会进入/etc/shadow 里面找出对应的帐号与 UID,然后核对一下你刚刚输入的密码与里头的密码是否相符?
  3. 如果一切都 OK 的话,就进入 Shell 控管的阶段啰

由上面的流程我们也知道,跟使用者帐号有关的有两个非常重要的文件,一个是管理使用者UID/GID 重要参数的/etc/passwd ,一个则是专门管理密码相关数据的 /etc/shadow 啰!详细的说明可以参考 man 5 passwd 及 man 5 shadow.

visudo修改权限 visudo授权_运维

visudo修改权限 visudo授权_visudo修改权限_02

/etc/passwd 文件结构

visudo修改权限 visudo授权_ssh_03

这个文件的构造是这样的:每一行都代表一个帐号,有几行就代表有几个帐号在你的系统中! 不过需要特别留意的是,里头很多帐号本来就是系统正常运行所必须要的,我们可以简称他为系统帐号, 例如 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 这个系统管理员那一行好了, 你可以明显的看出来,每一行使用“:”分隔开,共有七个咚咚

  1. 帐号名称: 就是帐号啦!用来提供给对数字不太敏感的人类使用来登陆系统的!需要用来对应 UID 喔。例如 root 的 UID 对应就是 0 (第三字段);
  2. 密码: 早期 Unix 系统的密码就是放在这字段上!但是因为这个文件的特性是所有的程序都能够读取,这样一来很容易造成密码数据被窃取, 因此后来就将这个字段的密码数据给他改放到 /etc/shadow 中了。所以这里你会看到一个“ x
  3. UID: 这个就是使用者识别码啰!通常 Linux 对于 UID 有几个限制需要说给您了解一下:
    | id 范围 | 该 ID 使用者特性 |
    | 0(系统管理员) | 当 UID 是 0 时,代表这个帐号是“系统管理员”! 所以当你要让其他的帐号名称也具有 root 的权限时| 1~999(系统帐号) | 保留给系统使用的 ID,其实除了 0 之外,其他的 UID 权限与特性并没有不一样。
    默认 1000 以下的| 1000~60000(可登陆帐号) | 给一般使用者用的。
  4. GID: 这个与 /etc/group 有关!其实 /etc/group 的观念与 /etc/passwd 差不多,只是他是用来规范群组名称与 GID 的对应而已!
  5. 使用者信息说明栏: 这个字段基本上并没有什么重要用途,只是用来解释这个帐号的意义而已!
  6. 主文件夹: 这是使用者的主文件夹, root 的主文件夹在 /root ,所以当root 登陆之后,就会立刻跑到 /root 目录里头啦!呵呵! 如果你有个帐号的使用空间特别的大,你想要将该帐号的主文件夹移动到其他的硬盘去该怎么作? 没有错!可以在这个字段进行修改呦**!默认的使用者主文件夹在/home/yourIDname**
  7. 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 文件结构

visudo修改权限 visudo授权_字段_04

visudo修改权限 visudo授权_ssh_05

字段与字段之间使用$分割 $6表示的是第六个加密算法 sha512

visudo修改权限 visudo授权_linux_06

visudo修改权限 visudo授权_字段_07

dd:$6$WuEigR.ygMHAijsD$LSyABpTnfBsE6QMNPvaN8iXb0evLZxLZbPzyYyoNQ9c2LYPyRHgtR1GxFHHUC6EwesxTLWLd0cCmQOMhZxHCG0::0:99999:7:::第二个$与第3个之间的是salt

3-4 是加密后的密码川

4-5

visudo修改权限 visudo授权_visudo修改权限_08

5-6 xx天内不能改

visudo修改权限 visudo授权_字段_09

6-7 xx天前必须改

visudo修改权限 visudo授权_visudo修改权限_10

7-8

visudo修改权限 visudo授权_ssh_11


最后警告

visudo修改权限 visudo授权_visudo修改权限_12

visudo修改权限 visudo授权_linux_13

用户认证信息

我们知道很多程序的运行都与权限有关,而权限与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用户密码信息

visudo修改权限 visudo授权_运维_14

用户名称

用户密码passwd

visudo修改权限 visudo授权_visudo修改权限_15

--stdin 重定向标准输入 所以可以使用管道

visudo修改权限 visudo授权_visudo修改权限_16

给组设置密码 一般情况下组是没有密码

visudo修改权限 visudo授权_运维_17

想要某个用户临时的切换到某个组中有用

visudo修改权限 visudo授权_字段_18


visudo修改权限 visudo授权_字段_19


visudo修改权限 visudo授权_运维_20

给这个组添加密码

用户创建文件的属主是自己 ,属组是自己的基本组

临时切换新组newgrp ------基本组更改了

visudo修改权限 visudo授权_字段_21

这个是用户在这两个组里面

想想用户不在这个组里面

visudo修改权限 visudo授权_字段_22

加密码就是为了避免别人随意切换到自己的组来

visudo修改权限 visudo授权_visudo修改权限_23

密码输入正确就可以加入这个组了

[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	的大量创建使用者帐号当中!

visudo修改权限 visudo授权_linux_24


密码在/etc/shadow这个文件当中 只有超级用户可以操作

!!表示被封锁 该账户不能登陆passwd -u westos ##取消感叹号

visudo修改权限 visudo授权_ssh_25


usermod -L westos ##在用户密码前加入“!”

visudo修改权限 visudo授权_visudo修改权限_26


usermod -U westos ##在密码不为空时使用,/etc/shadow 密码栏的 ! 拿掉,解冻啦!|

passwd -d westos #清空westos密码

visudo修改权限 visudo授权_visudo修改权限_27


visudo修改权限 visudo授权_linux_28


注意:

普通用户改密码是

1.必须知道当前用户原始密码

2.密码不能和账号名称相似

3.密码不能是有序的数字或有序纯字母

4.密码如果是纯数字或字母要>8除了使用 passwd -S 之外,有没有更详细的密码参数显示功能呢?有的!那就是 chage 了!

visudo修改权限 visudo授权_字段_29

[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    ##两个命令功能类似,多用于创建了一个 新的用户,要求再第一次登陆系统时必须更换默认密码,例如学校在初次上课时就使用与学号相同的帐号/密码给学生,	让她们登陆时自行设置她们的密码,如此一来就能够避免其他同学随意使用别人的帐号,也能够保证学生知道如何更改自己的密码!

visudo修改权限 visudo授权_linux_30

visudo修改权限 visudo授权_ssh_31

#用户密码最短有效期#
passwd    -n  1    westos     #westos用户在1天之内不能修改密码
chage     -m   1    westos     
#用户密码最长有效期#
passwd    -x   30    westos      #设定westos在30天内必须修改密码
chage     -M  40    westos

visudo修改权限 visudo授权_运维_32


visudo修改权限 visudo授权_运维_33

#密码警告期限
passwd    -w    2    westos     #密码过期前两天有警告输出
chage     -W   2     westos 
#用户非活跃天数
passwd     -i   1   westos  #密码过期后仍可登陆系统的天数
chage     -I     1     westos
用户到期日:
chage  -E 2019-6-6 用户名 
###用户在这一天会被冻结  注意:此时间是从1970-1-1开始计算的累计天数|

visudo修改权限 visudo授权_ssh_34

/etc/group 文件结构

visudo修改权限 visudo授权_visudo修改权限_35

这个文件就是在记录 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 内同帐号名称的那一行,就是密码相关数据啰。

visudo修改权限 visudo授权_运维_36

visudo修改权限 visudo授权_visudo修改权限_37

三.用户授权

先回忆su 的用法:

visudo修改权限 visudo授权_linux_38

-c不是真正切换过去

visudo修改权限 visudo授权_ssh_39

  • 若要完整的切换到新使用者的环境,必须要使用“ su - username ”或“ su -l username ”,才会连同 PATH/USER/MAIL 等变量都转成新使用者的环境;
  • 如果仅想要执行一次 root 的指令,可以利用“ su - -c “指令串” ”的方式来处理;
  • 使用 root 切换成为任何使用者时,并不需要输入新使用者的密码;
    虽然使用 su 很方便啦,不过缺点是,当我的主机是多人共管的环境时,如果大家都要使用 su 来切换成为 root 的身份,那么不就每个人都得要知道 root 的密码,这样密码太多人知道可能会流出去, 很不妥当呢!怎办?通过 sudo 来处理即可!

科普:

visudo修改权限 visudo授权_运维_40

visudo修改权限 visudo授权_ssh_41

更改别的用户的

visudo修改权限 visudo授权_linux_42

权限管理

执行cat命令 回车就会运行一个进程
whomi查看运行这个进程的是谁

根据执行进程的人判断其属于这个文件的所属主还是所属组

visudo修改权限 visudo授权_linux_43


visudo修改权限 visudo授权_linux_44

文件默认应该没有x,目录默认应该有

visudo修改权限 visudo授权_linux_45

sudo

相对于 su 需要了解新切换的使用者密码 (常常是需要 root 的密码), sudo 的执行则仅需要自己的密码即可! 甚至可以设置不需要密码即可执行 sudo 呢!由于 sudo 可以让你以其他用户的身份执行指令 (通常是使用 root 的身份来执行指令),因此并非所有人都能够执行sudo , 而是仅有规范到 /etc/sudoers 内的用户才能够执行 sudo 这个指令喔!

sudo 的执行是这样的流程:

  1. 当使用者执行 sudo 时,系统于 /etc/sudoers 文件中搜寻该使用者是否有执行 sudo 的权限;
  2. 若使用者具有可执行 sudo 的权限后,便让使用者“输入使用者自己的密码”来确认;
  3. 若密码输入成功,便开始进行 sudo 后续接的指令(但 root 执行 sudo 时,不需要输入密码);
  4. 若欲切换的身份与执行者身份相同,那也不需要输入密码。

visudo

为什么要使用 visudo 呢?这是因为 /etc/sudoers 是有设置语法的,如果设置错误那会造成无法使用 sudo 指令的不良后果。因此才会使用 visudo 去修改, 并在结束离开修改画面时,系统会去检验 /etc/sudoers 的语法就是了。

使用者帐号		登陆者的来源主机名称=(可切换的身份)		可下达的指令
root							ALL=(ALL)				ALL			<==这是默认值

上面这一行的四个元件意义是:

  1. “使用者帐号”:系统的哪个帐号可以使用 sudo 这个指令的意思;
  2. “登陆者的来源主机名称”:当这个帐号由哪部主机连线到本 Linux 主机,意思是这个帐号可能是由哪一部网络主机连线过来的, 这个设置值可以指定用户端计算机(信任的来源的意思)。默认值 root 可来自任何一部网络主机
  3. “(可切换的身份)”:这个帐号可以切换成什么身份来下达后续的指令,默认 root 可以
    切换成任何人;
  4. “可下达的指令”:可用该身份下达什么指令?这个指令请务必使用绝对路径撰写。 默认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修改权限 visudo授权_ssh_46

用visudo编辑文件 (1)  首先打开超级用户,
再打开一个窗口把超级用户 su - westos变成普通用户(如果没有westos这个用户,用useradd),查看hostname ,然后useradd lee不可以执行,

visudo修改权限 visudo授权_字段_47

(2)到超级用户下visudo  	   :100行编辑  名字 hostname=(root)  不可以执行的命令   
:wq退退出             (不可以执行的命令是permission denied前面的语句)
当改完visudo时不能退出时,按e回到文件查找错误

visudo修改权限 visudo授权_linux_48


(3)在普通用户下调用 sudo useradd lee 会提醒输入密码

以“ sudo 指令 ”执行 root 的指令串,由于 sudo 需要事先设置妥当,且 sudo 需要输入使用者自己的密码, 因此多人共管同一部主机时, sudo 要比 su 来的好喔!至少 root 密码不会流出去!

visudo修改权限 visudo授权_visudo修改权限_49


如果忘记,则在超级用户下passwd westos更改密码,在普通用户下输入密码就成功了 然后id lee 就可以查看这个用户

visudo修改权限 visudo授权_linux_50


如果不想要密码,在超级用户下设置的时候在不可以执行的命令前加NOPASSWD:空格 不可以执行的命令

visudo修改权限 visudo授权_linux_51


注意:如果多条命令的话,命令之间使用逗号隔开,对于不可以执行的命令,命令前面加上感叹号即可。注意命令一定时绝对路径哦

正式版:

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]

visudo修改权限 visudo授权_linux_52


文件权限的查看

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       ##显示字符设备 ,例如键盘、鼠标等

visudo修改权限 visudo授权_字段_53


visudo修改权限 visudo授权_运维_54


文件的权限

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就可以更改了

visudo修改权限 visudo授权_linux_55


新打开一个窗口 cd /mnt/ 改变环境 然后执行chown命令

visudo修改权限 visudo授权_字段_56

2)如何改变文件的权限

1.对权限的理解
r          
   对文件:是否可以查看文件中的内容      --->cat file
   对目录:是否可以查看目录中有什么子文件或者子目录   --->ls dir
w
 对文件:是否可以改变文件里面记录的字符
 对目录:是否可以对目录中子目录或子文件的元数据进行更改
x               
 对文件:是否可以通过文件名称调用文件内记录的程序,该文件具有可以被系统执行的权限
 对目录:是否可以进入目录                  
-           权限未启用

visudo修改权限 visudo授权_visudo修改权限_57

假如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


visudo修改权限 visudo授权_linux_58


-

visudo修改权限 visudo授权_visudo修改权限_59

7=rwx
6=rw-
5=r-x
4=r--
3=-wx
2=-w-
1=--x
0=---

|	chmod	|	u	g	o	a	|	+(加入)	-(除去)	=(设置)	|	r	w	x	|	文件或目录	|

visudo修改权限 visudo授权_visudo修改权限_60


第三种:用chmod --reference

visudo修改权限 visudo授权_字段_61

  • 在实际的系统运行中最常发生的一个问题就是,常常我们以vim编辑一个shell的文字批处理文件后,他的权限通常是 -rw-rw-r-- 也就是664, 如果要将该文件变成可可执行文件,并且不要让其他人修改此一文件的话, 那么就需要-rwxr-xr-x这样的权限,此时就得要下达:“ chmod 755 test.sh ”的指令啰!
  • *.html, .php:**网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件啰! .html 的文件可使用网页浏览器来直接打开,至于 .php 的文件, 则可以通过 client 端的浏览器来server 端浏览,以得到运算后的网页结果呢!

visudo修改权限 visudo授权_linux_62

visudo修改权限 visudo授权_visudo修改权限_63

visudo修改权限 visudo授权_运维_64

umask

visudo修改权限 visudo授权_字段_65

visudo修改权限 visudo授权_visudo修改权限_66

visudo修改权限 visudo授权_ssh_67

install拷贝

visudo修改权限 visudo授权_visudo修改权限_68

拷贝

visudo修改权限 visudo授权_linux_69

拷贝过来的权限默认是755

visudo修改权限 visudo授权_visudo修改权限_70


所以需要-m指定权限

visudo修改权限 visudo授权_ssh_71

-o 属主

visudo修改权限 visudo授权_字段_72

-d创建目录

visudo修改权限 visudo授权_visudo修改权限_73