Linux系統SUDO的使用定義及設定
Posted mycoffee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系統SUDO的使用定義及設定相关的知识,希望对你有一定的参考价值。
Linux系統SUDO的使用定義及設定
什麼是sudo?
Sudo是可以讓某個用户不需要擁有(管理員)的賬號密碼,可以執行管理員的權限的。
作為管理員可以指派某些用户可以執行某些 特定命令。
Sudo的特點
它的特性主要有这样幾點:
Sudo能够限制用户只在某台主機上運行某些命令
Sudo提供了豐富的日志,詳细地記錄了每個用户幹了什麼。
它能够將日記傳到中心主機或者日記服務器
Sudo使用時間戳文件來執行類似的“檢票”系统。當用户調用 sudo并且输入它的密碼時,
用户获得了一张存活期为5分钟的票 (这个值可以在编译的时候改变)
Sudo的配置文件是sudoers文件,它允许系统管理员集中的管理 用户的使用权限和使用的主机。
它所存放的位置默认是在 /etc/sudoers,属性为0440
##chmod 440 /etc/sudoers.d/sudo_user
##把這個文本檔的權限設定為440,是比較安全的動作。是只有(uid,gid==>r)權限
配置文件:/etc/sudoers (sudo的配置文件定义很严格权 限为400)
语法 who which_host=(whom) command
user host=(runas) command
编辑命令visudo
or
visudo -f /etc/sudoers.d/sudo_user
sudo 授權使用的方法。
ls -l /usr/bin/sudo
sudo –i –u [centos | fedora | gentoo | etc...] 切换身份
##這個是要有授權之下才可以使用的(切換身份)。
##而平時的"su centos"方式切換身份,只要有密碼就可以切換身份。
sudo [-u user] COMMAND
-V 显示版本信息等配置信息
-u user 默认为root
-l,ll 列出用户在主机上可用的和被禁止的命令
EX:sudo -l -u centos ==>這是查看用戶centos,有什麼在sudo的授權權限。
EX:sudo -l ==>這是default查看root,有什麼授權權限。因為現在是用root來工作
or
或者用gentoo登入後,使用sudo -level
EX:sudo -l ==>這是default就是查看gentoo的sudo,有什麼授權權限。
EX:sudo -ll ==>就是detail,只是多了一些細分的項目。
##這個有一個好處,是在當自己登入系時,來查看一下自己有什麼sudo權限可以使用。
-v 再延长密码有效期限5分钟,更新时间戳
EX:sudo -v ==>以gentoo為一個例子,只要"sudo -v"一下,就會即時(擦新一下)登入時間,
那麼,有效期限5分钟,就會以現在再開始計算。
-k 清除时间戳(1970-01-01),下次需要重新输密码
-K 与-k类似,还要删除时间戳文件
EX:用戶在登出時,先用這個"sudo -K"一下,就可以把自己的時間戳記錄清除。
注釋:時間戳的位置在"/var/run/sudo/ts"裡面,用戶不能看
-b 在后台执行指令
##這個"-b"的使用是說,所執行的cmd,不會在當前的terminal上查看效果显示,但實際上面是在後台裡面工作。
##如果是一些在執行時間上面,是比較長。可以使用這個"-b,後台工作",這樣可以接著做其他項目。
-p 改变询问密码的提示符号
示例:-p ”password on %h for user %p:"
##在使用sudo時,系統會有一個提示句,要求用戶輸入,就是這個提示標句語。
EX: sudo -p "”password on %h for user %p:" cat /etc/shadow
##這是結果效果: "password on centos7cn for user centos:"
EX: sudo -p "”password on $(date) for user %p:" cat /etc/sdadow
##這是結果效果: "password on 2018年 11月 10日 星期六 15:53:53 CST for user centos:"
##sudoedit ==>"/usr/bin/sudoedit" ==>這是一個給修改權限的功能,其效果等同root。
EX:fedora ALL=(ALL) sudoedit
##:在fedora登入之後。
EX:sudoedit /etc/sudoers ==>這就能修改裡面的權限和使用
注釋:在使用visudo時,先在"/etc/profile.d/xxxxx"建立一個文本文檔,加入下面一包及即行執行一下就可以。
*** >>export EDITOR=vim ##這個是想把vim裡面的特性效果,調出來使用。
>>vim /etc/profile.d/"這是一個enrironment文" ##把這一句加入去裡面,再执行一下就可以,可以建立一個新文本(如果之前,己有設定environment本文,可以加入去。)
=================== =================== ===================
>>用戶 登入主機=(代表用戶) 命令
##user和runas的名字使用方 ==> username (EX:centos)
#uid (EX:#1001)
%group_name (EX:%fedora)
%#gid (EX:%#980)
##別名使用和設定
##user==User_Alias XXXX || host==Host_Alias || runas==Runas_Alias || command==Cmnd_Alias
>>User_Alias MBA1=centos,fedora,suse,redhat,debian,gentoo
>>Cmnd_Alias CMD1=/usr/bin/mount,/usr/bin/yum,usr/sbin/fdisk
##之後就可以用來調用。
>>MBA1 ALL=(root) CMD1 ==>這使用別名,是方便使用和查看和修改
##Example:設定方式(使用別名方式)
==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
User_Alias SYSADER=fedora,centos,%super ##這個是一次設定多個用戶或者組的別名使用方法。
User_Alias DISKADER=coffee ##這個是給一個用戶
Host_Alias SERS=www.mycoffee.com,172.16.0.0/24 ##這個設定主機的位置
Runas_Alias OP=root ##這個是授權出來的用戶
Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod ##這個是要使用的命令語和位置,使用(,)來分隔
Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk ##這個是同上
-- -- -- -- -- -- -- -- -- -- -- --
SYSADER SERS= SYDCMD,DSKCMD ==>這一個在runas是留空白,就代表是用default to root
DISKADER SERS=(OP) DSKCMD ==>這個就是全部用上了別名的效果
=== === === === === === === === === === === === === === ===
==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
User_Alias ADMINUSER = adminuser1,adminuser2
Cmnd_Alias ADMINCMD = /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd [a-zA-Z]*, !/usr/bin/passwd root
##在這一條cmd裡面的最後一個,是要注意,是說明只是(root)是不能修改。
-- -- -- -- -- -- -- -- -- -- -- --
ADMINUSER ALL=(root) NOPASSWD:ADMINCMD, PASSWD:/usr/sbin/userdel
##這一行在最後面是說明,在使用"userdel"用要密碼登入才可以。
=== === === === === === === === === === === === === === ===
==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Defaults:gentoo runas_default=fedora ==>這是加一個default設定在用戶gentoo裡面。
gentoo ALL=(fedora,centos) ALL ==>這個是說在用戶gentoo登入使用時,用sudo時使用fedora是不用加上[-u user]
EX:sudo mount /dev/sr0 /mnt/ ##這個就是default是用fedora的權限
EX:sudo -u centos yum update ##而使用centos的權限就要用[-u user]指定使用。
=== === === === === === === === === === === === === === ===
==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
gentoo 192.168.175.136,192.168.175.138=(root) /usr/sbin/,!/usr/sbin/useradd
##這裡有兩個host的IP位置,可以使用sudo的這一行的(權限分配/授權)
##command(第一個): 是說在這"/usr/sbin/"裡面的所有cmd都可以使用
##command(第二個): 是說在"!/usr/sbin/useradd"這一個command是不能用
=== === === === === === === === === === === === === === ===
==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
gentoo ALL=(ALL) /bin/cat /var/log/messages* ##這是不能使用的方式。
##這是漏洞所以不要用這個方式來授權。(問題在結尾,不要加*號,這是不小心的地方。)
==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#Example:
>>%wheel ALL=(ALL) NOPASSWD:ALL ==>這一個的"NOPASSWD"加在command的前面,就是說,這(用戶或組)使用者,
不需要輸入密碼,都可以執行。這個在(腳本script)裡面使用就會發揮作用。
==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#Example
>>visudo or visudo -f /etc/sudoers.d/sudo_user
>>fedora 192.168.11.11=(root) /bin/mount /dev/sr0 /mnt/ ==>這個是指定了主機的使用
or
>>fedora ALL=(root) /bin/mount /dev/sr0 /mnt/ ==>這個是任何主機都可以使用
==> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#group ID方式的授權機制。
##%wheel ALL=(ALL) ALL ==>這一行是說,當任何一個用戶是這個(group),就會有所有權限的工作。
>>usermod -aG "wheel" fedora ==>在sudoers裡面的group名是用"wheel",所以現在是加這個的group名資。
>>sudo .... ==>這時就可以有root的全部使用權。
>>gpasswd -d fedora wheel ==>在這個group裡面的用戶清除出來。
##注釋:由於"wheel"這個組的權限過大,即是全部的權,所不要隨意把用戶加入這個組。及最在沒有用時把這個組前面加上"#、不生效"會好一點。
#在/etc/sudoers裡面有一行是root ALL=(ALL) ALL
##這一行的意思是有一個特別的用法在裡面。
##當root賬戶的權限被移到,普通用戶時,就可以用sudo的功能把/etc/passwd的資料修改回去。
>>sudo -u coffee vi /etc/passwd ==>現在用戶coffee是有權限的用戶,引用回這個用戶去修改資料。
==>這樣root就可以通過這方法,在/etc/passwd改回自己的權限。
#Example: (用戶 和 用戶)之間的使用權(交換或授權)的使用方法。
例如: 用戶"centos"需要使用,用戶"fedora"的用戶權(身份)工作。
>> centos ALL=(fedora) ALL ==>這樣centos可以用fedora的所有使用權的身份工作,即是用fedora的身份工作
#Example: visudo or visudo -f /etc/sudoers.d/sudo_user 在這兩位置裡面,其中之一只要是加入一行
>> centos ALL=(ALL) ALL ==>centos ==>這時centos就會是root的權限,所以設置用戶時要小心。
以上是关于Linux系統SUDO的使用定義及設定的主要内容,如果未能解决你的问题,请参考以下文章