User Tools

Site Tools


aix:aix_sudo

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
aix:aix_sudo [2021/06/09 00:15]
manu
aix:aix_sudo [2023/08/17 01:02] (current)
manu
Line 1: Line 1:
 ====== SUDO options ====== ====== SUDO options ======
 +
 +Use **sudo -l** to list your privileges
 +
 +Use visudo instead of vi to edit a sudoers file
 +  # visudo -f /​etc/​sudoers.d/​oracle_priv
 +  ​
 +Check syntax on a file:
 +<cli prompt='#'>​
 +root@SERVER1:/​ # visudo -cf /​etc/​sudoers
 +>>>​ sudoers file: syntax error, line 95 <<<​
 +parse error in /​etc/​sudoers near line 95
 +</​cli>​
 +
 +<cli prompt='#'>​
 +root@SERVER2:/​ # visudo -cf /​etc/​sudoers
 +/​etc/​sudoers:​ parsed OK
 +/​etc/​sudoers.d/​generic:​ parsed OK
 +/​etc/​sudoers.d/​hosts-system:​ parsed OK
 +</​cli>​
  
 If you want to use LDAP integrating with sudo, install sudo_ids from RPM package, add also the option into /​etc/​netsvc.conf If you want to use LDAP integrating with sudo, install sudo_ids from RPM package, add also the option into /​etc/​netsvc.conf
 <cli prompt='>'>​ <cli prompt='>'>​
-root@SERVER:/:​=>​tail -3 /​etc/​netsvc.conf+root@SERVER:/:​=>​ tail -3 /​etc/​netsvc.conf
 hosts=local4,​bind4 hosts=local4,​bind4
 sudoers=ldap ​ sudoers=ldap ​
 </​cli>​ </​cli>​
  
 +Here are options from /​etc/​sudoers or /​etc/​sudoers.d/​*
 <​code>​ <​code>​
 ## ##
Line 58: Line 78:
 </​code>​ </​code>​
  
-Example to rotate ​mailbox+Example to rotate ​sulog
 <cli> <cli>
-/var/spool/mail/​* ​+/var/log/sudo.log ​
 { {
            ​monthly            ​monthly
            ​rotate 2            ​rotate 2
-           ​olddir /​var/​log/​news/​old 
            ​missingok            ​missingok
 } }
 </​cli>​ </​cli>​
 +
 +For full debug sudo:
 +Create a file **/​etc/​sudo.conf**
 +<cli prompt='#'>​
 +[root@aix01]/​root#​ cat /​etc/​sudo.conf
 +Debug sudo /​var/​log/​sudo_debug all@debug
 +</​cli>​
 +
 +Create the log file **/​var/​log/​sudo_debug**
 +
 +And test...very verbose !!!
  
 ===== AIX ldap configuration ===== ===== AIX ldap configuration =====
Line 79: Line 109:
  
 If you have a NIM server, the easiest way is to install them with nimclient: If you have a NIM server, the easiest way is to install them with nimclient:
- +<cli> 
-nimclient -o cust -a lpp_source="​lppsource_71-04-01" ​ -a filesets="​gskta.rte gsksa.rte"​ -a accept_licenses=yes+nimclient -o cust -a lpp_source="​lppsource_71-04-01" ​ -a filesets="​gskta.rte gsksa.rte"​ -a accept_licenses=yes 
 +</​cli>​
  
 In this post we will assume the packages are downloaded in /​mnt/​LDAP/​6.4. It’s possible to install everything in one command. In this post we will assume the packages are downloaded in /​mnt/​LDAP/​6.4. It’s possible to install everything in one command.
- +<cli> 
- ​installp -agcXYd /​mnt/​LDAP/​6.4 all+installp -agcXYd /​mnt/​LDAP/​6.4 all 
 +</​cli>​
  
 At the end of the installation,​ you should have this kind of installation summary: At the end of the installation,​ you should have this kind of installation summary:
 +<cli>
 Installation Summary Installation Summary
 -------------------- --------------------
Line 103: Line 135:
 idsldap.clt_max_crypto64bit 6.4.0.8 ​        ​USR ​        ​APPLY ​      ​SUCCESS idsldap.clt_max_crypto64bit 6.4.0.8 ​        ​USR ​        ​APPLY ​      ​SUCCESS
 idsldap.clt_max_crypto32bit 6.4.0.8 ​        ​USR ​        ​APPLY ​      ​SUCCESS idsldap.clt_max_crypto32bit 6.4.0.8 ​        ​USR ​        ​APPLY ​      ​SUCCESS
 +</​cli>​
  
 The next step is to register the license: The next step is to register the license:
 +<cli>
 /​mnt/​LDAP/​6.4/​license/​idsLicense -q /​mnt/​LDAP/​6.4/​license/​idsLicense -q
 /​mnt/​LDAP/​6.4/​license/​idsLicense -t && echo OK /​mnt/​LDAP/​6.4/​license/​idsLicense -t && echo OK
 +</​cli>​
  
 IBM Directory Server allows multiple versions to be installed on the same system. Some links are created in /usr/bin to point on the current version. IBM Directory Server allows multiple versions to be installed on the same system. Some links are created in /usr/bin to point on the current version.
 +<cli>
 ls -l /​usr/​bin/​idsldapadd ls -l /​usr/​bin/​idsldapadd
 lrwxrwxrwx ​   1 root     ​system ​          33 Feb 12 15:04 /​usr/​bin/​idsldapadd -> /​opt/​IBM/​ldap/​V6.4/​bin/​idsldapadd lrwxrwxrwx ​   1 root     ​system ​          33 Feb 12 15:04 /​usr/​bin/​idsldapadd -> /​opt/​IBM/​ldap/​V6.4/​bin/​idsldapadd
 +</​cli>​
  
 To change the version, we use the idslink binary. To change the version, we use the idslink binary.
  
 Link the 64bits LDAP binaries: Link the 64bits LDAP binaries:
 +<cli>
 /​opt/​IBM/​ldap/​6.4/​bin/​idslink -f -q -i -l 64 /​opt/​IBM/​ldap/​6.4/​bin/​idslink -f -q -i -l 64
 +</​cli>​
  
 Link the 32bits LDAP binaries: Link the 32bits LDAP binaries:
 +<cli>
 /​opt/​IBM/​ldap/​6.4/​bin/​idslink -f -q -i -l 32 /​opt/​IBM/​ldap/​6.4/​bin/​idslink -f -q -i -l 32
 +</​cli>​
  
 import CA certificate import CA certificate
Line 129: Line 166:
  
 Create the certificate directory: Create the certificate directory:
 +<cli>
 mkdir /​etc/​ldap/​certs mkdir /​etc/​ldap/​certs
 cd /​etc/​ldap/​certs cd /​etc/​ldap/​certs
 +</​cli>​
  
 The next step is to create a keystore database. It will store the Certificate Authority certificate. The next step is to create a keystore database. It will store the Certificate Authority certificate.
  
 It’s important to select a good password(not secretpass like in the example below :) ) It’s important to select a good password(not secretpass like in the example below :) )
 +<cli>
 gsk7cmd -keydb -create -db galerieslafayette.kdb -pw secretpass -type cms -stash gsk7cmd -keydb -create -db galerieslafayette.kdb -pw secretpass -type cms -stash
 +</​cli>​
  
 After that, you need to copy your CA certificate in /etc/ldap. Here the certificate file is named /​etc/​ldap/​cacert.pem and we label it “Enterprise CA”. After that, you need to copy your CA certificate in /etc/ldap. Here the certificate file is named /​etc/​ldap/​cacert.pem and we label it “Enterprise CA”.
 +<cli>
 gsk7cmd -cert -add -file /​etc/​ldap/​certs/​cacert.pem -db /​etc/​ldap/​certs/​cert.kdb -pw secretpass -label "​Enterprise CA" -format ascii gsk7cmd -cert -add -file /​etc/​ldap/​certs/​cacert.pem -db /​etc/​ldap/​certs/​cert.kdb -pw secretpass -label "​Enterprise CA" -format ascii
 +</​cli>​
  
 It’s easy to check if the import worked properly by listing the certificates stored in the database: It’s easy to check if the import worked properly by listing the certificates stored in the database:
 +<cli>
 gsk7cmd -cert -list -db /​etc/​ldap/​certs/​cert.kdb -pw secretpass gsk7cmd -cert -list -db /​etc/​ldap/​certs/​cert.kdb -pw secretpass
 +</​cli>​
  
 Certificates in database: /​etc/​ldap/​certs/​galerieslafayette.kdb Certificates in database: /​etc/​ldap/​certs/​galerieslafayette.kdb
 +<cli>
  ​Enterprise CA  ​Enterprise CA
  ​Entrust.net Global Secure Server Certification Authority  ​Entrust.net Global Secure Server Certification Authority
Line 170: Line 212:
  ​Thawte Premium Server CA  ​Thawte Premium Server CA
  ​Thawte Server CA  ​Thawte Server CA
 +</​cli>​
  
 Note: this step can be done only one time. You can copy the files on your others AIX systems. Note: this step can be done only one time. You can copy the files on your others AIX systems.
Line 175: Line 218:
  
 The initial LDAP configuration is done with the mksecldap command: The initial LDAP configuration is done with the mksecldap command:
 +<cli>
 mksecldap -c -h ldap01 -a "​uid=svc_ldap,​ou=Service,​dc=mydomain,​dc=inet"​ -p ldappass -S rfc2307aix -k /​etc/​ldap/​certs/​cert.kdb -w secretpass -j TLS -A ldap_auth mksecldap -c -h ldap01 -a "​uid=svc_ldap,​ou=Service,​dc=mydomain,​dc=inet"​ -p ldappass -S rfc2307aix -k /​etc/​ldap/​certs/​cert.kdb -w secretpass -j TLS -A ldap_auth
 +</​cli>​
  
 Here a description of the differents options: Here a description of the differents options:
 +<​code>​
     -h: the ldap server hostname     -h: the ldap server hostname
     -a: the bind user     -a: the bind user
Line 188: Line 232:
     -j: use TLS for the ldap connection     -j: use TLS for the ldap connection
     -A: Here we specify than user’s authentication is done on the LDAP server with the value ldap_auth.     -A: Here we specify than user’s authentication is done on the LDAP server with the value ldap_auth.
 +</​code>​
  
 The command mksecldap start the the ldap client process automatically. The command mksecldap start the the ldap client process automatically.
  
 You can check if everything is working with the ls-secldapclntd:​ You can check if everything is working with the ls-secldapclntd:​
- +<cli> 
-ls-secldapclntd+ls-secldapclntd
 ldapservers=ldap01 ldapservers=ldap01
 current ldapserver=ldap01 current ldapserver=ldap01
Line 217: Line 262:
 userobjectclass=posixaccount,​account,​shadowaccount userobjectclass=posixaccount,​account,​shadowaccount
 groupobjectclass=posixgroup groupobjectclass=posixgroup
 +</​cli>​
  
 further configuration further configuration
  
-This configuration is a basic one. It’s better to modify the configuration file /​etc/​security/​ldap/​ldap.cfg to better match your environment.+This configuration is a basic one. It’s better to modify the configuration file **/​etc/​security/​ldap/​ldap.cfg** to better match your environment.
  
 Here an example of a more complex configuration:​ Here an example of a more complex configuration:​
 +<cli>
 ldapservers:​ldap01,​ldap02 ldapservers:​ldap01,​ldap02
 binddn:​uid=svc_ldap,​ou=Service,​dc=mydomain,​dc=inet binddn:​uid=svc_ldap,​ou=Service,​dc=mydomain,​dc=inet
Line 243: Line 289:
 serverschematype:​rfc2307 serverschematype:​rfc2307
 nsorder: local,bind nsorder: local,bind
 +</​cli>​
  
 Most of the options are self-explanatory. Most of the options are self-explanatory.
Line 248: Line 295:
 userbasedn is pretty interesting because you can specify a filter after the base dn. The separator is ??. Here we added userbasedn is pretty interesting because you can specify a filter after the base dn. The separator is ??. Here we added
  
-(memberOf=cn=admin,​ou=Teams,​ou=Groups,​dc=mydomain,​dc=inet)+  ​(memberOf=cn=admin,​ou=Teams,​ou=Groups,​dc=mydomain,​dc=inet)
  
 So, in this example, to have a user visible on this system, he needs to be part of the cn=admin,​ou=Teams,​ou=Groups,​dc=mydomain,​dc=inet group. You can build more complex filters, it only need to be a valid ldap filter expression. So, in this example, to have a user visible on this system, he needs to be part of the cn=admin,​ou=Teams,​ou=Groups,​dc=mydomain,​dc=inet group. You can build more complex filters, it only need to be a valid ldap filter expression.
Line 254: Line 301:
 After modifying the configuration file, you need to restart the LDAP client service: After modifying the configuration file, you need to restart the LDAP client service:
  
-restart-secldapclntd+  ​restart-secldapclntd
  
 System configuration System configuration
Line 260: Line 307:
 LDAP is configured on the system but AIX is not using it for user management by default. You need to enable it with the chsec command: LDAP is configured on the system but AIX is not using it for user management by default. You need to enable it with the chsec command:
  
-chsec -f /​etc/​security/​user -s default -a SYSTEM="​files or LDAP"+  ​chsec -f /​etc/​security/​user -s default -a SYSTEM="​files or LDAP"
  
 In some environments,​ you will have an error saying that LDAP is not a valid SYSTEM option. It’s because the file /​etc/​methods.cfg doesn’t contains this entry: In some environments,​ you will have an error saying that LDAP is not a valid SYSTEM option. It’s because the file /​etc/​methods.cfg doesn’t contains this entry:
 +<cli>
 LDAP: LDAP:
         program = /​usr/​lib/​security/​LDAP         program = /​usr/​lib/​security/​LDAP
         program_64 =/​usr/​lib/​security/​LDAP64         program_64 =/​usr/​lib/​security/​LDAP64
 +</​cli>​
  
 You can add it manually. You can add it manually.
Line 272: Line 320:
 Another nice option added in AIX 6.1 is the possibility to automatically create the home directory at user’s login time. Another nice option added in AIX 6.1 is the possibility to automatically create the home directory at user’s login time.
  
-chsec -f /​etc/​security/​login.cfg -s usw -a mkhomeatlogin=true+  ​chsec -f /​etc/​security/​login.cfg -s usw -a mkhomeatlogin=true
  
-sudo configuration+  ​sudo configuration
  
-Since a few months, IBM provides a sudo package with IBM Directory Server ldap + ssl support. The package is named sudo_ids. The minimum version is 1.8.20.+Since a few months, IBM provides a sudo package with IBM Directory Server ldap + ssl support. The package is named **sudo_ids**. The minimum version is 1.8.20.
  
 If you installed yum on AIX(highly recommended),​ the installation is really easy: If you installed yum on AIX(highly recommended),​ the installation is really easy:
- +<cli> 
-yum install sudo_ids+yum install sudo_ids 
 +</​cli>​
  
 You can check your sudo version: You can check your sudo version:
- +<cli> 
-rpm -qi sudo_ids +rpm -qi sudo_ids
- +
- +
 Name : sudo_ids Name : sudo_ids
 Version : 1.8.20p2 Version : 1.8.20p2
Line 314: Line 361:
 links are created in /usr/lib for idsldap libraries (through idslink command links are created in /usr/lib for idsldap libraries (through idslink command
 provided by idsldap filesets) followed by "​updtvpkg"​ before installing the rpm. provided by idsldap filesets) followed by "​updtvpkg"​ before installing the rpm.
 +</​cli>​
  
 You can also check if the sudo binary were built with ldap support by running this command: You can also check if the sudo binary were built with ldap support by running this command:
- +<cli prompt='#'>​ 
-sudo -V|grep ldap+sudo -V|grep ldap
  ​Configure options: --prefix=/​opt/​freeware --sbindir=/​opt/​freeware/​sbin --mandir=/​opt/​freeware/​share/​man --docdir=/​opt/​freeware/​share/​doc/​sudo_ids-1.8.20p2 --with-logging=syslog --with-aixauth --with-logfac=auth --without-pam --with-env-editor --with-ignore-dot --with-tty-tickets --with-ldap --with-ldap-conf-file=/​etc/​sudo-ldap.conf  ​Configure options: --prefix=/​opt/​freeware --sbindir=/​opt/​freeware/​sbin --mandir=/​opt/​freeware/​share/​man --docdir=/​opt/​freeware/​share/​doc/​sudo_ids-1.8.20p2 --with-logging=syslog --with-aixauth --with-logfac=auth --without-pam --with-env-editor --with-ignore-dot --with-tty-tickets --with-ldap --with-ldap-conf-file=/​etc/​sudo-ldap.conf
 ldap.conf path: /​etc/​sudo-ldap.conf ldap.conf path: /​etc/​sudo-ldap.conf
 ldap.secret path: /​etc/​ldap.secret ldap.secret path: /​etc/​ldap.secret
 +</​cli>​
  
-It will also give you the place of the ldap configuration file for sudo. Here it’s /​etc/​sudo-ldap.conf.+It will also give you the place of the ldap configuration file for sudo. Here it’s ​**/​etc/​sudo-ldap.conf**.
  
 This configuration file is pretty simple to understand: This configuration file is pretty simple to understand:
 +<cli>
 host ldap01 ldap02 host ldap01 ldap02
 port 389 port 389
Line 337: Line 386:
 bind_timelimit 3 bind_timelimit 3
 timelimit 3 timelimit 3
 +</​cli>​
  
 It’s important to specify the good certificate database if you want to use TLS to contact the LDAP directory. It’s specified with the parameter tls_key. It’s important to specify the good certificate database if you want to use TLS to contact the LDAP directory. It’s specified with the parameter tls_key.
Line 344: Line 394:
 In production, it’s better to store the bind dn password in the /​etc/​ldap.secret file. In production, it’s better to store the bind dn password in the /​etc/​ldap.secret file.
  
-It’s also mandatory to modify the /​etc/​netsvc.conf file to allow sudo to use LDAP. +It’s also mandatory to modify the **/​etc/​netsvc.conf** file to allow sudo to use LDAP. 
 +<cli>
 sudoers = files, ldap sudoers = files, ldap
 +</​cli>​
  
 +Example of syntax for /​etc/​sudoers file 
 +  %wheel ALL=(ALL) NOPASSWD: ALL 
 +  user01 ALL=NOPASSWD:/​usr/​sbin/​lsdev 
 +  ​
aix/aix_sudo.1623190510.txt.gz · Last modified: 2021/06/09 00:15 by manu