inux权限管理(1)

1、linux系统文件普通权限

2、文件所属主的设置,组的指定

3、特殊权限

4、acl权限

5、su命令及其注意事项和sudo权限

6、权限管理的注意点

0、首先,在linux下用户账户是分角色的,由于角色的不同,每个角色,每个用户的的权限和所能完成的任务也不同。而在实际管理中,用户的角色是通过UID(用户id号)来标识的,每个用户的UID都是不同的。

 (1)root用户:系统的的最高权限,UID为0,也被称为超级用户,在shell界面上用#标识,在linux上他就是皇帝,无所不能。

 (2)系统用户:这类用户也称为虚拟用户、伪用户或假用户,这类用户不具有登录linux系统的能力,但是确实是系统运行不可缺少的用户,比如bin、mail、adm等等,这些是系统自身拥有的,或者我们配置某些服务软件是也会创建虚拟用户,如配置apache我们也会添加虚拟用户,以防止软件拥有过高的权限。系统用户的UID为1-499

  (3)这类用户能登录系统,在linux系统上进行普通操作,能操作自己目录下的内容,使用系统的权限受限,这些用户是root创建的,其UID为500—60000

0.1、查看用户信息:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

[[email protected] ~]# cat /etc/passwd #/etc/passwd 用户配置文件

root:x:0:0:root:/root:/bin/bash #root 用户 UID为0

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

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin

systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin

systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

polkitd:x:997:995:User for polkitd:/:/sbin/nologin

tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

desperadochn:x:1000:1000:desperadochn:/home/desperadochn:/bin/bash #普通用户

hadoop:x:1001:1001::/home/hadoop:/bin/bash

ntp:x:38:38::/etc/ntp:/sbin/nologin

apahce:x:996:994::/home/apahce:/bin/bash

desperado:x:1002:1002::/home/desperado:/bin/bash

1、linux系统文件的普通权限:

        linux系统将文件普通权限分成了读、写、执行。需要风别赋予其权限,这样权限管理就非常灵活了

1.1.1 文件权限的查看:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

[[email protected] ~]# ls -l-rw-r--r--. 1 root root 66441 3月 19 12:13 1.txt 

-rw-r--r--1 root root 0 3月 19 13:10 2.txt

-rw-r--r--1 root root 0 3月 16 23:30 a,b,c,d,e,f 

-rw-------1 root root 1146 2月 21 22:22 anaconda-ks.cfg 

drwxrwxrwx. 4 500 500 4096 3月 10 15:23 cmatrix-1.2a

-rw-r--r--1 root root 74376 4月 1 2002 cmatrix-1.2a.tar.gz

drwxr-xr-x. 12 501 games 4096 4月 11 00:00 httpd-2.4.20

-rw-r--r--1 root root 8299011 4月 8 23:39 httpd-2.4.20.tar.gz 

-rw-r--r--1 root root 1114 2月 28 12:17 index.html 

drwxrwxrwx. 5 desperadochn desperadochn 4096 2月 28 12:31 manpages-zh-1.5.1

-rw-r--r--1 root root 1965336 4月 4 2008 manpages-zh-1.5.1.tar.gz 

-rw-r--r--1 root root 512 3月 26 19:52 mbr

drwxr-xr-x. 3 root root 41 4月 10 23:51 tmp

-rw-r--r--1 root root 49903 2月 21 22:52 yum.txt

其中以“drwxrwxrwx.  5 desperadochn desperadochn    4096 2月  28 12:31 manpages-zh-1.5.1”举例:rwxrwxrwx  代表权限位

r:读权限

w:写权限

x:执行权限

在linux中权限针对不同的用户对文件的读、写、执行权限划分了3种情况:所属主(u),所属组(g),其他人(o),每种情况拥有不同的权限。

u :在上面例子的权限“rwxrwxrwx”,其中前三位表示所属主的权限,即该文件所属主的权限为读、写、执行。

g:在上面例子的权限“rwxrwxrwx”,中间三位表示所属组的权限,即该文件所属组的权限为读、写、执行。

o:   在上面例子的权限“rwxrwxrwx”,最后三位表示其他人的权限,即该文件其他人的权限为读、写、执行。

这些权限可以用数值表示:

r:4

w:2

x:1

因此“rwxrwxrwx” 可以用777表示。

1.1.2、读、写、执行权限的意义:

(1)文件:

r: 可使用文件查看类工具获取其内容;

w: 可修改其内容;

x: 可以把此文件提请内核启动为一个进程;

(2)目录:

r: 可以使用ls查看此目录中文件列表;

w: 可在此目录中创建文件,也可删除此目录中的文件;

x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录;

1.1.3、文件权限的设置

文件的权限设置用chmod。

命令格式:chmod [OPTION]… OCTAL-MODE FILE… 或 chmod [OPTION]… MODE[,MODE]… FILE…

-R: 递归修改权限

其中:

(1)、设置一类用户的权限:

u=    #后面跟上权限(rwx)表示赋予所属主所赋予的权限

g=    #后面跟上权限(rwx)表示赋予所属组所赋予的权限

o=    #后面跟上权限(rwx)表示赋予其他人所赋予的权限

ug=   #后面跟上权限(rwx)表示赋予所属主和所属组所赋予的权限

a=     #后面跟上权限(rwx)表示赋予所有用户所赋予的权限

u=,g= #后面跟上权限(rwx)表示赋予所属主和所属组分别赋予所输入的权限

例子:

1、a=


1

2

3

4

5

6

7

8

[[email protected] ~]# chmod 000 1111111 

[[email protected] ~]# ls -l

总用量 10264

----------.  1 root         root               0 4月  25 19:33 1111111

[[email protected] ~]# chmod a=rwx 1111111 

[[email protected] ~]# ls -l

总用量 10264

-rwxrwxrwx.  1 root         root               0 4月  25 19:33 1111111

2、ug=


1

2

3

4

5

6

7

8

[[email protected] ~]# chmod 000 1111111 

[[email protected] ~]# ls -l

总用量 10264

----------.  1 root         root               0 4月  25 19:33 1111111

[[email protected] ~]# chmod ug=rwx 1111111 

[[email protected] ~]# ls -l

总用量 10264

-rwxrwx---.  1 root         root               0 4月  25 19:33 1111111

3、u=,g=


1

2

3

4

5

6

7

8

[[email protected] ~]# chmod 000 1111111

[[email protected] ~]# ls -l

总用量 10264

----------1 root root 0 4月 25 19:33 1111111

[[email protected] ~]# chmod u=rwx,g=rwx 1111111 

[[email protected] ~]# ls -l 

总用量 10264

-rwxrwx---1 root root 0 4月 25 19:33 1111111

4、u=


1

2

3

4

5

6

7

8

[[email protected] ~]# chmod 000 1111111

[[email protected] ~]# ls -l

总用量 10264

----------1 root root 0 4月 25 19:33 1111111

[[email protected] ~]# chmod u=rwx 1111111 

[[email protected] ~]# ls -l 

总用量 10264

-rwx------1 root root 0 4月 25 19:33 1111111

(2)、为某些用户加上某些权限权限

u+:表示所属主加上xxx权限(xxx是rwx权限)

u-:表示所属主减去xxx权限(xxx是rwx权限)

o+:表示其他人加上xxx权限(xxx是rwx权限)

o-:表示其他人减去xxx权限(xxx是rwx权限)

g+:表示所属组加上xxx权限(xxx是rwx权限)

g- : 表示所属组减去xxx权限(xxx是rwx权限)

例子:

1、u+:


1

2

3

4

5

6

7

8

[[email protected] ~]# chmod 000 1111111

[[email protected] ~]# ls -l

总用量 10264

----------1 root root 0 4月 25 19:33 1111111

[[email protected] ~]# chmod u+x 1111111 

[[email protected] ~]# ls -l

总用量 10264

---x------1 root root 0 4月 25 19:33 1111111

2、g+:


1

2

3

4

5

6

7

8

[[email protected] ~]# chmod 000 1111111

[[email protected] ~]# ls -l

总用量 10264

----------1 root root 0 4月 25 19:33 1111111

[[email protected] ~]# chmod g+x 1111111 

[[email protected] ~]# ls -l 

总用量 10264

------x---1 root root 0 4月 25 19:33 1111111

1.1.4权限掩码——umask   (1)、umask :权限掩码 在shell中键入此命令可以查看默认默认权限掩码 其决定了文件的缺省权限。可以手工进行设置 格式为:umask xxx xxx代表3个数字 。含义:

  • 若用户建立普通文件 这预设没有执行权限 最大值为666
  • 若用户建立为目录,则预设所有权限开放,即777
  • 其含义即为以上两条规则中的默认值减去需要减掉的权限(umask)
  • 目录的权限为 “rwxrwxrwx – —-w–w- =rwxr-xr-x”(减去umask后即为生效权限)
  • 普通文件文件的权限为 “rw-rw-rw- —-w–w- =rw-r—r— 减去umask后即为生效权限)
  • Umask可以在/etc/bashrc里面更改 默认情况下centos系统下root用户umask值为022(—-r–r-) 普通用户值为002(——-r-)不同的linux发行版值不同

(2)、umask查看

对于root用户:


1

2

[[email protected] ~]# umask 

0022

对于普通用户:


1

2

3

4

[[email protected] ~]# su - desperadochn

上一次登录:日 4月 10 22:26:37 CST 2016tty1 

[[email protected] ~]$ umask 

0002

(3)、umask设置

1、临时生效


1

2

3

4

5

6

[[email protected] ~]# umask 

0000

[[email protected] ~]# mkdir 1

[[email protected] ~]# ls -l

总用量 10264

drwxrwxrwx.  2 root         root               6 4月  25 21:52 1

2、在/etc/bashrc里面更改永久生效:


1

2

3

4

5

6

[[email protected] ~]# vim /etc/bashrc

找到如下字段:

   if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then    

       umask 002                  #普通用户umask

    else

       umask 022                  #rootumask

2、文件所属主的设置,组的指定

   2.1文件所属主的设置(仅root可用)

    chown:修改文件的属主

chown [OPTION]… [OWNER][:[GROUP]] FILE…

chown [OPTION]… –reference=RFILE FILE…

用法:

OWNER

OWNER:GROUP

:GROUP

        Note: 命令中的冒号可用.替换;

       -R: 递归

例子:


1

2

3

4

5

6

7

8

[[email protected] ~]# touch 1111

[[email protected] ~]# ls -l

总用量 10264

-rw-r--r--1 root root 0 4月 25 22:10 1111

[[email protected] ~]# chown desperadochn 1111

[[email protected] ~]# ls -l

总用量 10264

-rw-r--r--1 desperadochn root 0 4月 25 22:10 1111 #属主已改变

3、特殊权限:

3.1 setUid权限:

(1)只有可执行的二进制程序才能设定seUid权限

(2)命令执行者要对该程序拥有x权限(执行)

(3)命令的作用是执行者在执行程序的时候获得该文件属主的身份

(4)setUid权限只在该文件执行过程中有效,也就是说身份改变只在程序执行过程中有效

(5)设置成功后在文件权限位上能看到s权限

(6) setuid设置方法:①chmod 4xxx 文件名 4 代表文件setUid 权限②chmod u+s 文件名

危险的setUid:

①关键目录应严格控制写权限 如“/”,”/usr”等

②用户密码设置应遵循密码三原则

③对系统中应该具有setuid权限的文件做一列表,定期检查是否有多余的setuid权限文件

做一个实验:


1

2

3

4

5

6

7

[[email protected] ~]# whereis vim

vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz

[[email protected] ~]# ls -l /usr/bin/vim

-rwxr-xr-x. 1 root root 2289656 6月  10 2014 /usr/bin/vim

[[email protected] ~]# chmod 4755 /usr/bin/vim

[[email protected] ~]# ls -l /usr/bin/vim

-rwsr-xr-x. 1 root root 2289656 6月  10 2014 /usr/bin/vim   #看到权限位上的s表示设置成功了

这是我们的shell会用红色标识该文件(这表明该文件很危险或者错误)

让我们看看它到底有何危害呢?

[[email protected] ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 1227 4月  10 23:26 /etc/passwd  #该权限表明该文件只有root有读写权限,其他人只有读权限
[[email protected] ~]# su - desperadochn
上一次登录:一 4月 25 21:48:50 CST 2016pts/0 上
[[email protected] ~]$ echo "111" >> /etc/passwd
-bash: /etc/passwd: 权限不够

那我们用vim试试看:


1

[[email protected] ~]$ vim /etc/passwd

试试改desperadochn权限为root:

试试改desperadochn权限为root:


1

2

3

4

[[email protected] ~]$ su - desperadochn

密码:

上一次登录:一 4月 25 22:34:19 CST 2016pts/0 

[[email protected] ~]#           #成功篡位成root了

因此编辑器或者能对如何文件中的任何内容进行读写操作的,都十分危险

默认拥有setUid权限的命令是passwd:


1

2

3

4

[[email protected] ~]# whereis passwd

passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz

[[email protected] ~]# ls -l /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

因为普通用户对/etc/passwd和/etc/shadow文件没有写权限,因此在用户改密码的一瞬间,他需要root权限:


1

2

3

4

[[email protected] ~]# ls -l /etc/passwd

-rw-r--r--1 root root 1228 4月  25 22:47 /etc/passwd

[[email protected] ~]# ls -l /etc/shadow

----------1 root root 848 4月  10 23:26 /etc/shadow

用chmod u+s 设置setUid权限:


1

2

3

4

5

[email protected] ~]# whereis vim

vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz

[[email protected] ~]# chmod u+s /usr/bin/vim

[[email protected] ~]# ls -l /usr/bin/vim

-rwsr-xr-x. 1 root root 2289656 6月  10 2014 /usr/bin/vim

3.2 setGid:

(1) 只有可执行的二进制程序才能设定setGid权限

(2)命令执行者要对该程序拥有x权限(执行)

(3)命令的作用是执行者在执行程序的时候,组身份升级为所属组。

(4)组身份的改变只在程序执行过程中有效。

(5)设置方法:chmod 2xxx 文件名 或chmod g+s

(6)可以给文件或者目录分配该权限

例子:

chmod 2xxx 设置setGid:


1

2

[[email protected] ~]# ls -l /usr/bin/vim

-rwxr-sr-x. 1 root root 2289656 6月  10 2014 /usr/bin/vim   #rwxr-sr-x 组权限中的r权限为前的s表示设置成功了

3.3 stickyBit

(1)stickyBit 又叫粘着位

(2)粘着位权限只对目录起效

(3)普通用户对该目录存在w和x权限

(4)若没有该权限,则普通用户拥有 w权限,所以可以删除该目录下所有文件,若赋予了该权限,除了root可以删除所有文件,普通用户就算拥有w权限也只能删除自己建立的文件,不能删除其他用户建立的文件。

(5)设置方法:chmod 1xxx 文件名 或chmod o+t

chmod 1xxx 设置:


1

2

3

4

5

6

7

8

9

[[email protected] ~]# mkdir /tmp/test11

[[email protected] ~]# cd /tmp/

[[email protected] tmp]# ls -ld test11/

drwxr-xr-x. 2 root root 6 4月  25 23:15 test11/

[[email protected] tmp]# chmod 777 /tmp/test11/   #普通用户对该目录存在w和x权限[[email protected] tmp]# ls -ld /tmp/test11/

drwxrwxrwx. 2 root root 6 4月  25 23:15 /tmp/test11/

[[email protected] tmp]# chmod 1777 /tmp/test11/

[[email protected] tmp]# ls -ld /tmp/test11/

drwxrwxrwt. 2 root root 6 4月  25 23:15 /tmp/test11/

chmod o+t:


1

2

3

4

5

6

7

8

9

10

[[email protected] ~]# mkdir /tmp/test11

[[email protected] ~]# cd /tmp/

[[email protected] tmp]# ls -ld test11/

drwxr-xr-x. 2 root root 6 4月  25 23:15 test11/

[[email protected] tmp]# chmod 777 /tmp/test11/   #普通用户对该目录存在w和x权限

[[email protected] tmp]# ls -ld /tmp/test11/

drwxrwxrwx. 2 root root 6 4月  25 23:15 /tmp/test11/

[[email protected] tmp]# chmod o+t /tmp/test11/

[[email protected] tmp]# ls -ld /tmp/test11/

drwxrwxrwt. 2 root root 6 4月  25 23:15 /tmp/test11/

做个试验:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

[[email protected] test11]# ls-l

[[email protected] test11]# su - desperado

[[email protected] ~]$ cd /tmp/test11/

[[email protected] test11]$ touch 123

[[email protected] test11]$ su - desperadochn

密码:

上一次登录:一 4月 25 22:34:36 CST 2016pts/0 

[[email protected] ~]$ cd /tmp/test11/

[[email protected] test11]$ touch 112

[[email protected] test11]$ su - root

密码:

上一次登录:一 4月 25 22:44:49 CST 2016pts/0 

[[email protected] ~]# cd /tmp/test11/

[[email protected] test11]# chmod 777 111

[[email protected] test11]# chmod 777 112

[[email protected] test11]# chmod 777 123

[[email protected] test11]# su - desperadochn

上一次登录:一 4月 25 23:31:00 CST 2016pts/0 

[[email protected] ~]$ cd /tmp/test11/

[[email protected] test11]$ ls -

总用量 0

-rwxrwxrwx. 1 root         root         0 4月  25 23:27 111

-rwxrwxrwx. 1 desperadochn desperadochn 0 4月  25 23:31 112

-rwxrwxrwx. 1 desperado    desperado    0 4月  25 23:30 123

[[email protected] test11]$ rm 123

rm: 无法删除"123": 不允许的操作

[[email protected] test11]$ rm 112

[[email protected] test11]$ su - root

密码:

上一次登录:一 4月 25 23:32:32 CST 2016pts/0 

[[email protected] ~]# cd /tmp/test11/

[[email protected] test11]# rm 123

rm:是否删除普通空文件 "123"?y

实验结果可见:若赋予了该权限,除了root可以删除所有文件,普通用户就算拥有w权限也只能删除自己建立的文件,不能删除其他用户建立的文件。

因此权限的数字表示方法其实是4位:

(1)第一位表示特殊权限 4表示 setUid权限,2表示setGid权限,1表示  stickyBit权限

(2)第二、三、四位分别表示所属主、所属组、其他人这些不同的角色的权限,4表示r权限(读),2表示w权限(写),1表示x权限(写)

3.4 chattr权限 :

格式:chattr [+-=] [选项] 文件或目录名

+:增加权限  -:删除权限=:等于某权限

选项:

i:若对文件赋予了i属性,那么不允许对文件进行删除、改名,也不能添加和删除数据;若对目录赋予了i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。

a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能增加也不能修改数据;如果对目录设置a属性,那么只允许在目录中修改和   建立文件,但不允许删除

查看文件系统属性命令:lsattr 选项 文件名

选项:

-a:显示所有文件和目录

–d:若目标是目录,则列出目录本身的属性,而非子文件属性

例子:

对文件赋予i属性:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

[[email protected] ~]# mkdir /tmp/test2

[[email protected] ~]# cd /tmp/test2/

[[email protected] test2]# touch 1111

[[email protected] test2]# ls -l

总用量 0

-rw-r--r--1 root root 0 4月  26 00:20 1111

[[email protected] test2]# chattr +i 1111 

[[email protected] test2]# lsattr 1111 

----i----------- 1111   #成功

[[email protected] test2]# ls -l

总用量 0

-rw-r--r--1 root root 0 4月  26 00:20 1111   #文件属主拥有读写权限

[[email protected] test2]# echo "1111" >> 1111 

-bash: 1111: 权限不够     #不能添加数据

[[email protected] test2]# echo "1111" > 1111 

-bash: 1111: 权限不够  #不能删除数据

[[email protected] test2]# rm -f 1111 

rm: 无法删除"1111": 不允许的操作   #不允许删除文件

[[email protected] test2]# mv 1111 2222

mv: 无法将"1111" 移动至"2222": 不允许的操作

对文件取消i属性:


1

2

3

4

5

6

[[email protected] test2]# lsattr 1111 

----i----------- 1111   #

[[email protected] test2]# chattr -i 1111 

[[email protected] test2]# lsattr 1111 

---------------- 1111

[[email protected] test2]# echo "1111" > 1111

对目录赋予i属性:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

[[email protected] test2]# cd ..

[[email protected] tmp]# chattr +i test2/

[[email protected] tmp]# lsattr -d test2/

----i----------- test2/

[[email protected] tmp]# cd test2

[[email protected] test2]# ls -l

总用量 4

-rw-r--r--1 root root 5 4月  26 00:36 1111

-rw-r--r--1 root root 0 4月  26 00:56 2222

[[email protected] test2]# echo "111111" >> 2222  #可以修改数据

[[email protected] test2]# touch 33

touch: 无法创建"33": 权限不够  #不能创建文件

[[email protected] test2]# rm -f 2222 

rm: 无法删除"2222": 权限不够   #不能删除文件

对文件赋予a属性:


1

2

3

4

5

[[email protected] test2]# chattr =a 1111 

[[email protected] test2]# lsattr 1111 

-----a---------- 1111

[[email protected] test2]# echo "1111" > 1111 

-bash: 1111: 不允许的操作

对目录赋予a属性:


1

2

3

4

5

6

7

8

9

10

[[email protected] tmp]# mkdir /tmp/test3

[[email protected] tmp]# chattr +a /tmp/test3/

[[email protected] tmp]# lsattr -d /tmp/test3

-----a---------- /tmp/test3

[[email protected] tmp]# cd /tmp/test3

[[email protected] test3]# ls

[[email protected] test3]# touch 111   #可以创建文件

[[email protected] test3]# echo "11111" >>111 #可以修改文件内容

[[email protected] test3]# rm -f 111 

rm: 无法删除"111": 不允许的操作  #不允许删除

4、acl权限

当传统的linux文件系统的权限控制谁着应用的发展,已经不能适应现在复杂的控制需求,ACL(Access Control Lists,访问控制列表)应运而生:

(1)acl权限是独立于所属主、用户组、其他人的一种权限,可以给单独用户已某种权限,而不用考虑 所属主、用户组、其他人。

(2)查询分区是否支持acl权限:用命令dumpe2fs –h /dev/sda3(所需查询的盘符)

-h 仅显示超级快信息,而不显示磁盘块组的详细信息。

查看default mount options 是否开启acl(user_xattr acl)

若分区不支持acl则有如下方法:

①mount -o remount,acl/        #重新挂载根分区,并挂载加入acl权限(临时开启acl权限)

②修改 /etc/fstab 命令:vim /etc/fstab

(3)查找根分区 挂载设置是否为defaults 若是一般支持(若不支持 后面添加,acl)重启或重新挂载

设置acl权限:

setfacl

-m 设定acl权限

–x 删除指定的acl权限

–b 删除所有acl权限

–d 设定默认的acl权限

–k 删除默认的acl权限

–R 递归设定acl权限

setfacl –m u:user:rwx /file  u 用户标识符 同理 可用g设定给用户组:用户名:所分配的权限 /对应的目录

若设置成功则在文件权限最后面有一个+号

getfacl :

查看具体的acl权限

格式:

getfacl /文件名或目录名/

若成功会显示单独对于该用户的权限 与所属主、用户组、其他人权限无关。

直接设定的acl权限并非用户真正能得到的权限 必须与acl mask值相与后才能得到真正权限

setfacl –m m:rx 所给的最大权限 /文件名/ 若设定成功 查看时会出现effective:xxx 权限值表示实际起作用的权限。

删除acl权限 setfacl –x u:user /filename/  或setfacl –b /filename/ 删除该文件所有acl权限

递归acl权限:指父目录在设定acl权限之时 子文件和子目录也遵循父目录acl权限

设定方法:setfacl –m u:用户名:权限 –R /文件名/

默认acl权限:作用是如果给父目录设定了默认acl权限,那么所有新创建的子文件都会继承父文件的acl权限

设定默认acl权限方法:setfacl –m d:u:用户名:权限 文件名 可以和-R同时使用 递归修改

递归acl和默认acl权限只能给目录

实现:

1、查看是否有acl软件包


1

2

[[email protected] ~]# rpm -q acl

acl-2.2.51-12.el7.x86_64

2、设置支持acl功能:


1

[email protected] ~]# mount -o remount,acl /

要想永久启用该功能请修改/etc/fstab文件。

3、搭建实验环境:


1

2

3

4

5

6

7

8

[[email protected] ~]# mkdir /tmp/acltest

[[email protected] ~]# cd /tmp/acltest/

[[email protected] acltest]# touch acltest

[[email protected] acltest]# ls -al 

总用量 4

drwxr-xr-x.  2 root root   20 4月  29 22:51 .

drwxrwxrwt. 12 root root 4096 4月  29 22:51 ..

-rw-r--r--.  1 root root    0 4月  29 22:51 acltest

4、设置acl权限:


1

2

3

4

5

6

7

8

9

10

11

[[email protected] acltest]# setfacl -m u:desperadochn:rwx /tmp/acltest/acltest

[[email protected] acltest]# getfacl  /tmp/acltest/acltest

getfacl: Removing leading ‘/‘ from absolute path names

# file: tmp/acltest/acltest

# owner: root

# group: root

user::rw-

user:desperadochn:rwx

group::r--

mask::rwx

other::r--

试试是否对tmp/acltest/acltest有rwx权限:

[[email protected] acltest]# su - desperadochn
上一次登录:五 4月 29 22:43:05 CST 2016pts/1 上
[[email protected] ~]$ ls -al /tmp/acltest/
总用量 8
drwxr-xr-x.  2 root root   20 4月  29 22:51 .
drwxrwxrwt. 12 root root 4096 4月  29 22:51 ..
-rw-rwxr--+  1 root root    0 4月  29 22:51 acltest
[[email protected] ~]$ cd /tmp/acltest/
[[email protected] acltest]$ id desperadochn
uid=1000(desperadochn) gid=1000(desperadochn) 组=1000(desperadochn)

[[email protected] acltest]$ echo 11111"" >> /tmp/acltest/acltest
[[email protected] acltest]$ cat /tmp/acltest/acltest
11111

看,本来作为其他人的得desperadochn是没有权限对/tmp/acltest/acltest进行写入操作的但是通过ACL权限独立给他读写执行权限。

5、su和sudo

5.1 su

作用:切换到其他用户账户进行登录。

注意事项:

(1)root用户切换到普通用户是不需要输入密码确认。普通用户切换至root需要输入root密码确认,普通用户相互切换需要对方的密码

(2)如果su不带任何选项及参数,默认切换到root账户且不改变shell环境

(3)使用su时一定要带- 即su – 要不然对于一个运维来说是非常low的表现

实验 :su和 su -的区别


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

[[email protected] ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[[email protected] ~]# pwd

/root

[[email protected] ~]# su desperadochn

[[email protected] root]$ pwd

/root   #还是root的家目录

[[email protected] root]$ echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin  #还是root的环境变量

[[email protected] root]$ su - desperadochn

密码:

上一次登录:五 4月 29 23:28:37 CST 2016pts/1 

[[email protected] ~]$ pwd

/home/desperadochn   #这时家目录对了

[[email protected] ~]$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/desperadochn/.local/bin:/home/desperadochn/bin  #这才是desperadochn的环境变量

因此我们可以得出结论:

(1)su不带- 只切换用户不会切换环境变量及家目录等用户独有的设置。这可能会产生问题

(2)一定要用su –

5.2、sudo

当我们需要在执行一些不得不执行的命令但是这些命令只有root才能执行时,又不想或者不能切换成root(root权限太高,要慎用)这时我们就需要sudo

首先sudo需要由root授权,root将那个用户可以使用哪种命令进行授权,即对/etc/sudoers文件进行修改。

当普通用户需要使用获得授权的只有用root才能使用的命令时,在前面带上sudo,之后输入自己用户的密码,之后就能以root权限使用该命令了,密码有效期5分钟,在5分钟内再次使用sudo将不需要密码。

许多发行版甚至默认不允许root用户直接登录,但是可以用sudo操作只有root才能完成的操作。

特点:

(1)sudo能限制用户只能在某一台主机上执行指定命令。

(2)sudo提供了丰富的日志

(3)sudo的配置文件是 /etc/sudoers

实现:

1、查看sudo软件是否安装


1

2

[[email protected] ~]$ rpm -q sudo

sudo-1.8.6p7-16.el7.x86_64

2、/etc/sudoers 文件详解


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

## Host Aliases    定义主机别名

## Groups of machines. You may prefer to use hostnames (perhaps using 

## wildcards for entire domains) or IP addresses instead.

# Host_Alias     FILESERVERS = fs1, fs2   #格式类型

# Host_Alias     MAILSERVERS = smtp, smtp2  #格式类型

 

## User Aliases   #用户别名

## These aren‘t often necessary, as you can use regular groups

## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname 

## rather than USERALIAS

# User_Alias ADMINS = jsmith, mikem   格式类型

 

 

## Command Aliases  定义命令别名

##

##     user    MACHINE=COMMANDS

##

## The COMMANDS section may have other options added to it.

##

## Allow root to run any commands anywhere 

root    ALL=(ALL)  ALL    #设置sudo部分,这一条表示root用户可以在任何主机运行任意命令

 

## Allows members of the ‘sys‘ group to run networking, software, 

## service management apps and more.

# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS 这一条表示sys组成员可以在任何主机运行网络、软件方面的命令

 

## Allows people in group wheel to run all commands

%wheel  ALL=(ALL)   ALL    #%wheel组成员可以在任何主机上运行任何命令

 

## Same thing without a password

# %wheel   ALL=(ALL)   NOPASSWD: ALL    #%wheel组成员可以在任何主机上运行任何命令,且不需要密码

 

## Allows members of the users group to mount and unmount the 

## cdrom as root

# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom  允许%user组用户运行sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom命令

 

## Allows members of the users group to shutdown this system

# %users  localhost=/sbin/shutdown -h now     允许%user组成员可以在本机运行/sbin/shutdown -h now  命令

 

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)

#includedir /etc/sudoers.d

虽然我们可以通过vim等工具修改/etc/sudoers文件,有专门的命令设置sudo权限——visudo他的优点是带语法检查。

命令格式:

visudo [选项]

-c:启用check—only 模式,sudoers文件将被检查语法错误、所有者和模式

-q:不进行语法检查

-s:启用严格检查sudoers文件

使用visudo编辑/etc/sudoers文件


1

[[email protected] ~]# visudo

检查:


1

2

[[email protected] ~]# visudo -c

/etc/sudoers:解析正确

sudo命令      命令格式:                sudo [选项] [命令]

-l:列出用户能执行的命令

实验:


1

2

3

4

5

6

7

8

9

10

11

12

## Next comes the main part: which users can run what software on

## which machines (the sudoers file can be shared between multiple

## systems).

## Syntax:

##

##      user    MACHINE=COMMANDS

##

## The COMMANDS section may have other options added to it.

##

## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

desperadochn  ALL=(root)        /usr/sbin/useradd

试一下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

[[email protected] ~]# su - desperadochn

上一次登录:六 4月 30 03:30:43 CST 2016pts/1 

[[email protected] ~]$ sudo -l

匹配此主机上 desperadochn 的默认条目:

    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",

    env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

 

用户 desperadochn 可以在该主机上运行以下命令:

    (root) /usr/sbin/useradd

[[email protected] ~]$ useradd xxx

-bash: /usr/sbin/useradd: 权限不够

[[email protected] ~]$ sudo  /usr/sbin/useradd baibudonghei

[[email protected] ~]$ id baibudonghei

uid=1003(baibudonghei) gid=1003(baibudonghei) 组=1003(baibudonghei)

    • 绝对在任何时候不要将sudosetUidsetGid权限赋予工具型命令如vimvi
    • sudu权限设置时最好带上命令详细参数
    •  
时间: 2024-08-27 06:10:43

inux权限管理(1)的相关文章

Oracle 表空间和用户权限管理

一. 表空间 Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构指的是构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系. 表空间是数据库逻辑结构的一个重要组件. 表空间可以存放各种应用对象,如表.索引等. 而每一个表空间由一个或多个数据文件组成. 1. 表空间的分类 表空间可分为3类: 永久性表空间:一般保存表.上天.过程和索引等数据.system.sysaux.users.example表空间是默认安装的. 临时性表空间:只用于保存

linux文件权限管理与ACL访问控制列表

一.文件属性 1.文件属性: 文件属性操作 chown : change owner  ,设置文件所有者 chgrp : change group  ,设置文件的属组 文件属主修改: chown 格式:chown [OPTION]- [OWNER][:[GROUP]] FILE- 用法: OWNER OWNER:GROUPNAME    (同时修改属主.属组) :GROUPNAME                (默认属主,修改属组) ( 命令中的冒号可用.替换:) chown  –refere

mysql的权限管理

mysql的权限管理1.授权的基本原则   只授予满足要求的最小权限,但要注意使用户能够授权给别的用户(with grant option)   对用户设置登录的主机限制   删除没有密码的用户   满足密码的复杂度,设置较为复杂的密码   定期检查用户的权限,适当收回不需要的权限   2.给用户授权  mysql> grant all on *.* to 'root'@'10.0.5.150' identified by 'aixocm';  mysql> flush privileges;

Oracle权限管理详解

转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊用户public或角色,如果授予一个权限给特殊用户"Public"(用户public是oracle预定义的,每个用户享有这个用户享有的权限),那么就意味作将该权限授予了该数据库的所有用户.对管理权限而言,角色是一个工具,权限能够被授予给一个角色,角色也能被授予给另一个角

浅析Linux系统下用户与权限管理

Linux作为一种多用户多任务操作系统,在日常的使用中不可避免地要划分出一个角色的概念来管理和使用计算机,这个角色与每一个计算机使用者关联,在Linux中称这种角色为用户.而在每一个用户使用计算机的过程中,又必然存在对有限计算机资源使用的限制性,那么操作系统就必须提供一种途径来保证每个用户独立.合理的使用计算机. 一.用户和用户组管理   (一)用户及用户组相关基本概念  用户:泛指计算机的使用者.用计算机可识别的用户ID(UID,user id)标识. 用户组:用户容器,用来将多个用户合并为一

centos用户权限管理

进程是以其发起者的身份运行的,它对文件的访问权限,取决于此进程的用户的权限.在linux操作系统启动的过程中,为了能够让后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,而这类用户从不需要登录系统,仅让其他进程以他的身份运行,从而仅能获取普通权限的用户.为此这部分用户称系统用户.同时用户与组密不可分.进程的运行是以它的属主(又称,发起者)来访问的.它能访问资源的权限取决于发起者对某个资源的访问权限.下面是从用户和授权两个角度来讲解用户授权管理. 用户管理 用户按类别分管理员

实现业务系统中的用户权限管理--实现篇

在设计篇中,我们已经为大家阐述了有关权限管理系统的数据库设计,在本篇中,我们将重点放在其实现代码部分.为了让你能够更直接更有效的看到全部动作的代码,我们使用"动作分解列表"的方式来陈述每个动作以及相关资源. 实现权限管理功能的动作 动作分解 动作名 相关表名 操作集类型 (S,U,I,D,SQL) 表单 模组 字符资源 是否分页? 返回提示? 权限检测 权限初始化安装 setup 无 无 无 setup setupok 否 否 否 显示添加管理组界面 addnewgroup 无 无 a

RBAC权限管理

RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限. 这样,就构造成“用户-角色-权限”的授权模型.在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系.(如下图) 角色是什么?可以理解为一定数量的权限的集合,权限的载体.例如:一个论坛系统,“超级管理员”.“版主”都是角色.版主可管理版内的帖子.可管理版内的用户等,这些是权限.要给某个用户授予这些权限,不需要直接

Mongodb增加权限管理

 前言: 随着列式存储理念的成熟,越来越多的开发者开始接纳mongodb,hbase这类大储存的分布式列式数据库.特别是mongodb的这种快速搭建,快速使用特点,使其得到更多人的青睐.本人主要通过官网说明针对mongodb权限配置做一个测试与实践. step1:无验证启动mongod服务 mongod --port 27017 --dbpath /data/db1 step2:客户端mongo无密码连接并设置超级用户(用于admin登录) mongo --port 27017 use admi