Linux 用户身份和文件权限

用户身份与文件权限

用户身份与能力:
    Linux管理员之所以是root,不是因为它的名字,而是因为该用户的身         份号码是UID(user IDentification)的数值是0,在liunx中UID相当      于我们的身份证号码一样具有唯一性,因此可通过用户的UID的值来判断       用户身份。在RHEL7系统中,用户身份有以下这些:

       系统管理员UID为0:系统的管理员用户

       系统用户UID为1~999:liunx系统为了避免某个服务程序出现漏洞            被黑,而默认服务程序会有独立的系统用户负责运行,控制了被破坏              的范围

       普通用户UID从1000开始:是由管理员创建的日常工作用户

useradd命令:
        用于创建新的用户,格式“useradd【选项】 用户名”
        默认的用户家目录是被存放在/home目录中
        默认的解释器就是/bin/bash
        默认会创建一个与该用户同名的基本用户组

        参数:
        -d 指定用户的家目录(默认为/home/username)
        -e 账户的到期时间,格式为:YYYY-MM-DD
        -u 指定该用户的默认UID
        -g 指定一个初始的用户基本组(必须已经存在)
        -G 指定一个或多个扩展用户组
        -N 不创建与用户同名的基本用户组
        -s 指定该用户的默认Shell解释器
    例如:
    useradd -d /home/liunx -u 8888 -s /sbin/nologin user1
    id user1
    //注意使用的是/sbin/nologin这是表示该用户不能登录到系统中
    //::/sbin/nologin也是终端解释器中的一员

groupadd命令: 
    groupadd创建用户组 格式为:groupadd [选项] 群组名
    例如:创建一个用户组ronny
    groupadd ronny

usermod命令:
    usermod修改用户属性 格式为:usermod [选项] 用户名
    用户信息保存在/etc/passwd文件中
    vim可以修改其中的用户参数项目,
    usermod修改已经创建的用户信息,UID、基本/扩展用户组、默认终端

        参数:
        -c 填写用户账户的备注信息
        -d -m 参数-m与-d连用,重新指定用户的家目录并自动把旧             的数据转过去
        -e 账户的到期时间 ,格式为YYYY-MM-DD
        -g 更变所属用户组
        -G 更变扩张用户组
        -L 设定用户禁止登录系统
        -U 解锁用户,允许登录
        -s 变更默认终端
        -u 修改用户的UID

    例如:
    查看用户信息
    id user1
    然后将用户user1加入到root用户组中,这样扩展组列表则会
    出现root用户组的字样,而基本组不受影响
    例如:
    usermod -G user1
    id user1
    在加入-u参数修改用户的UID号码值。
    例如:
    usermod -u 10000 user1
    id user1

passwd命令:
    用于修改用户的密码、过期时间、认证信息等
    格式为:passwd【选项】【用户名】

    普通用户只能使用它来修改密码,
    root可以修改其他所有人密码
    root管理员修改他人或者是自己的密码不需要验证旧密码

    参数:
    -l 锁定用户,禁止登录
    -u 解锁,允许登录
    --stdin 允许通过标准输入修改用户的密码
    例如:echo "newpasswd" | passwd --stdin username
    -d 是该用户可用空密码登录系统
    -e 强制用户在下次登录是修改密码
    -S 显示用户的密码是否被锁定,已经密码所使用的加密算法名称

例如:
    passwd 
    //下面输入你的密码
    //确认密码
    passwd username
    //修改用户的密码
    //再次确认密码


    //禁止某个用户登录系统
    passwd -l username
    //查看是否锁定
    passwd -S username
    //解锁
    passwd -u username
    passwd -S username

userdel命令:
    用于删除用户,格式"userdel[选项] 用户名"

    参数:
    -f 强制删除用户
    -r 同是删除用户和用户家目录

    例如:
    id username
    userdel -r username
    id username

文件权限与归属:
-:普通文件
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
p:管道文件

目录文件的权限:
r:能够读取目录内文件的列表
w:能够在目录内新增、删除、重命名文件
x:能够进入该目录
文件读写执行权限简写为:rwx(数字表示:4,2,1)
例如:
764:rwxrw-r--
642: rw--w--wx
153: --xr-x-wx

文件信息实例:
ls -l install.log
-rw-r--r-- 1 root root 34298 04-02 00:23 install.log
开头的-:文件类型(这里是普通文件)
rw-r--r--:访问权限(所有者读写,所属组读,其他人读)
第一个root:所有者
第二个root:所属组
34298:占用磁盘大小
04-02 00:23:修改时间
install.log:文件名称

文件的特殊权限:
Set UID
SUID():可以让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的 二进制程序有效)
所有的用户可以执行passwd修改自己的密码,而用户的密码保存在/etc/shadow
中。你会发小/etc/shadow的权限为000,表示只有root能查看,但是使用 passwd命令是如果加上SUID特殊权限是,就可以让普通用户临时获得所有者的身 份,把变更密码的信息些人到shadow文件中
如果原先权限位没有x执行权限,那么赋予特殊权限后变成大写的S
例如:
ls -l /etc/shadow
//可以看到为-r——–
ls -l /bin/passwd
//-rwSr-xr-x

SGID:
1.让执行者有所属组的权限(仅对拥有执行权限的二进制程序有效)
2.在某个目录中创建的文件自动继承该目录的用户组(只针对目录)

假设一个文件权限为cr--r-----
这里除了root和属于system组的成员外,其他人都没有读取该文件的权限

当我们查看系统进程状态的ps命令文件上增加SGID特殊权限位时:
ps命令文件属性信息:
-r-xr-Sr-x
这样,由于ps命令被增加了SGID特殊权限位,所以当用户执行该命令时,
也获取到了system用户组的权限,可以读取设备文件了


每个文件都有其归属的所有者和所属组,当创建或者是传送一个文件后
这个文件就会自动归属于执行这个操作的用户(即该用户是文件的所有者)
我们想要多个人都能读取到这个文件,那么可以在共享目录后,设置SGID
特殊权限位。这样任何人创建的任何文件都属于该目录的所属组,不在是自
己的基本用户组
例如:
cd /tmp
mkdir testdir
ls -ald testdir/
drwxr-xr-x 2 root root 6 
chmod -Rf 777 testdir/(改变权限任何人能读能写能执行)
chmod -Rf g+s testdir/(添加特殊权限)
ls -ald testdir/
drwxrwsrwx

测试:
su - username
cd /tmp/testdir
echo "linux is my life!" > test
ls -al test
-rw-rw-r--

chmod能够设置文件或者目录的权限 格式:chmod [参数] 权限 文件或者目录名
例如:
ls -al test
-rw-rw-r--
chmod 760 test
ls -l test
-rwxrw----

chown能够设置文件或者目录的所有者和所属组
格式:chown【参数】 所有者:所属组 文件或者目录名

chmod和chown加上参数[-R]表示递归操作,对目录内所有的文件修改
例如:
ls -l test
-rwxrw---- username root 
chown root:bin test
ls -l test
-rwxrw---- root     bin 


SBIT:能够确保用户只能删除自己的文件,而不能删除其他用户的文件
当设置了SBIT就只能被所有者操作了
当目录设置为SBIT特殊权限后,文件的其他人权限部分的x就会被替换为t或者是T     原本有x执行权限,则会写成t
原本没有x执行权限,就会写成T
例如:
su - username
ls -ald /tmp
cd /tmp
ls -ald
echo "Welcome to linux" > test
chmod 777 test
ls -al test

//现在尝试删除
su - user1
cd /tmp
rm -f test
//提示说不能被删除

如果要对其他目录设置SBIT权限,用chmod就可以了
对应参数o+t代表设置SBIT权限:
exit
cd ~
mkdir linux
chmod -R o+t linux/
ls -ld linux/
drwxr-xr-t 

//补充
4为SUID
2为SGID
1为SBIT
操作:
数字操作:
cd /tmp
touch test
chmod 4755 test//加入SUID
chmod 6755 test//加入SUID和SGID
chmod 1755 test //加入SBIT
字母操作:
SUID:u+s
SGID:g+s
SBIT:o+t
chmod g+s,o+t test;//加上SGID和SBIT

猜你喜欢

转载自blog.csdn.net/lv_yong/article/details/79175274